JavaScript 历史演变

2019-04-28 23:24|来源: 网路

    在1995 年 Netscape(网景公司,我们要非常感谢网景公司,首先提出的交互的概念,首先提出的用户体验的概念,在老师的心中,Brendan Eich能够和乔布斯平起平坐),一位名为 Brendan Eich 的工程师创造了 JavaScript,随后在 1996 年初,JavaScript 首先被应用于 Netscape 2 浏览器上。最初的 JavaScript 名为 LiveScript(活力脚本),后来因为 Sun Microsystem 的 Java 语言的兴起和广泛使用,Netscape 出于宣传和推广的考虑,将它的名字从最初的 LiveScript 更改为 JavaScript——尽管两者之间并没有什么共同点。这便是之后混淆产生的根源。(也就是说,JavaScript和Java没有任何关系,就是为了“榜大牌”的,和北大青鸟和北大的关系一样)。

    几个月后,Microsoft 随着 IE 3 推出了一个与之基本兼容的语言 JScript(注意微软的人生哲学,当它发现别人的东西很好的时候,就必须拧巴的推出自己的,然后自己的又被市场排斥,又开始兼容别人的)。又几个月后,Netscape 将 JavaScript 提交至 Ecma International(一个欧洲标准化组织), ECMAScript 标准第一版便在 1997 年诞生了,随后在 1999 年以 ECMAScript 第三版的形式进行了更新,从那之后这个标准没有发生过大的改动。由于委员会在语言特性的讨论上发生分歧,ECMAScript 第四版尚未推出便被废除,但随后于 2009 年 12 月发布的 ECMAScript 第五版引入了第四版草案加入的许多特性。第六版标准已经于2015年六月发布

    ECMAScript是JavaScript的标准,现在我们学习的版本的ECMAScript4、5。

QQ图片20170916164132.jpg


出任Mozilla CTO

QQ图片20170916164302.jpg



2003年:牛皮鲜,页面上漂浮的广告、弹窗广告;所以当时的浏览器就推出一个功能,禁用广告,实际上本质就是禁用JavaScript。页面上的特效,都特别俗,比如鼠标后面跟随的星星,然后工程师对JS的感觉就是不用学习,生搬硬套,大量的“效果宝盒”软件,一套就有各种特效了。没有人琢磨语言特性。

2004年:谷歌打开了Ajax这个潘多拉的盒子,从此JavaScript被人重视,很多人开始学习JS语言。当时问世了两本JS巨作《犀牛书》、《高级程序设计》。

blob.png

  google suggest 

2007年:三层分离,iPhone发布,人们开始重视用户体验。大家发现了,JavaScript是web页面中制作交互效果唯一的语言,所以把JS的重视程度,提到了相当高的一个地位。招聘信息里面开始出现独立的“JS工程师”职位了,之前都是后台工程师捎带脚写写JS。

2008年:Chrome浏览器发布,V8引擎加快了JS的解析,之前的浏览器解析JS的时候卡顿卡顿的,动画效果是蹦蹦的。在Chrome里,它的引擎叫做V8,运行JS很流畅。

2009年:jQuery变得流行,解决了浏览器兼容问题,制作页面效果变得简单,越来越多的初学者愿意学习JavaScript。

2010年:Canvas画布技术得到众多浏览器支持,可以用Canvas替代Flash了,并且能制作小游戏,比如偷菜、停车小游戏。我们有这个课程,做Flappy Bird、俄罗斯方块、消消乐、接触物理抛物线引擎。

2011年:Node.js得到广泛应用,实际上就是把JavaScript运行在了服务器上,单线程非阻塞,能够让企业用最小的成本实现后台网站,比如之前4万的服务器都卡,现在用了node之后,4000的机器都很流畅。

2012年:HTML5+CSS3的流行,也带火了JavaScript。

2013年: hybrid app模式开始流行。就是做手机app的时候,老板们发现要雇佣三队人马,iOS、安卓、windows phone。花三份工资,并且产品还不好迭代。所以人们发明了用网页技术开发手机App的技术,叫做web app。hybrid app就是混合app,同时结合web技术和原生开发技术。省钱,好迭代。

2015年:ECMA6发布,叫做ECMA2015。重量级的改变,把语言的特性颠覆性的一个增强。


相关问答

更多
  • JavaScript的版本指的是执行JavaScript的运行环境(JS引擎)所遵循的ECMAScript标准. JavaScript是ECMAScript标准的一种实现,这个标准随着历史在不断演进. 最初的JS版本为1.0; IE6时代典型的为3.1版本; IE9时代(最近几年)主流为5.1标准; 去年新版本6.0(准确名字是ES2015)标准发布,目前较新的浏览器都有部分支持; 下一个版本为7.0,预计明后年颁布. 不同版本增加扩展了不同的特性, 新版本向后兼容旧版本.所以有时候会出现某些代码在新浏览器 ...
  • 1.不要做任何假设 (JavaScript是一个不可靠的助手) 可能不唐突的JavaScript 的最重要的一个特性就是——你要停止任何假设: * 不要假设JavaScript是可用的,你最好认为它很有可能是不可用的,而不是直接依赖于它。 * 在你经过测试确认一些方法和属性可以使用之前,不要假设浏览器支持它们。 * 不要假设HTML代码如你想象的那样正确,每次都要进行检查,并且当其不可用的时候就什么也不要做。 * 让JavaScript的功能独立于输入设备 * 要记住其他的脚本可能会影响你的JavaScri ...
  • 安全原因 - 不,你不能转储浏览器的历史(用JavaScript) 我的意思是你做不到 for(i=0;i
  • 而不是使用window.location = url; 重定向, 尝试: window.location.replace(url); 使用replace()后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮进行导航。 Instead of using window.location = url; to redirect, try: window.location.replace(url); after using replace() the current page will n ...
  • 我解决了我的问题,我需要在.pushState()之前在当前页面(example.com)上添加.replaceState() .pushState() 。 并将window.onpopstate函数移动到被调用的页面(example.com/menuitem)。 window.history.replaceState({ page:"http://example.com/" },"", "example.com"); 我通过尝试和错误得到了这个答案。 我希望这会有助于其他人。 I solved my p ...
  • 服务器端代码可以检查X-Requested-With标头,并确保它是XMLHttpRequest (jQuery默认设置此标头)并仅在XHR请求时发送内部视图。 Firebug示例 正如您所看到的,返回的HTML与XHR未提供的请求非常不同。 示例PHP代码 借助自我解释功能。 $xhr = (isset($_SERVER['X-Requested-With') AND $_SERVER['X-Requested-With'] === 'XMLHttpRequest'); $view = View ...
  • 你必须自定义写一些像cookie中的跟踪......由于安全原因,你似乎无法获得2个步骤的历史记录。 看到这里: 我如何从history.go(-2)获取网址 you would have to custom write something like tracking in a cookie... it appears that you can't get history of a url back 2 steps due to security reasons. see here: how can i g ...
  • 对不起,没有javascript没有获取历史记录 Sorry, no the javascript is not getting history
  • 嗯,没有太多的东西。 或者,真的,任何与它有关的事情都发生在很久以前。 .addEventListener已经存在了CSS的时间。 这就是DOM-Level2和我们在一起的时间(我认为大约13年)。 这不是JS如何变得更先进的问题,而是JS编写者如何不这样做的问题。 我认识的程序员,他们将JS作为“二级”或“三级”角色编写STILL使用内联处理程序。 这是十多年以来,这是一个特别好的主意。 至于“不显眼”,这并不一定与事件听众直接相关。 如果你打算以任何方式与用户互动,但这更像是一个分离问题的问题,同样我们 ...
  • 您可以创建一个数组并推送: csvData.push( [ data[0][index],data[1][index],data[2][index],data[3][index] ] ); 围绕值列表添加的括号( [ ] )将创建一个数组,而这又是推送到csvData数组上的csvData 。 You can create an array and push that: csvData.push( [ data[0][index],data[1][index],data[2][index],data[3 ...