首页 技术 正文
技术 2022年11月12日
0 收藏 342 点赞 4,069 浏览 7325 个字

前言

近年来,随着前端的丰富,前后端分离是趋势。各种东西如雨后春笋一般,层出不穷。node.js的出现,使前端真正意义上变成了大前端。

前端由来之HTML发展史

1990 年,Tim Berners-Lee以超文本语言 HTML 为基础,在 由NeXT公司制造的电脑上发明了最原始的 Web 浏览器。总的来说,这一时期浏览器技术还比较简单,很多浏览器都停留在文字和图形处理上,没有太多的新技术,也没有经典的盈利模式和商业模式,整个资本市场对浏览器的关注不高。

1991 年,Tim 作为布道者在 Internet 上广泛推广 Web 的理念,与此同时,美国国家超算应用中心(National Center for Supercomputer Applications)对此表现出了浓厚的兴趣,并开发了名为 Mosaic 的浏览器,于 1993 年 4 月进行了发布。

1994 年 5 月,第一届万维网大会在日内瓦召开。

1994.7 HTML 2.0 规范发布
1994 年 9 月,因特网工程任务组(Internet Engineering Task Force)设立了 HTML 工作组。

1994 年 11 月,Mosaic 浏览器的开发人员创建了网景公司(Netscape Communications Corp.),并发布了 Mosaic Netscape 1.0 beta 浏览器,后改名为 Navigator。

1994 万维网联盟(World Wide Web Consortium)成立,简称 W3C
1994 年底,由 Tim 牵头的万维网联盟(World Wide Web Consortium)成立,这标志着万维网的正式诞生。

JavaScript应运而生

1995 年,网景工程师 Brendan Eich 花了10天时间设计了 JavaScript 语言。起初这种脚本语言叫做 Mocha,后改名 LiveScript,后来为了借助 Java 语言创造良好的营销效果最终改名为 JavaScript。网景公司把这种脚本语言嵌入到了 Navigator 2.0 之中,使其能在浏览器中运行。

1996 年 11 月,为了确保 JavaScript 的市场领导地位,网景将 JavaScript 提交到欧洲计算机制造商协会(European Computer Manufacturers Association)以便将其进行国际标准化。

1997.6 ECMA 以 JavaScript 语言为基础制定了 ECMAScript 1.0 标准规范

1997 年 6 月,ECMA 以 JavaScript 语言为基础制定了 ECMAScript 标准规范 ECMA-262。JavaScript 是 ECMAScript 规范最著名的实现之一,除此之外,ActionScript 和 JScript 也都是 ECMAScript 规范的实现语言。自此,浏览器厂商都开始逐步实现 ECMAScript 规范。

1998.6 ECMAScript 2 规范发布

1998 年 6 月,ECMAScript 2 规范发布,并通过 ISO 生成了正式的国际标准 ISO/IEC 16262 。

1999.12 ECMAScript 3 规范发布
1999 年 12 月,ECMAScript 3 规范发布,在此后的十年间,ECMAScript 规范基本没有发生变动。ECMAScript 3 成为当今主流浏览器最广泛使用和实现的语言规范基础。

动态页面的崛起

JavaScript 诞生之后,可以用来更改前端 DOM 的样式,实现一些类似于时钟之类的小功能。那时候的JavaScript 仅限于此,大部分的前端界面还很简单,显示的都是纯静态的文本和图片。这种静态页面不能读取后台数据库中的数据,为了使得 Web 更加充满活力,以 PHP、JSP、ASP.NET 为代表的动态页面技术相继诞生。

PHP(PHP:Hypertext Preprocessor)最初是由 Rasmus Lerdorf 在 1995 年开始开发的,现在PHP 的标准由 PHP Group 维护。PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入 HTML 中使用。PHP 的语法借鉴吸收 C 语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。PHP 的主要目标是允许网络开发人员快速编写动态页面。

JSP(JavaServer Pages)是由 Sun 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,从而动态生成 HTML、XML 或其他格式文档的 Web 网页的技术标准。JSP 技术是以 Java 语言为基础的。1999 年,JSP 1.2 规范随着 J2EE 1.2 发布。

ASP(Active Server Pages)1.0 在 1996 年随着 IIS 3.0 而发布。2002 年,ASP.NET 发布,用于替代 ASP。

随着这些动态服务器页面技术的出现,页面不再是静止的,页面可以获取服务器数据信息并不断更新。以 Google 为代表的搜索引擎以及各种论坛相继出现,使得 Web 充满了活力。随着动态页面技术的不断发展,后台代码变得庞大臃肿,后端逻辑也越来越复杂,逐渐难以维护。此时,后端的各种 MVC 框架逐渐发展起来,以 JSP 为例,Struct、Spring 等框架层出不穷。从 Web 诞生至 2005 年,一直处于后端重、前端轻的状态。

AJAX 的流行

在 Web 最初发展的阶段,前端页面要想获取后台信息需要刷新整个页面,这是很糟糕的用户体验。Google 分别在 2004 年和 2005 年先后发布了两款重量级的 Web 产品:Gmail 和 Google Map。这两款 Web 产品都大量使用了 AJAX 技术,不需要刷新页面就可以使得前端与服务器进行网络通信,这虽然在当今看来是理所应当的,但是在十几年前AJAX却是一项革命性的技术,颠覆了用户体验。

随着 AJAX 的流行,越来越多的网站使用 AJAX 动态获取数据,这使得动态网页内容变成可能,像 Facebook 这样的社交网络开始变得繁荣起来,前端一时间呈现出了欣欣向荣的局面。

AJAX 使得浏览器客户端可以更方便地向服务器发送数据信息,这促进了 Web 2.0 的发展。

前端兼容性框架的出现

IE 在第一次浏览器大战中击败 Netscape 赢得胜利,垄断了浏览器市场。作为独裁者,IE 并不遵循 W3C 的标准,IE 成了事实标准。

Netscape 于 1998 年被 AOL 收购前创建了 Mozilla 社区,Firefox 于 2004 年 11 月首次发布,并且 9 个月内下载量超过 6000 万,获取了巨大的成功,IE 的主导地位首次受到了挑战, Firefox 被认为是 Netscape 的精神续作。之后 Firefox 浏览器一路奋起直追,逐渐蚕食 IE 市场份额,这引发了第二次浏览器战争。在 2008 年底时,Firefox 的市场份额达到了 25% 以上,IE 则跌至 65% 以下。

第二次浏览器战争中,随着以 Firefox 和 Opera 为首的 W3C 阵营与 IE 对抗程度的加剧,浏览器碎片化问题越来越严重,不同的浏览器执行不同的标准,对于开发人员来说这是一个恶梦。为了解决浏览器兼容性问题,Dojo、jQuery、YUI、ExtJS、MooTools 等前端 Framework 相继诞生。前端开发人员用这些 Framework 频繁发送 AJAX 请求到后台,在得到数据后,再用这些 Framework 更新 DOM 树。

其中,jQuery 独领风骚,几乎成了所有网站的标配。Dojo、YUI、ExtJS 等提供了很多组件,这使得开发复杂的企业级 Web 应用成为可能。

HTML 5技术的诞生

1999年,W3C发布了 HTML 4.01 版本,在之后的几年,没有再发布更新的 Web 标准。随着Web的迅猛发展,旧的Web标准已不能满足 Web 应用的快速增长。2008 年 1 月 22 日,第一份正式草案发布。HTML5 草案发布不久,Google 在 2008 年 12 月发布了 Chrome 浏览器,加入了第二次浏览器大战当中。Chrome 使用了 Safari 开源的 WebKit 作为布局引擎,并且研发了高效的 JavaScript 引擎 V8。

尽管 HTML5 在网络开发人员中非常出名了,但是它成为主流媒体的一个话题是在 2010 年的 4 月,当时苹果公司的 CEO 乔布斯发表一篇题为“对 Flash 的思考”的文章,指出随着 HTML5 的发展,观看视频或其它内容时,Adobe Flash 将不再是必须的。这引发了开发人员间的争论,包括 HTML5 虽然提供了加强的功能,但开发人员必须考虑到不同浏览器对标准不同部分的支持程度的不同,以及 HTML5 和 Flash 间的功能差异。

在第二次浏览器大战中,各个浏览器厂商都以提升 JavaScript 运行效率和支持 HTML5 各种新特性为主要目标,促进了浏览器的良性竞争。在这一场战争中,Chrome 攻城略地,抢夺 IE 市场份额。2013 年,Chrome 超过 IE,成为市场份额最高的浏览器。2016 年,Chrome 占据了浏览器市场的半壁江山。自 2008 年以来,浏览器中不断支持的 HTML5 新特性让开发者激动不已:WebWorker 可以让 JavaScript 运行在多线程中,WebSocket 可以实现前端与后台的双工通信,WebGL 可以创建 Web3D 网页游戏。

另外,TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TypeScript 扩展了 JavaScript 的语法,所以任何现有的 JavaScript 程序可以不加改变的在 TypeScript 下工作。TypeScript 是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性。

Node.js的爆发

JavaScript 最开始就能同时运行在前后端,但在前后端的待遇却不尽相同。随着 Java、PHP、.Net 等服务器端技术的风靡,与前端浏览器中的 JavaScript 越来越流行相比,服务端 JavaScript 逐渐式微。2008 年 Chrome 发布,其 JavaScript 引擎 V8 的高效执行引起了 Ryan Dahl 的注意。

2009年3月

Ryan 利用 Chrome 的 V8 引擎打造了基于事件循环的异步 I/O 框架 —— Node.js 诞生。 至此,Package Manager 是第一件要考虑的事情,目的在于解决代码复用的问题,通过一套模块定义规范来实现复用,目标是:

1.易声明易公开:很容易定义一个 package 并公开出去

2.易安装易引用:要能轻易引用开源模块,而不需要提供太多的 package 元信息,并且装完之后能够很方便地引用其功能

3.即取即用:package 的版本、校验、配置、安装位置等都不必关心,所有对可用性没有明显影响的问题都应该推迟

4.集中管理:共享同一个 package,方便维护

迄今(2019/6/29)为止,npm 仍具有这些特征,也是早期设计所决定的同年,Ryan Dahl 在 JSConf 发表了关于 Node.js 的首次公开演讲,尝试走出去

2010年

Express 与 Socket.io 是生态发展的必然产物,Express 作为 Node.js 生态中资格最老的 Web 开发框架,至今仍有一些难以替代的优势(比如成熟可靠的生态支持)

Heroku 对 Node.js 提供了实验性的支持,这意味着走出去了一小步。同时,一边推广(Google Tech Talk),一边持续演进(迭代 v0.2.0)

2011年

一系列新手教程的出现意味着大家发现了 Node.js 的(学习)价值,之后 LinkedIn、Uber 陆续上船更是印证了这一点,也标志着 Node.js 正式投入生产使用,算是一个重要的里程碑。

Node.js 诞生 2 年后,其 Package Manager 终于正式面世,就叫 npm。最后集成到 Node.js 安装包中,成为Node 模块管理的事实标准,同时,通过 Reddit 论坛、Youtube 讲故事的方式与社区联动,让更多的思想汇聚起来。

2012年

重构完 libuv 之后,Node.js 核心部分已经趋于完备,创始人 Ryan Dahl 功成身退,将决策权交给 npm 的创始人Isaac Schlueter,Node.js 发展趋于成熟的另一个标志是生态中出现了面向企业的解决方案,例如Hapi

Node.js 诞生 2 年后,其 Package Manager 终于正式面世,就叫 npm。最后集成到 Node.js 安装包中,成为Node 模块管理的事实标准,同时,通过 Reddit 论坛、Youtube 讲故事的方式与社区联动,让更多的思想汇聚起来。

2013年

MEAN 组合实践、Web 开发框架的更迭、CMS 的出现意味着Node.js 生态发展进入百花齐放的阶段。另一方面,伴随着在企业场景中的大规模应用,也逐渐暴露出 Node.js 自身的一些潜在问题,如内存管理

2014年

Node.js 又一次交棒,由一直在项目中起重要作用的Timothy J Fontaine接管。同年,Joyent 公司(Node.js 创始人所在的公司,拥有 Node.js 商标)提议成立顾问委员会,打算从完全开放走向自治:这意味着话语权将从开放的开源社区转移到正在使用 Node.js 的几家大公司手里(Joyent、Netflix 等)此举招致开源社区的强烈抵触,因而 fork 出了 IO.js,继续以完全开放的社区驱动模式快速发展。至此,Node.js 第一次走向分裂。

2015年

Q1: 这场冲向 1.0 版本的竞速赛以 IO.js 获胜告终。继而,顾问委员会中的几大公司联手成立了 Node.js 基金会,表态支持社区驱动的开放管理模式。紧接着开源社区作出回应,提议和解,因为管理模式上的冲突已经消除了。

Q2: Node.js 基金会成立后不久,第三任领袖 TJ Fontaine 宣布离开,交由基金会与社区管理。紧接着,和解之后,IO.js 合入 Node.js,从分裂走向统一另外,npm 还提供了私有模块支持,类似于Github 私有仓库,算是对商用的支持。

Q3: IO.js 合入之后,Node.js 迎来了真正意义上的 1.0 版本,版本帝正式从混乱的 0.x 进入 4.x 时代。

Q4: 发布了第一个 LTS 版本,标志着Node.js 进入稳定发布阶段同时,Yahoo、RisingStack 等大公司也纷纷加入基金会,共同参与 Node.js 建设。此外,还召开了第一次 Node Interactive 大会,分享 Node.js 在生产中的应用价值。

2016年

Q1: 一个沸沸扬扬的新闻是 leftpad 事件,暴露出 npm 设计/管理上的一些问题:另外,Express 被纳入孵化项目(incubated project),将获得 Node.js 基金会的技术支持。同时,Google 也加入 Node.js 基金会,队伍越来越壮大。

Q2: npm 注册用户突破 21 万,其中 7 万多人发布过 package。npm 已经成为一个相当庞大的东西,在 Node.js 生态起着不可替代的作用。

Q3: npm 的变化也关乎 Node.js 的发展,像集成安装包一样绑定在一起。另外,第二次 Node Interactive 大会在欧洲举行。

Q4: Yarn 适时推出,算是 npm 客户端的增强版。服务端仍使用 npm registry,这无可撼动继首个 LTS 版本(v4.2.0)之后,v6.0 成为第二个 LTS 版本。

同时,IBM、Microsoft 等巨头开始发力,将 Node.js 推向 8.0 版本另外,继续疯狂开会,第三次 Node Interactive 选在北美。

2017年

Q1: Node.js 的高速发展对行业传统技术栈造成了冲击,为了解决企业面临的人才技能问题,Node.js 基金会推出开发者认证计划,期望通过认证的开发者具备 Node.js 开发能力。NASA 上船标志着“Node.js 上天了”……玩笑,毕竟大型企业上船已经不新奇了。

Q2: Node.js v8.0 发布,巨头发力告一段落,最重要的应该是N-API 支持。在社区+基金会的开放管理模式下,基金会更换领导人已经不再是成立顾问委员会一类的大事了。

Q3: 特性持续迭代,并借助最新 V8 引擎得到一波性能提升。另一件值得关注的事情是,因为 Node.js 基金会下 TSC( Technical Steering Committee,技术指导委员会)的执行力问题,Node.js 再次走向分裂(新的 fork 称为 Ayo,还念 IO.js)。

Q4: 从官方报告来看,Node.js 已经达到了相当大规模的应用。同时,v8.9.0 成为 8.x 的首版 LTS,进入稳定阶段另外,npm 在安全性上也迈出了一小步,支持账号双因子认证。

2018年

Q1: 基金会建站搜罗 Node.js 应用案例,见Application Showcase。另一方面,由于 Node.js 与 JavaScript 密不可分,干脆合作一起开会,就叫 JS Interactive。

Q2: npm 6 在安全方面做了更多的事情,对存在安全问题的 package 有了一些管控措施,如npm audit。HTTP2 等前沿特性也在持续推进,用户调查也没有停下,关注 Node.js 应用趋势另一方面,8.x 时代落幕,进入 10.x,期望搭载V8 引擎 v6.6

Q3: 9 年后,Node.js 的创始人 Ryan Dahl 指出 Node.js 的 10 大设计失误,包括加进来又去掉的 Promise API、安全问题、GYP 构建系统、package.json 入口字段、node_modules 结构等等。回过头看,npm 上大量的案例表明跨版本(从 6.x 到 10.x)的 N-API 支持确有其实践意义。继实验性支持(Node.js 8.5.0 (2017-09-12))之后,正式的 ES Module 支持终于进入议程。

2019年

Q1: 首次介绍基金会内部的工作机制,进一步公开透明。紧接着,Node.js 基金会与 JS 基金会合并,成立 OpenJS 基金会。

Q2: Node.js 创始人再度出发,希望重新建立更好的 Node.js,即deno同时,Node.js 增强了实验性的 ES Module 支持,包括动态引入(import())等,并伴随着 V8 引擎版本升级以及 ES 特性支持,进入 12.x 迭代。另外,npm 经营上似乎有一些变化,出现一波人事变动,可能关乎 Node.js 的发展:因为 Node.js 语言的发展与盈利性质的 npm 公司绑定在一起,一直以来都是个隐患。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,405
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898