JavaScript的前世今生(下)

在“JavaScript的前世今生(上)”一文中,我们看到了JavaScript那令人吐槽的历史和遗留问题,不过这并不妨碍我们继续学习JavaScript这门优秀的编程语言,反而进一步加强了我们学习的兴趣和渴望。下面就让我们一起走进JavaScript的精彩世界。

为什么使用JavaScript

不管我们学习怎样的课程,我们的目的其实是相通的——那就是学以致用。JavaScript也是如此,学习并掌握JavaScript,可以帮助我们快速高效地处理网站中日益复杂的交互行为和业务需求。在为公司创造利益的同时,也证明了自己的价值体现,从而为自己的晋升和加薪提供有利的保障。

在前面的篇幅中,我们了解到JavaScript的初衷是为了提供客户端的数据验证,避免反复多次地向服务器发送请求。到了今天,这一项操作依旧是JavaScript的基本功能。不过,你还可以使用JavaScript来实现更加绚丽的效果,甚至于网页游戏。你可以点击下面的链接先行欣赏:

上面的案例演示只是JavaScript能力展现部分的冰山一角,只要有足够的思维和创意,再配上JavaScript的使用,我们就能创作出更符合用户习惯、更具特色的互联网产品,来满足更多用户的需求。总而言之,我们使用JavaScript的目的是为了帮助用户解决实际的问题,优化Web应用的交互体验,提高用户对网站的兴趣,最终促进网站产品或服务的转化。

JavaScript的优势

接触JavaScript也有那么几年了,期间也见过、听过关于JavaScript的许多分歧,有批判JavaScript是一门垃圾语言的,也有赞扬JavaScript是一门优秀语言的,反正双方一直都各有其词,各有各的理,各有各的分析角度。而我,作为一位旁观者,也见怪不怪,毕竟这是我养活自己的一门技术依靠。说它不好吧,其实就是拐个弯在骂自己;说它好吧,又摆脱不了JavaScript那令人唾骂部分的事实。

其实换个角度想想,毕竟金无足赤、人无完人,要想让一门编程语言立足于完美状态那也是不切实际的。在我们老是给JavaScript挑刺的同时,为什么不能想想如何将JavaScript的优良部分发挥到漓淋尽致?与其说JavaScript的问题,倒不如谈谈我们自身的问题。

下面,就让我们一起来看看学习JavaScript具备哪些优势。

  1. 入门易,深入难

    这一点我们从最基本的就业问题来谈。,表示你可以通过短时间的学习就能够谋取一份养活自己的工作;,代表着机会,因为通往高手的路上往往死尸遍野,只要你肯努力、不懈,高薪不再是梦想!

  2. 语言的唯一性

    即使JavaScript的语言特性让部分程序员感到不爽,经常抱怨JavaScript的种种不是。但是全世界所有的网页都在使用着JavaScript,即使你是被迫不得不去使用它,你也无法否定JavaScript的地位。

    正是因为JavaScript在浏览器端的“垄断地位”,当一门全新的脚本语言出现后(如Dart),即使它比JavaScript更加优秀、即使改善了JavaScript的所有缺陷,也无法撼动JavaScript在市场中的地位。要想让一门新的脚本语言完全取代JavaScript,至少应满足以下三个条件:

    1. 说服各大浏览器厂商,让他们的在自家浏览器中加入该脚本语言的解析引擎(战略问题)。
    2. 等待用户的浏览器全部升级到加入了新解析引擎后的浏览器版本(用户问题)。
    3. 给一个让JavaScript程序员以及公司老板绝对信服的理由,让他们放弃JavaScript而转移到新的脚本语言(成本问题)。

    如上所述,即使想让一门新的脚本语言能够在浏览器中直接使用都是一件非常困难的事情,更不用谈及“取代”二字。

    所以选择学习JavaScript的同学无需考虑、也无需担心学习JavaScript有没有前(钱)途的问题。

  3. 语言的统一性

    所有的前端人员都在使用着同一门脚本语言,所以也就不存在语言选择的困惑,也不会存在语言之间的分歧,见多了Java与C#的口水战你就会懂得享受JavaScript那宁静的快乐。

  4. Ajax,实现网页的无刷新加载

    Ajax的全称为“Asynchronous JavaScript and XML”(即异步JavaScript和XML),国内翻译读作“阿贾克斯”。该项技术早在1998年前后就得到了应用,但是直到2005年初才被大众所接受。Ajax允许网页在不刷新的情况下,即可完成与后端数据的交互和前端的效果展现。

    最著名的Ajax交互的案例莫过于谷歌的Gmail邮箱,包括现在的其他邮箱系统也都使用了Ajax技术来实现数据的交互处理,另外比较明显的Ajax应用就是在那些瀑布流布局的页面中当滚动条滚动至文档末尾时会自动加载新的内容数据。

    Ajax的流行让JavaScript也变得越来越流行,使用Ajax技术可以创建出更加迷人的Web应用。

  5. 各种层出不穷的框架使得JavaScript的开发更加简捷

    2006年8月jQuery问世以来,使得网页脚本的开发工作变得更加简单、有趣。jQuery是一个兼容多浏览器的JavaScript框架。你不需要了解太多的JavaScript知识就可以通过少数的代码构建出符合需求的交互效果。

    JavaScript开发框架大致可以分为MVC框架(如AngularJS、Backbone.js、Ember.js、Knockout.js)、DOM操作(jQuery、Prototype、Zepto、YUI Library)、移动开发(jQuery Mobile、Sencha Touch 2、Enyo、jQTouch)、模板引擎(Underscore.js、Handlebars.js、mustache.js)、图形图像绘制(three.js、D3.js、KineticJS、EaselJS、Processing.js)、JavaScript测试工具(QUnit、Jasmine、Mocha、JsTestDriver)等类型。

    而jQuery只是作为大众所普遍接受的、位于众多JavaScript框架中的其中一员。只有通过合理选用不同的JavaScript框架来构建Web应用,才可以让你的工作事半功倍。

    同时我们也不要忘记,这些框架都是基于JavaScript进行封装的,只有当你足够理解JavaScript的同时,才能对这些框架使用得游刃有余,才能够构建出高质量、高性能、高扩展、高可维护性的Web程序。

  6. Chrome的V8引擎,向世人证明了JavaScript不再低效,不再是一个玩具语言

    V8是由Google开发的一个开源JavaScript引擎。Google在2006年开始研发V8,到了2008年V8被正式开源。

    V8在执行之前将JavaScript编译成了机器码(而非位元组码或是直译它),以此来提升效能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。

    V8开创了高性能JavaScript的新时代,再加上各大浏览器厂商对JavaScript引擎研发力度的加强和不断优化(例如Mozilla的TraceMonkey、Apple的SquirrelFish、IE的Chakra),JavaScript的性能瓶颈将不复存在。

  7. HTML5的出现给Web开发人员带来了新的机会和挑战

    HTML5是目前HTML的最新版本,它的第一份正式草案于2008年1月22日公布,到了2012年12月17日被正式定稿。根据W3C的发言稿称:“HTML5是开放的Web网络平台的奠基石”。总而言之,HTML5的出现,为Web从业人员带来了广阔的前端视角。

    使用Canvas显示图形或动画、定时媒体回访、离线数据库存储、文档编辑、拖拽控制、浏览历史管理等,都为JavaScript的应用增添了不少色彩。

  8. Node.js,将JavaScript推向服务器端

    Node.js于2009年5月问世,是一个允许开发人员使用JavaScript语言来编写服务器端代码的框架。Node.js的成功让它爆发式的出现在我们的视线中,让很多前端工程师看到了从前端写到后端的另一种实现希望。目前玉伯的支付宝团队已经初步完成前端到后端的Node.js的部署和实现。

  9. 一切皆为JavaScript

    如今,JavaScript已经成为了Web开发的“标配”语言。不管你喜欢与否,在Web开发中必定要涉及JavaScript。JavaScript可以实现真正的“一次编写,到处运行”,并且适用于所有常用的浏览器。因此,JavaScript 还被称作“Web的虚拟机”以及“Web上的汇编语言”。

    尽管如此,如果你还没开始学习JavaScript,这也不影响你编写Web应用。因为你完全可以用你喜欢的语言(Java、.NET、C/C++、Python、Ruby……)来编写应用程序,然后将它们编译为JavaScript语言,然后再运行于浏览器上。

    如果你对JavaScript的语法不满意,你也可以使用一些JavaScript的增强版语言。比如,如果你更喜欢经典的面向对象方式,并想要一些语法糖,那么你可以试试CoffeeScript;如果你希望有一个更严格的类型系统,那么你可能会发现Dart或TypeScript更有趣一些;如果你更喜欢函数式编程,那么ClojureScript或Roy可以帮助你。

  10. ECMAScript 6,下一代JavaScript的标准

    相比于如何使用其他语言来弥补JavaScript的历史不足,我更期待ECMAScript 6的推出。ECMAScript 6是下一代JavaScript的标准。其草案于2013年12月发布,之后是12个月的讨论期,以听取各方反馈。预计将于2015年6月发布ECMAScript 6的正式版本。如果你想了解关于ECMAScript的更多内容,可以参考阮一峰的《ECMAScript 6入门》

    ECMAScript 6针对现有JavaScript的不足,增加了多个新的概念和语言特性,其中就包括了广大Web开发人员期待已久的对类和继承的原生支持。相信随着ECMAScript 6的正式发布,对JavaScript批判的声音将越来越小,对JavaScript的支持度将再创新高,这必定会将JavaScript推向另一个高度。虽然ECMAScript 6的发布并不能让我们马上使用它,但是相对于其他扩展语言或者全新的脚本语言而言,ECMAScript 6才是正统,从而更容易得到推广和普及。就让我们一起期待这一天早点到来,当然你也可以点击查看各大浏览器对ECMAScript 6的支持情况

参考内容