时间 2019-08-22 18:05:00 BlogJava - 专家区
原文
主题 JavaScript
本文原文由作者 "司徒正美" 发布于公众号 "前端你别闹", 即时通讯网收录时有改动, 感谢原作者的分享.
1990 年, 第一个 web 浏览器的诞生; 1991 年, WWW 诞生, 这标志着前端技术的开始.
在这将近 20 年的前端发展史中, 我们经历了从最早的纯静态页面, 到 JavaScript 跨时代的诞生; 从 PC 端到移动端; 从依赖后端到前端可自由打包开发; 从早期的网景 Navigator 浏览器到现在各家浏览器百花齐放......
我们经历了前端的洪荒时代, Prototype 时代, jQuery 时代 , 后 jQuery 时期, 三大框架割据时代, 这其中均是由国外开发者主导, 直到如今的小程序时代, 才是中国开发者独创的.
这是漫长的技术储备下的成果, 最终促成了良好的技术成长收获. 期间的前端发展之路, 崎岖艰难.
《 小程序技术始于微信? 来看看移动端小程序技术的前世今生! http://www.52im.net/thread-2645-1-1.html 》
《 盘点主流移动端跨平台 UI 技术: 实现原理, 技术优劣, 横向对比等 http://www.52im.net/thread-2641-1-1.html 》
《 最火移动端跨平台方案盘点: React Native,weex,Flutter http://www.52im.net/thread-1870-1-1.html 》
《 快速了解 Electron: 新一代基于 Web 的跨平台桌面技术 http://www.52im.net/thread-2616-1-1.html 》
3, 洪荒时代(1990~1994 年)
在 1990~1994 年期间, 前端界发生的大事有: WWW(World Wide Web)的诞生, 浏览器的诞生, JavaScript 的诞生, 没有专业的前端, 页面全是由后端开发的.
1990 年, 万维网之父蒂姆. 伯纳斯 - 李 (Tim Berners-Lee) 在 NeXT 电脑上发明了第一个 Web 浏览器.
▲ 互联网之父 -- 伯纳斯. 李(Tim Berners-Lee)
1991 年 8 月 6 日, Tim 在 alt.hypertext 新闻组贴出了一份关于 World Wide Web 的简单摘要, 这标志了 Web 页面在 Internet 上的首次登场.
1990 年 12 月 25 日, 罗伯特. 卡里奥在 CERN(即位于日内瓦的欧洲原子核研究会)和蒂姆. 伯纳斯. 李一起成功通过 Internet 实现了 HTTP 代理与服务器的第一次通讯 (有关 HTTP 的详细介绍, 请见《 网络编程懒人入门(六): 深入浅出, 全面理解 HTTP 协议 》). 蒂姆. 伯纳斯. 李(Tim Berners-Lee) 爵士作为万维网 (World Wide Web, 简称 WWW 或互联网) 的发明者, 被尊称为互联网之父. 蒂姆. 伯纳斯. 李建立的第一个网站 (也是世界上第一个网站) 是 http://info. cern. ch/, 它于 1991 年 8 月 6 日上网(即北京时间 8 月 7 日).
最早的 Web 主要被一帮科学家们用来共享和传递信息, 全世界的 Web 服务器也就几十台. 由于仅是用来传递信息, 从可视化方式或从传递数量上看, 仅比电报强一点点.
当时还没有 JavaScript, 用的是纯静态的页面.
1993 年, CGI(Common Gateway Interface)出现了, 人们可以在后端动态生成页面.
Perl 由于跨操作系统和易于修改的特性成为 CGI 的主要编写语言. 当然, CGI 也支持其他支持标准输入输出和环境变量的语言编写, 比如 Shell 脚本, C/C++ 语言, 只要符合接口标准即可.
但显然, 页面的内容更新完全由后端生成, 这带来一个明显的缺憾: 每次更新都要整页刷新, 加上早期的网速情况, 这个操作是非常慢的. 因此针对这情况, 人们从多方面着手改进: 编写语言的升级, 浏览器的升级, HTML 的升级.
1994 年, 网景公司成立, 发布了第一款商业浏览器 Navigator. 自从这款浏览器面世后, 微软推出 IE 浏览器. 虽说有竞争才有发展, 但这也埋下了 JavaScript 分裂的种子.
▲ 1994 年, 网景浏览器的截图
同年, PHP 诞生. PHP 能将动态的内容嵌入到 HTML 中, 提升了编写页面的效率与可读性, 其性能也比一般的 CGI 高. PHP 的界定符, 循环语句等的发明, 深刻影响了后来的 ASP,JSP, 乃致后来的 JavaScript 前端模板引擎.
1994 年 10 月, W3C 小组也成立了, 他们负责 HTML 的发展路径, 其宗旨是通过促进通用协议的发展.
待这一切就绪后, JavaScript 于 1995 年诞生了.
传闻, 网景工程师布兰登. 艾克 (Brendan Eich) 只花了 10 天时间设计出 JavaScript 语言, 近乎上帝七日创造世界那么高效. 但也因为工期太短的缘故, 导致许多瑕疵, 因此一直被正统程序员所嫌弃, 直到 Ajax 的出世, 才让人们找到理由忍受它的畸形. 早期的浏览器都配有一个选项, 用来禁止 JavaScript 语言运行.
兰登. 艾克(Brendan Eich):
艾奇不仅是 Mozilla 的联合创始人, 还是 JavaScript 技术的创始人. 自 1998 年起, 他开始深度参与 Mozilla 各方面的发展工作, 包括 Firefox 浏览器和 Thunderbird 的研发. 2005 年, 艾奇被任命为 Mozilla 公司的首席技术官.
JavaScript 主要语言特征:
)借鉴 C 语言的基本语法;
)借鉴 Java 语言的数据类型和内存管理;
)借鉴 Scheme 语言, 将函数提升到 "第一等公民"(first-class citizen)的地位;
)借鉴 Self 语言, 使用基于原型 (Prototype) 的继承机制.
时下, 静态语言大行其道, 类与接口被证明是构建大工程的最佳实践, 人们想不出没有类的语言如何编写业务. 因此当时的微软也打造了另一门运行于浏览器的语言 --VBScript.
如果继续细探 JavaScript 的能力, 你会发现它早期真的非常空洞, 一门没有灵魂的语言, 没有包管理机制, 也没有像 Java 与 C++ 那样的打辅助用的 SDK, 内置的方法也屈指可数. 比如说数组方法, 早期只有 push,pop,shift,unshift,splice,slice,sort,reverse,concat,join 等操作. 动态调用方面, Function 的 apply,call 操作还没有出现!
早年的偷懒, 导致后来不得不补课: 到了 2019 年, 数组上的原型方法, 是原来 3 倍.
除了方法缺乏, 还有性能问题, 大家讨论用 eval 还是 Function, 用哪种循环方式, 用 parseInit 还是~~, 就是为了那一点点的性能提升. 例如 jsperf.com, 就是一个专门研究 JavaScript 性能的网站.
因此 JavaScript 诞生后, 其两大任务就是完善语言特性与提高性能. 这两座大山分别由著名的 prototype.JS 与 jQuery 来搬掉.
来源: http://www.tuicool.com/articles/bqQzqqF