文章目录
- 前言
- 一、js的起源
- 二、js的发展
- 三、结尾
前言
在我使用js的时候经常会想一个问题,就是js是谁创造的,为什么要创造它,等等问题,抱着这个想法,我去网络上查了资料,以下是我整理的js发展史及背景。
一、js的起源
1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。
因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,比如判断用户有没有填写表单。可是网页脚本语言到底怎么实现,当时网景公司面临两个选择,个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页;另一个是发明一种全新的语言。
这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。
到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。
就在无法选择时,发生了另外一件大事:1995年Sun公司将Oak语言改名为Java,正式向市场推出。
Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。
网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。
总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的
此时,34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他。
仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的网页作者也能很快上手。这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。
Brendan Eich被指定为这种"简化版Java语言"的设计师。
但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。
二、js的发展
互联网的发展超出了所有人的预料, js被应用在几乎每一个网站上, 但一门语言,在浏览器中运行, 没法像java 那样访问网络, 也就没有办法调用服务器端的接口来获取数据.用户只能通过GET或者POST向服务器发送请求,这时候服务器返回的数据是整个页面, 而不是页面中的一个片段, 也就是说整个页面都得刷新一遍, 哪怕是页面中只有一个文字的改变。
1998年的时候 ,IE5引入一个新的功能:XMLHttpRequest , 这个新功能将允许js直接向服务器发出接口调用。也就是异步同调,通过XMLHttpRequest 访问登录的url, 等待服务器处理,把数据传输回来,调用那个函数, 基本是就是把DOM树的某个节点更新一下, 例如让那个包含用户名和密码登陆框消失, 再加一个提示消息:登录成功 ,如果服务器处理和网络速度都足够快的话, 用户就会发现: 咦, 我没有刷新整个页面, 竟然已经登录了啊。
这个功能带来了一场革命: 这种方式可以使得网页局部刷新, 让用户浏览网页的体验极佳, 尤其是Google 地图, Gmail 等应用让互联网应用火了起来。
其他浏览器也迅速跟进,实现了类似功能, 各种各样交互性极佳的网站如雨后春笋般出现。
的是渐渐的,xml变得臃肿,传输起来很费劲,一段代码里无用的便签太多,数据都被淹没了,于是便有了JSON,代替xml传输数据。
HTML负责结构, CSS负责展示, 而我(加上AJAX, JSON) 负责逻辑。
于是前端编程三剑客形成了。
如果把Javascript 放到服务器端执行怎么样? 这个想法够疯狂的。
但的确有人这么做了, Brendan Eich 发明了js10几年以后 , 又一位Ryan Dahl于2009年真的把js放到了服务器端。这就是node.js
javascript的确可以在服务器端立足, 并且有一个巨大的优势:前端和后端都用同样的开发语言:那就是javascript
原来的前端开发现在竟然也可以毫无障碍的写后端的程序了, 是名副其实的“全栈工程师” !
三、结尾
了解js的发展和背景之后,我对js也有了新的认知,我在想如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?