今天给大家分享的是在我上个月接触到的一个既熟悉又陌生的知识-- ECMAScript。陌生是因为之前从来没接触过这个东西,熟悉是因为它与JavaScript的剪不断、理还乱血缘关系,可以这么说JavaScript既是ECMAScript的生母又是ECMAScript的儿子。此话怎讲,列位看官,且听我慢慢道来。
出生背景
话说天下大势,分久必合,合久必分。在上世纪九十年代,有一个叫Nombas的公司开发了一种叫c--(c减减)的嵌入式脚本语言,它的横空出世,也让当时的人们领略到了它的雄姿勃发。开始之初该语言绑定在一个CEnvi的软件中,能将脚本语言嵌入网页中,它的出生也开启了在客户端使用的脚本语言的先河。后来演变成了ScriptEase(被收购后就销声匿迹了)。
后来,网景公司(Netscape)基于Navigator浏览器开发出了LiveScript(后更名为JavaScript);微软看到了该脚本语言的强大,也想在浏览器市场上分一杯羹,于是发明了JScript(LiveScript的克隆版),用于自家开发的IE浏览器之上。
三分天下
自此,三分天下的局面就形成了。那就免不了一场世纪之战,也就是后来不人们说的浏览器大战。最终结果是IE凭借雄厚的实力(编外语:呵呵),赢了浏览器的天下。
JavaScript刚出生,正在功能完善期,三个版本同时共存,各自基于不同的浏览器开发大同小异的功能,这就会出现什么问题?浏览器的兼容问题啊!你们搞斗争,我们搞兼容。受苦的可是我们啊,宝宝心里苦啊。
ECMAScript初步形成
在历史长河中,矛盾始终是历史推进的必要条件。正是基于这种斗争的矛盾下,统一JavaScript脚本语言的任务就被提上议事日程了。最终1997年,以JavaScript1.1为蓝本的建议被提交到了欧洲计算机制造协会(European Computer ManufacturersAssociation)。该协会有个39号技术委员会就负责制作统一JavaScript脚本语言的标准。
当然,该部门由网景公司技术员、微软公司的技术员、Sun公司技术员(95年开发了java语言,现在被甲骨文公司收购)以及众多热衷于语言开发的技术员组成。历时数月,出了一个文件叫--ECMA-262标准,也就是ECMAScript标准。后来各大浏览器开发商(除比较“实力雄厚”的IE外,不过近年来看还是妥协了)皆以ECMAScript标准当做JavaScript实现的基础。
历史概括
关系履明白了吧。总结一下它的成长历史:就是一个横空出世的天赋异禀的少年(嵌入HTML的脚本编程语言),在成长的道路上被不良少年带坏了(IE,navigator等),后来官方(ECMA)看不下去了,就派相关部门,制作了一个“三好学生养成手册”(ECMAScript-262),给这个少年铺了一条平坦的康庄大道(2016年至今的统计:编程语言中的前十名),逐步走向人生巅峰。
版本更迭
自1997年到现在已经有近20个年头了。ECMAScript也从ECMAScript 1版发展到了现在的ECMAScript 6,经历了20年间的6个版本的更迭。在目前的js手册基本都是沿用的ES5的标准。ES6的标准早在09年ES5发布时开始准备,在15年6月份发布,是历经6年厚积薄发。版本的改动太大了,不过刀妹还是强势,咳咳,又跑题了。但ECMAScript版本都是向下兼容的,不要害怕,以前知识还可用。
新特性
ES6是对增加不少新特性、新函数以及新的语法。比如新增添局部变量声明方法,常量声明方法,语句块成了局部作用域,模板字符串(新的字符串声明方式,支持直接变量),解构赋值,箭头函数(函数简写方式),新的“...”符号,继续迭代器(yield,这个我在阿里云存储OSS的demo里见过),模块,class(类)等等等等新特性,真让人应接不暇。这里不做详细解读,因为这些写下来可以写一本书了。
发展前景
聊一下发展前景,我相信大家应该都听过node.js了,一言以蔽之就是一个js代码的后端运行环境。意味着可以用js代码搭建一个Apache服务器出来。Node.js在09年开发出来,发展至今已经6个年头了,近年来的火爆程度相信大家都看出来,在github也一度成为最受欢迎的开源项目之一。
那我总结一下为什么node.js受欢迎:
1.采取事件驱动、异步编程,也是js
的特性。这应该不用解释了吧。有这个特性,是不是能够更好的处理高并发。
2.Node.js在github上拉一个包下来,环境就搭好了,简单、轻量、高效。
3.Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
4.前后端语言一致,是不是前端UI也能写服务器的程序了。
5.模块、组件完善,比如你想要一个天气插件,npm install weather(这只是举例),一条命令,实现了,神不神奇,意不外意外?
说到这,如果我是node.js
,我只霸气的单腿站在凳子上说一句:妈的,还有谁!
好的,在Node.js的蓬勃发展下,同时HTML5中也给js封装好了好多接口如canvas等等。但是你要说node.js没缺点那不可能,但在它的诸多优点情况下,发展前景还用我多说么?身为开发者的你怎么能不爱上她(注意断句)。
格言
岁月静好,感恩万物,一人终老;
翻译成英文就是:fine,thank you,and you。