多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 第二章 为什么选择JavaScript? 那里有很多编程语言。为什么要使用JavaScript?本章讨论了七个方面,当您选择一种编程语言时,这些方面很重要,并认为JavaScript整体性很好: 1. 是免费提供吗? 2. 它是一种优雅的编程语言吗? 3. 在实践中有用吗? 4. 它是否具有良好的工具,特别是良好的集成开发环境(IDE)? 5. 它是否足够快你想做什么? 6. 是否广泛使用? 7. 它有未来吗? ## JavaScript自由可用吗 JavaScript 可以说是最开放的编程语言:ECMA-262,其规范是ISO标准。该规范紧随其后的是独立方的许多实施。其中一些实现是开源的。此外,语言的演变由TC39处理,TC39由所有主要浏览器厂商在内的几家公司组成。这些公司中的许多公司通常是竞争对手,但是他们为了这个语言的利益而共同合作。 ## JavaScript优雅吗 可以说优雅,也不优雅。我用不同范例的几种编程语言编写了相当数量的代码。因此,我很清楚JavaScript不是优雅的顶峰。然而,它是一种非常灵活的语言,具有相当优雅的核心,使您能够使用面向对象编程和功能编程的混合体。 JavaScript引擎之间的语言兼容性曾经是一个问题,但现在不存在了,部分归功于[est262 suite](https://github.com/tc39/test262),它检查引擎是否符合ECMAScript规范。相比之下,浏览器和DOM的差异仍然是一个挑战。这就是为什么通常最好依靠框架来隐藏这些差异。 ## JavaScript有用吗 世界上最美丽的编程语言是无用的,除非它允许您编写所需的程序。 ### 图形用户界面 在图形用户界面方面,JavaScript将成为HTML5的一部分。在本节中,我将HTML5用于“浏览器平台”(HTML,CSS和浏览器JavaScript API)。HTML5广泛部署,不断进步。它正在慢慢成为编写全功能跨平台应用程序的完整层; 类似于Java平台,它几乎像一个嵌入式操作系统。HTML5的一个卖点是它可以让您编写跨平台的图形用户界面。这些都是妥协的:你放弃一些质量来换取不限于一个操作系统。过去,“跨平台”意味着Windows,Mac OS或Linux。 但现在我们有了两个额外的互动平台:网络和移动平台。有了HTML5,你可以通过[Cordova](http://cordova.apache.org/)、[Chrome Apps](http://developer.chrome.com/apps/)和[TideSDK](http://www.tidesdk.org/)等技术来实现所有这些平台的目标。 另外,有几个平台将网络应用程序作为本机应用程序,或者您可以自己安装它们,例如Chrome操作系统,Firefox操作系统和Android。 ### 其他技术补充JavaScript 除了HTML5,还有更多的技术可以补充JavaScript,使语言更有用: **JS库** JavaScript有丰富的库,使您能够完成从解析JavaScript(通过[Esprima](http://esprima.org/))到处理和显示PDF文件(通过[PDF.js](https://github.com/mozilla/pdf.js))的任务。 **Node.js** Node.js 平台允许您编写服务器端代码和shell脚本(构建工具,测试运行程序等)。 **JSON**(JavaScript对象表示法,在第22章中介绍) JSON 是一种以JavaScript为基础的数据格式,已经变得流行在Web上交换数据(例如,Web服务的结果)。 **NoSQL数据库**(如[CouchDB](http://couchdb.apache.org/)和[MongoDB](http://www.mongodb.org/)) 这些数据库紧密地集成了JSON和JavaScript。 ## JavaScript有好的工具吗? JavaScript越来越好的构建工具(例如,[Gulp](http://gulpjs.com/))和测试工具(例如[mocha](http://visionmedia.github.io/mocha/))。Node.js可以通过一个shell(而不仅仅是浏览器)来运行这些工具。这个领域的一个风险是碎片化,随着我们越来越多地使用这些工具。 JavaScript IDE空间仍然是新兴的,但它的快速成长。网络开发的复杂性和活力使得这个空间成为创新的肥沃土地。两个开源示例是[ Brackets](http://brackets.io/)和[Light Table](http://www.lighttable.com/)。 此外,浏览器正变得越来越有能力开发环境。特别是Chrome,最近取得了令人瞩目的进展。未来将集成更多的ide和浏览器,这将是一件很有趣的事情。 ## JavaScript足够快吗? JavaScript引擎已经取得了巨大的进步,从缓慢的口译员演变成了快速即时编译器。它们现在对于大多数应用来说足够快。此外,新的想法已经在开发中,可以使JavaScript足够快地用于其余的应用程序: [asm.js](http://asmjs.org/)是一个(非常静态)的JavaScript子集,在当前引擎上运行速度很快,与编译的C ++一样快。例如,它可以用于实现Web应用程序的性能关键算法部分。它也被用于将基于C ++的游戏移植到Web平台。 [ParallelJS](http://www.2ality.com/2013/12/paralleljs.html)并行化使用新阵列方法的JavaScript代码mapPar,filterPar和reducePar(现有阵列方法可并行化版本map,filter和reduce)。为了使并行化工作,回调必须以特殊样式写入; 主要的限制是您不能突变在回调中未创建的数据。 ## JavaScript使用广泛吗? 广泛使用的语言通常有两个好处。首先,这种语言更好地记录和支持。第二,更多的程序员知道这一点,当您需要雇用某人或正在寻找基于该语言的工具的客户时,这很重要。 JavaScript被广泛使用并且获得了上述两个优点: * 这些天,JavaScript的文档和支持都有各种形式和大小:书籍,播客,博客文章,电子邮件通讯,论坛等。[第33章](http://speakingjs.com/es5/ch33.html)指出重要的资源。 * JavaScript开发人员的需求很大,但他们的队伍也在不断增加。 ## JavaScript有未来吗? 几件事情表明JavaScript有一个光明的未来: * 语言正在稳步发展; ECMAScript 6看起来不错。 * 有很多与JavaScript相关的创新(例如,上述asm.js和ParallelJS,Microsoft的TypeScript等)。 * JavaScript的一个组成部分的Web平台正在快速成熟。 * JavaScript由广泛的公司联盟支持 - 没有一个人或公司控制它。 ## 结论 考虑到上面列出了什么使语言具有吸引力,JavaScript正在做得非常好。这当然不是完美的,但是现在很难打败,事情只会越来越好。