曾经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技术的发展的更多相关文章

  1. Web技术的发展 网络发展简介(三)

    在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...

  2. 从故纸堆里,回顾下Web技术的发展历程

    通过对比这些年的计算机图书来让大家感受下前些年Web技术的发展历程. Web开发框架,目前是Spring Boot+JPA,我正好出过本书,从中大家能感受到现在的技术. <Spring Boot ...

  3. 【Web技术】 275- 理解 WebView

    前言 了解webview的神秘之处.今日早读文章由@子非翻译分享. 正文从这开始-- 我们通常使用 Chrome, Firefox, Safari, Internet Explorer 和 Edge ...

  4. HTML5 Dashboard – 那些让你激动的 Web 技术

    HTML5 Dashboard 是一个 Mozilla 推出的项目,里面展示了最前沿的 HTML5,CSS3,JavaScript 技术.每一项技术都有简洁,在线演示以及详细的文档链接.这些技术将成为 ...

  5. Soundslice – 美妙乐谱!Web 技术高大上的应用

    Web 技术的不断发展让我们能够开发各种好玩的功能.这里给大家分享一个使用 HTML5 技术实现的在线乐谱,可以播放的哦,也可以选择一个片段进行循环播放.赶紧来体验一下:) 您可能感兴趣的相关文章 1 ...

  6. 用web技术开发出原生的App应用的体会(1)

    本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...

  7. cct,web技术

    基本信息 全国计算机等级考试二级教程——Web程序设计(2016年版)作    者:教育部考试中心 编出 版 社:高等教育出版社出版时间:20115-12-1 ISBN:9787040442991版 ...

  8. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  9. 手机淘宝中的那些Web技术-使用了类似PhoneGap的实现

    Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅 ...

随机推荐

  1. WCF:百度百科

    百科-WCF http://baike.baidu.com/view/1140438.htm Wcf Windows Communication Foundation(WCF)是由微软发展的一组数据通 ...

  2. Java中的OutOfMemoryError的各种情况及解决和JVM内存结构

    在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存) [3]和Native(本地内存). [1] 堆内存是运行时分配所有类实例和数组的一块内存区域.非堆内存包含方法区和JVM内部 ...

  3. Delphi 串口通信数据位长度对传输数据的影响 转

      针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看到串口参数设置.其中“数据位”设置,共有四档选项,分别是8.7.6.5.那么改变这个参数会对数据的传输有什么影响呢? 我 ...

  4. cocos2dx 2.x 版本+Windows+ADT Bundle 配置

    昨天解决了cocos2dx 3.x版本+Windows+ADT Bundle的配置,今天来解决cocos2dx 2.x版本的配置. 整体来说,2.x的配置相对麻烦一点,不过一旦解决了,就一路畅通无阻了 ...

  5. sqlserver数据可空插入报错

    数据库和C#中均为可空类型.   这时候直接给字段赋值为null parameters[9].Value = null :    执行的时候报错了,一大堆,总之说它少了一个参数.   用sql ser ...

  6. javascript防止SQL注入

    <SCRIPT language="javascript">function Check(theform){  if (theform.UserName.value== ...

  7. CSS概述<选择器总结>

    概述:CSS是指层叠样式表,他是定义如何显示HTML元素,样式表通常存储在样式表中,通常存储在.css文件中,下面对css的选择器进行总结,便大家夯实基础! 1 语法规范: 每个样式规则有两个部分:选 ...

  8. 数往知来 ADO.NET <八>

    ADO.NET基础 学习目的:通过程序访问数据库 ,ADO.NET就是一组类库, -->connection   用来连接数据库的类 语法:首先需要一个连接字符串 -->以SQL serv ...

  9. 【C#】Abstract和Virtual的区别

    一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类 ...

  10. 在RHEL5.4下安装ORACLE11G

    以root身份登录到系统,新增组和用户: #groupadd oinstall #groupadd dba #useradd -g oinstall -G dba oracle #passwd ora ...