JavaScript似乎是最流行的编程语言之一。作为一个前端开发,写JS总是离不开工作,但有些问题却一直萦绕在我的脑海中:它和Java有什么关系?什么是所谓的ES和TS?下面让我们一起走进JS的前世今生。LiveScript说到JavaScript的起源,就不得不和web的发展联系在一起。起初,由于网页规模和复杂度的不断增加,频繁的表单验证之间的数据交换过程只会带来负担。Netscape开始研究基于浏览器的脚本语言来处理简单的身份验证。它是LiveScript,但它最终发布时并不是正式名称。Java的脚本?我们都知道Java与JavaScript语言本身无关。网上一般都说JavaScript这么命名是为了赶上Java的流行,但这种说法是有失偏颇的,因为当时Java才刚推出。应该也是后话了。其实因为Sun公司标榜的“writeonce,runanywhere”,对Netscape影响很大(想想这个客户端脚本语言,只要有浏览器环境就可以到处运行吗,比如流行的使用前端技术进行跨终端开发,我觉得本质很接近,不管你有什么样的手机,平板,电脑,或者其他终端设备,只要你有浏览器内核),所以两家公司结盟,LiveScript改名为JavaScript,后来Java也确实越来越流行。毕竟,Netscape主要是一个浏览器。当然,它非常愿意让JavaScript搭上这趟顺风车。这个商标自然是Sun的。这种看似被开发成“Java的简化版”的Web脚本语言是当时Netscape的BrandonEdge编写的,但这位程序员并不是Java的粉丝,所以几乎有了应付工作的心态。完成第一个JavaScript版本的设计用了10天。谁能想到现在JS会流行起来?这也是JS本身存在一些问题,被开发者诟病的原因之一。但话又说回来,它只是基于“简单的脚本语言”而设计的一种编程语言而已。这可能是所谓伟大的事业往往都是一个小小的开始,一切才刚刚开始。这里我们有一个大概的了解,JavaScript是Netscape和Sun联合推出的一种客户端脚本语言,目的是为了解决网页中简单验证的需求而设计的。但是我们看到,JS的发展和一开始已经很不一样了,时代在不断的推动JS,那么谁来引领JS的进步呢?是它的发行商Netscape吗?可惜的是Netscape其实在2003年就解散了,毕竟Netscape的主打产品是浏览器,而我们现在还没有看到Netscape浏览器,因为它在第一场浏览器大战中彻底输给了微软的IE.当时IE占据了整个浏览器市场96%的份额,Netscape没有丝毫逆转的机会。是的,虽然JavaScript取得了巨大的成功,但Netscape最终失败了。脚本?环境?在Netscape推出JavaScript后不久,微软也在IE3浏览器中添加了一个名为JScript的JavaScript实现。与JScript类似的还有CEnvi,这意味着不同的浏览器厂商会实现不同的脚本语言,JavaScript的标准化被提上日程。当时Netscape将JavaScript1.1提交给国际标准化组织ECMA制定统一的规范,随后ECMA组织为JavaScript制定了统一的规范,命名为ECMAScript。截至目前,互联网行业前沿的公司都参与了规范的制定,所有的浏览器都会统一执行这套规范。ECMAScript序列Netscape早已销声匿迹,但一起推动JavaScript的Sun呢?后来被甲骨文公司收购兼并,甲骨文公司获得了Java的所有权,所以JavaScript也成为了甲骨文公司的注册商标,非常尴尬。不知道从什么时候开始,我们写的“JavaScript”已经不是原来的JavaScript了,这种浏览器脚本语言其实根本就没有一个准确的名字(比如微软更喜欢叫它JScript),或者以前是叫JavaScript,但现在可以说了吗?而且大家还是习惯叫它JavaScript,可能是约定俗成吧。就像我们平时说的H5开发,大家都知道是指HTML5开发一样。其实HTML是一个缩写。H5显然不科学。如果我这样说C3开发,你能想到我所说的CSS3开发吗??没有这个说法,但是说H5开发还行,我们很多人不会意识到哪里不对,因为习惯了。所以我个人的理解是,我们现在写的所谓“JS”,不能完全称为ES。我们知道ECMAScript是JavaScript的规范,“JS”是浏览器实现的。都遵循ES规范,只是实现的程度和支持的情况还是有区别的。规范只有一套,但浏览器却不止一种。毕竟,世界上没有和谐。遇到同一段“JS”代码,在谷歌浏览器上运行完美,但在IE上却出现各种错误。我们认为您编写的代码有问题。我们称这种问题为“兼容性问题”。而处理网页开发中的兼容性问题也成为了重要的工作内容。ECMAScript6到这里基本讲完了JavaScript和ECMAScript。简而言之,JavaScript(或简称JS)是一个历史遗留下来的总称。由于其特殊的发展历史,它不同于其他的编程语言。其自身的版本变更应以ECMAScript本规范为准。其中ES6(ECMAScript第六版)难度最大。从ES3之后的一些激进的想法,到ES5才完全实现,最后在ES6中修改发布,所以ES6也可以说是革命性的。从此,JS进入了飞速发展的阶段。很多代码在低版本的浏览器中可能不支持或者无法实现,所以现在前端开发往往需要借助一些编译工具,将代码编译成浏览器可以识别的代码。代码,这里就不赘述了。前端编程发展至今,一直在回避过去复杂、低效等问题。“面向浏览器编程”的特性可能一直是一个制约因素,但毫无疑问,整体还是在朝着全新的编程体验迈进,任重而道远。习。TypeScript——面向未来的开发如果你不熟悉TypeScript,你应该没有用过Angular。Angular是Google开发的前端框架,是比较流行的框架之一。从2.0版本开始就用TypeScript写的,TypeScript的份量不小。它是微软开发的一套语言,扩展了JavaScript的语法和特性,同时也支持ES6规范。TS+Angular的组合感觉很强大。毕竟有微软和谷歌两大公司,但同时这种组合也让我觉得学习成本比较陡峭,比如和vue相比。当然,由于TypeScript是JS的超集,不能直接在浏览器中运行,还需要编译。TS有专门的编译器。题外话:JQ??uery——刀耕火种的前端时代JQuery本身就是一个非常优秀的JS框架,是众多传统JS框架库中最具代表性的,甚至因为太过火爆,很多初学者都不喜欢甚至不明白什么是JS。先学JQ。造成这种现象的原因是Jquery框架太流行,先入为主,根本原因还是JavaScript本身的发展。前面说过,JavaScript在设计之初并没有考虑那么多,但是不同的浏览器有不同的实现,导致了各种兼容性问题。可以说JS本身就是问题百出。想想把大量时间花在各种测试兼容性上是多么的浪费,所以以Jq为代表的这些框架库自然而然地涨了起来,打开Jq在github上的主页,我们可以看到6k+commit,一共270+开发者贡献代码交给它,复杂的东西和麻烦的兼容性都交给了框架,再加上Jq本身的设计非常好,所以才能流行很久。也许懒惰是发展的源泉。真正的懒人,总是想着如何把复杂的问题简单化,编程的魅力也在其中。本文由博客多发平台OpenWrite发布!
