曾经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. hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online

    很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死…… 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了……没了! 反复读题,终于在偶然间 ...

  2. Free Candies

    题意: 有4堆东西,每堆有n个每个有一个颜色,现在有一个篮子最多能装5个不同的颜色的东西,每次都从堆顶拿,当篮子出现两个相同颜色,可以获得这两个东西,求获得的最大数量 分析: 因为就4推,可以把各堆的 ...

  3. bjfu1262 优先队列

    比较典型的应用优先队列的题.题目是在一个长为n的数组中,依次问m个数中的最小值.那么把值和下标做成一个结构体,放进优先队列里,每次移动窗口就把该T的T掉,剩下的最小值就是答案,复杂度nlogn,轻松a ...

  4. php 在线 mysql 大数据导入程序

    1 <?php header("content-type:text/html;charset=utf-8"); error_reporting(E_ALL); set_tim ...

  5. python代码编程规范

    一.内容格式 1.注释部分:模块名及简介(一般用一行写完),模块描述(包含各类方法),其它描述(注意点,功能,示例等,可以分多段) 2.导入模块:Import XXX 3.全局变量定义:wantobj ...

  6. 动态定义数组 .xml

    pre{ line-height:1; color:#3c3c3c; background-color:#d2c39b; font-size:16px;}.sysFunc{color:#627cf6; ...

  7. css:outline

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  8. JavaScript高级程序设计(第三版)第二章 在HTML中使用JavaScript

    2.1 <script>元素 <script>定义了下列6个属性: async:可选.表示应该立即下载脚本,但不应妨碍页面的其他操作,比如下载其他资源或等待加载其他脚本.只对外 ...

  9. Cocos2d-JS v3.0 alpha不支持cocos2d-x的Physics integration

    cocos2d-x 3.0新的Physics integration,把chipmunk和Box2D封装到引擎内部 auto scene = Scene::createWithPhysics(); s ...

  10. c++builder CryptoAPI md5

    #include <wincrypt.h> DWORD GetHash( CONST BYTE * pbData, DWORD dwDataLen, ALG_ID algId, LPTST ...