JavaScript的角色巨变和Web技术的发展
曾经JavaScript是职业程序员看不上眼的脚本语言,如今只有高级程序员才能驾驭它。
JavaScript性质和地位的天翻地覆,正是Web技术飞速变化的印证。
最初职业程序员轻视JavaScript,认为它和C、Java这些真正的开发语言相比只是脚本小毛孩(Script Kids)的玩具。那时候,互联网才刚刚从单纯提供静态信息发展到和用户之间有一些互动。JavaScript做的只是跑龙套的角色,检查用户输入,向用户提示信息,做一些四则运算;或者真的是用来做玩具,显示浮动图片,变幻字体大小颜色,丰富鼠标效果。JavaScript在大家的印象里,就是一门语法属于C风格,对格式不那么严格,所能做的只是增加一下页面和用户的互动的辅助性语言。
后来,Web开发随着ASP、Java、PHP的发展大行其道,但是开发还主要集中在服务器端,简单地说,就是业务逻辑加上操作数据库。JavaScript的作用也得到发展,为了模拟传统的客户端应用程序,提供更丰富的功能和友好的操作,比如模拟多级菜单、目录树、多标签页表格,JavaScript操作DOM API成为必不可少的手段。客户端应用程序在功能上渐渐没有优势,安装、升级和维护的劣势使得它和Web应用此消彼长。
进一步有三个因素使得Web应用成为主流。
其一是技术性的原因,即Ajax的发明和普及,大大提高了Web应用的用户体验,因为它不仅消除了提交页面——空白——重新显示这样和客户端应用相比烦人的过程,而且极大地丰富了用户和系统之间互动的可能性——页面不再是一个整体,每一个部分都可以显示独立的信息,跟随用户的鼠标键盘的各种输入各自变化更新。
其二是设计上的原因。传统的客户端应用程序的界面像代码一样符合一定的规则,菜单栏、工具栏、主界面,用户的操作也限定在文本框、单选框、下拉框等一套标准控件中。应用程序的界面似乎就应该这样标准化,就像电脑就应该是有一台主机、一个显示器、一个键盘。这样一种理念部分地是因为程序员不是设计师,和漂亮的界面相比,他们更关心代码的正确和系统的性能;设计师可以用绘图软件画出与众不同的好看设计,但是一方面界面是和功能一道开发的,设计师没有相应的知识和技能将他们的设计结合到程序中,另一方面无论是VB、Dephi还是VC,要想将一套想象出的显示和用户操作编写成新的控件,都是很困难的事。Web开发的情况截然不同。页面和后台程序天然地分开,和前台程序只要设计良好也能完全分离,设计师只需掌握HTML和CSS就可以用各种页面设计软件设计出程序员能够应用的界面。和上面相对应的另一方面,使用HTML+CSS+JavaScript创建一个直观好用的“控件”也比较容易。于是,漂亮精致的界面和方便友好的用户体验如雨后春笋一般涌出。Web应用在界面上迅速超过了客户端程序,在外观上取得了优势。有一段时间,开发Web系统时模仿经典的客户端程序的界面(菜单栏、工具栏和主界面等)很普遍,而现在的桌面应用程序,往往学习的是Web应用美观的界面和简洁的操作。学生已经超越了老师。
第三个原因既是技术的,也是文化的。一个Web应用的前端,包括HTML、CSS和JavaScript,都是开放的。任何一个有兴趣的人,都可以查看、研究、学习、测试和编辑,这一点与传统的代码不可见的客户端程序有巨大区别。互联网开放的文化也和开源的精神相得益彰。层出不穷的界面设计和编程理念可以在互联网这个巨大的平台上展现,相互竞争。经过实践证明的优胜者又迅速被学习传播。这样一个良性的竞争平台,使得Web技术的发展速度大大超过桌面应用程序。
正是在这样一个大背景下,JavaScript的潜力得到充分发挥。大家发现,它天生适合用来做Web的前端开发,而这又是Web应用中日益复杂和重要的部分。JavaScript变成构建丰富的用户界面,实现精致的功能的支柱。因为任务大大增加,JavaScript脚本的长度也迅速增长。提供公共功能,展示最佳实践以至于设置整个应用框架的脚本库大量涌现,日新月异。Prototype、jQuery、dojo、YUI、Knockout、AngularJS……让人眼花缭乱。JavaScript动态语言的本质和采用原型的对象机制,使得完成同样的功能,所需的代码数量比静态的基于类继承的语言,如Java,少很多。但是缺乏编辑时语法检查,浏览器这样一个不友好的开发环境,使得用JavaScript开发复杂的功能容易出错,或者换句话说,需要程序员更加细致。JavaScript语言本身的特性(函数是第一类对象,匿名函数的声明,对象的原义定义),既提供了写出精致优雅的代码的可能性,各种不同的实现方式和风格又需要开发者对语言有更好的掌握和清晰的思路。
终于,JavaScript演变成一门主流语言,充满吸引力和挑战性,并且只有高手才能充分驾驭。
JavaScript的角色巨变和Web技术的发展的更多相关文章
- Web技术的发展 网络发展简介(三)
在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...
- 从故纸堆里,回顾下Web技术的发展历程
通过对比这些年的计算机图书来让大家感受下前些年Web技术的发展历程. Web开发框架,目前是Spring Boot+JPA,我正好出过本书,从中大家能感受到现在的技术. <Spring Boot ...
- 【Web技术】 275- 理解 WebView
前言 了解webview的神秘之处.今日早读文章由@子非翻译分享. 正文从这开始-- 我们通常使用 Chrome, Firefox, Safari, Internet Explorer 和 Edge ...
- HTML5 Dashboard – 那些让你激动的 Web 技术
HTML5 Dashboard 是一个 Mozilla 推出的项目,里面展示了最前沿的 HTML5,CSS3,JavaScript 技术.每一项技术都有简洁,在线演示以及详细的文档链接.这些技术将成为 ...
- Soundslice – 美妙乐谱!Web 技术高大上的应用
Web 技术的不断发展让我们能够开发各种好玩的功能.这里给大家分享一个使用 HTML5 技术实现的在线乐谱,可以播放的哦,也可以选择一个片段进行循环播放.赶紧来体验一下:) 您可能感兴趣的相关文章 1 ...
- 用web技术开发出原生的App应用的体会(1)
本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...
- cct,web技术
基本信息 全国计算机等级考试二级教程——Web程序设计(2016年版)作 者:教育部考试中心 编出 版 社:高等教育出版社出版时间:20115-12-1 ISBN:9787040442991版 ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- 手机淘宝中的那些Web技术-使用了类似PhoneGap的实现
Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅 ...
随机推荐
- mysql安装与配置
想在个人电脑上安装mysql学习用.在此做下记录 步骤一: MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大 ...
- opengl奔溃问题
按照网上的教程编译成功,当时运行时老是奔溃(不弹出任何提示,窗口变灰色).遂更新了ATI的显卡驱动果然可以运行了,哈哈 http://support.amd.com/en-us/download/de ...
- 【调试】DLL EXE 调试技巧
0.随便说点 最近因为一些原因一直都没有更新博客,从今天开始要逐渐恢复了,也是对自己的鞭策. 1.本文目标 本文要说在有DLL 和 EXE源码的情况下调试DLL 和 EXE, 工具是VC++2010, ...
- Python面向对象3
一.内部类 内部类就是在类的内部定义的类,主要目的是为了更好的抽象现实世界. 二.魔术方法(构造函数和析构函数) #!usr/bin/python #coding:utf8 class Milo(): ...
- Python 统计文本中单词的个数
1.读文件,通过正则匹配 def statisticWord(): line_number = 0 words_dict = {} with open (r'D:\test\test.txt',enc ...
- C++学习之路--类的构建以及数据转换存储
注意理解下面的代码,数据的处理与转换. 头文件: #ifndef STACK_H #define STACK_H class Stack { struct Link { void* data; Lin ...
- SQL SERVER 2008 R2 SP3 发布
今晚上刚发现,微软很低调啊 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=44271 整合SP3的Express系列版本还没 ...
- [WebService]之JWS_1
创建JWS项目步骤: 1:创建接口 2:创建实现类 3:开启服务 1:编写接口 @WebService public interface IMyService { public int add(int ...
- openstack neutron网络主机节点网口配置 liberty版本之前的
- c++builder 重载WindowProc、WndProc 截获消息
c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall myWindowProc(Messages::TMessage ...