JavaScript 的历史
JavaScript 的诞生
1995 年 布兰登 ( Brendan Eich ) 为了应付公司安排的任务,用10天时间就把 JavaScript 设计出来了,他的设计思路是
- 借鉴 C 语言的基本语法;
- 借鉴 Java 语言的数据类型和内存管理;
- 借鉴 Scheme 语言,将函数提升到"第一等公民"( first class )的地位;
- 借鉴 self 语言,使用基于原型( prototype )的继承机制。
所以,JavaScript 语言实际上是两种语言风格的混合产物 ——(简化的)函数式编程+(简化的)面向对象编程。
名字的由来
1995 年刚设计出来的时候叫做 Mocha 语言,9月改为 LiveScript ,12月,网景公司( Netscape ) 公司与 Sun 公司( Java 语言的发明者和所有者 )达成协议,后者允许将这种语言叫做 JavaScript。
浏览器大战
1996 年 8 月 IE3 发布,支持 JScript (微软实现的JS)
1996 年11月,网景公司向 ECMA 提交语言标准, ECMA 组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,由于版权问题,JS语言标准不叫JavaScript ,叫 ECMAScript 。
网景之死
- 微软的 IE 浏览器因为捆绑进了 Windows ,很快超越网景公司
- 1998 年网景公司陷入内忧外患,年底美国在线 AOL 公司宣布收购网景公司
- 被收购后,网景团队的程序员纷纷被解雇
- 布莱登在之后一直协助维护Firefox的运营
IE 如日中天
- 2001 年,IE6 随着 Windows XP 一起发布
- 2004 年,IE6 全球市场占用率80%以上
- 由于不兼容 W3C 标准(主要是CSS)IE6 不断爆出安全漏洞
- Firefox 打算涅槃重生,重新打败IE,但没有成功,只抢到百分之十几的市场份额
- 2005 年,IE7 发布,但打不过 IE6
- 2006 年,主流浏览器为 IE6 和 Firefox
- 2010 年,由于盗版 Windows XP 在中国的风行,中国的大部分浏览器还是 IE6
IE6 的神奇 BUG (会让 IE6 直接崩溃)
<style> *{position : relative} </ style> <table> <input> </table>
微软的懈怠
- 由于 IE6 的巨大成功,加上没有竞争对手,微软解散了 IE6 的开发团队
- Firefox 的出现让微软重组 IE 团队,但不是同一队人,造成 IE7、8 一直问题不断
Chrome 的崛起
- 2004 年,谷歌雇用了一些 Firefox 和 IE 的开发者
- 2008 年,Chrome 发布后迅速拿下全球 1% 的份额
- 2011 年,Chrome 份额超过 Firefox
- 2016 年,Chrome 全球份额 62%
移动市场的兴起
- 2010 年,iPhone 4 发布
- 2011 年,微软和诺基亚合作,后来 Nokia 手机业务就完了
- 2016 年,淘宝、天猫宣布不再支持IE6、IE7,同年年底,宣布不再支持IE8
- 移动市场的兴起,让中国前端极速发展
ECMA 标准的制定
- 1997 年 6 月,第一版 ECMAScript 发布
- 1998 年 6 月,第二版 ECMAScript 发布
- 1999 年 12 月,第三版 ECMAScript 发布,这个版本使用最广
- 2007 年 10 月,第四版草案发布,由于目标过于激进,各方发生了严重分歧
- 2008 年 7 月,由于各方分歧太大,ECMA 开会决定,中止第四版的开发
- 2009 年 12 月,第五版 ECMAScript 发布,增加了一些功能
- 2015 年 6 月,第六版 ECMAScript 发布,新浏览器都支持这一版
- 之后每年发布一版,版本号以年份命名
JavaScript 和 ECMAScript 的关系
- ECMAScript 是纸上的标准,JavaScript 是浏览器的实现
- 纸上标准往往落后于浏览器,先实现,再写进标准
杀手级应用 Gmail
- 2004 年愚人节,谷歌发布 Gmail 在线网页,新的功能让用户和开发者眼前一亮
- 2005 年,Jesse 将谷歌用到的技术命名为 AJAX ,从此,前端技术正式出现
- 此前网页开发都是由后端和设计师完成
- 2006 年,jQuery 发布,是目前最长寿的JS库
JavaScript 爆发
- Chrome 的 JS 引擎 V8 速度飞快
- 2009 年,Ryan 基于 V8 创建了 Node.js
- 2010 年,lsaac 基于 Node.js 写出了npm
- 由于可以在浏览器之外执行 JavaScript ,Node.js 快速风靡
- 同年 TJ 受 Sinatra 启发,发布了 Express.js
- 从此,前端工程师可以愉快地写后端应用了
学习 JavaScript 的基本需求
软要求
- 逻辑能力:写代码本身就是在编写逻辑
- 质疑自己的能力:不要相信人类,包括自己。这不是粗心大意,是人类不可克服的问题,可以通过double check (双重检查)缓解
- 抽象思维:高级程序员必备的能力,抽象思维可以使代码解决更多的问题
硬要求
- 足够的代码量:达到1000行——新手,达到10000行——熟手,达到50000行——专业选手
如何统计自己的代码行数?
安装 yarn global add cloc
cloc --vcs=git.
可以用来统计一个仓库里的有效代码
如果仓库里有 node_modules 目录等不相关内容,需要把 / node_modules / 写 入.gitignore 文件
- 足够多的概念:闭包、原型、类、继承、MVC、Flux、高阶函数、前端工程化
- 足够多的踩坑经验:把该领域所有的错误都犯一遍,就是专家了
如何踩坑?
做个人项目,全方位踩坑
*本文为鲲游北冥的原创文章,著作权归本人和饥人谷所有,转载务必注明来源