作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Node.js概述
1>.Node.js简介
Node.js是一个能够在服务器端运行的JavaScript的开放源代码,跨平台JavaScript运行环境。
Node.js采用Google的V8引擎运行JS代码,使用事件驱动,非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。
Node.js大部分基本模块都用JavaScript编写,在Node出现之前,JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序通常在用户的浏览器上运行。
目前,Node.js已被IBM,Microsoft,Yahoo!,Walmart,Groupon,SAP,LinkedIn,Rakuten,Paypal,Voxer和GoDaddy等企业采用。
2>.Node.js之父-瑞安·达尔(Ryan Dahl)简介
Ryan Dahl并非科班出身(即"非计算机专业")的开发者,在2004年的时候他还在纽约的罗彻斯特大学数学系读博士。
2006年,也许是厌倦了读博的无聊,他产生了"世界那么大,我想去看看"的念头,做出了退学的决定,然后一个人来到智利的Valparaiso小镇。
从那时起,Ryan Dahl不知道是否因为生活的关系,他开始学习网站开发,走上了码农的道路。那时候Ruby On Rails很火,它也不例外的学习了它。
从那时候开始,Ryan Dahl的生活方式就是接项目,然后去客户的地方工作,在他眼中,那公司和上班其实就是去哪里旅行。
Ryan Dahl经过仅仅两年的工作后,成为了高性能Web服务器的专家,从接开发应用到变成专门帮客户解决性能问题的专家。期间他开始写一些开源项目帮助客户解决Web服务器的高并发性能问题,它尝试了很多种语言,但是最终都失败了。
在他快绝望的时候,Google的V8引擎来了。V8满足他关于高性能WEB服务器的想象。于是在2009年2月它开始着手编写Node.js。
3>.Node.js的简史
2009年:
瑞安·达尔(Ryan Dahl)在GitHub上发布的node的最初版本。
2010年1月:
Node的包管理器npm诞生。
2010年底:
joyent公司赞助Node的开发,瑞安·达尔(Ryan Dahl)加入旗下,全职负责Node。
2011年7月:
Node超越Ruby on Rails,称为Github上关注度最高的项目。
2012年1月:
瑞安·达尔(Ryan Dahl)离开Node项目。
2014年12月:
Fedor Indutny在2014年12月制作了分支版本,并起名"io.js"。
2015年初:
Node.js基金会成立(其中有IBM,Inter,Microsoft,Joyent公司参与),在此之前Node.js项目有Joyent这一家公司维护,这也是为什么上面有"io.js"分支的诞生。
2015年9月:
Node.js和io.js合并,Node 4.0发布。
2016年:
Node 6.0发布。
2017年:
Node 8.0发布。
温馨提示:
上面只提到了Node.js的偶数版本(Node 4.0,Node 6.0和Node 8.0),也就是说是存在Node 5.0以及Node 7.0版本的,但在生产环境中也推荐大家使用偶数版本,因为奇数版本相对来说可能有不稳定的因素!
Node官网地址:
https://nodejs.org/en/
二.Node.js和JavaScript的区别
JavaScript是在浏览器中运行的代码,他的作用域只在浏览器中,并不能超出浏览器所有的权限,而Node.js则跳出了浏览器的限制,它可以像Java,Python,Golang这样的编程语言一样,可以直接和操作系统进行交互;
从C/S架构来说,JavaScript是在客户端浏览器上渲染的程序,而Node.js既可以充当Client角色,也可以充当Server端角色;
三.Node的应用场景
Node的用途:
(1)Web服务API,比如REST;
(2)实时多人游戏;
(3)后端的Web服务,例如跨域,服务器端的请求;
(4)基于Web的应用;
(5)多客户端的通信,如即时通信;
温馨提示:
Node.js是基于单线程实现的,但是后台拥有一个I/O线程池。可以说Node.js成也单线程,败也单线程,尽管单线程的处理效率很高,但也是有极限的。不过值得庆幸的是,Node.js支持分布式,即单节点性能达到瓶颈,我们可以增加机器来解决性能问题。
综上所述,在超大并发的场景下,Node.js并不太适合做后端的服务器开发语言,建议还是选择支持高并发的语言,比如Java,C++,Golang等。当然,Python也是可以的,但由于GIL的存在,因此它在后端开发能力上相比Java和Go,并没有特别可圈可点的地方。
NodeJS的运行环境部署:
https://www.cnblogs.com/yinzhengjie/p/14221305.html