Node.js实战(一)之概述

一、Node.js介绍

Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js 不是一个 JavaScript 框架,不同于 CakePHPDjangoRails。Node.js 更不是浏览器端的库,不能与 jQuery、ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在 服务端的开发平台,它让 JavaScript 成为与 PHPPythonPerlRuby 等服务端语言平起平坐的 脚本语言 [1]  
Node.js对一些特殊用例进行优化,提供替代的 API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 [2]   Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用 事件驱动, 非阻塞 I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用(引用百度百科介绍)。
 
Node.js官网:https://nodejs.org/en/
Node.js文档地址:https://nodejs.org/en/docs/
 
通过上面的介绍我们可以将Node.js的特点归纳为这么几个?
 
(1)它是一个Javascript运行环境;

(2)依赖于Chrome V8引擎进行代码解释;

(3)事件驱动;

(4)非阻塞I/O;

(5)轻量、可伸缩,适于实时数据交互应用;

(6)单进程,单线程;

 
二、安装
 
安装地址为:https://nodejs.org/en/download/
 
根据不同系统可以选择对应的版本,如下图所示:

windows的安装很简单,几乎是一键安装下一步下一步这样的,至于Linux的话,以Ubuntu16.04为例,sudo apt-get install nodejs和 sudo apt-get install nodejs-legacy输入这两条命令即可安装成功。

三、Node.js的应用场景

参考该篇博文:https://www.cnblogs.com/gassnake999/p/7044583.html

应用场景一共15个,如下所示:

(1) Web开发:Express + EJS + Mongoose/MySQL;

(2) REST开发:Restify;

(3)Web聊天室(IM):Express + Socket.io;

(4) Web爬虫:Cheerio/Request;

(5)Web博客:Hexo;

(6)Web论坛: nodeclub;

(7)Web幻灯片:Cleaver

(8)前端包管理平台: bower.js

(9)OAuth认证:Passport

(10)定时任务工具: later

(11)浏览器环境工具: browserify;

(12)命令行编程工具:Commander

(13) Web控制台工具: tty.js;

(14)客户端应用工具: node-webkit

(15)操作系统: node-os

其实还有更多只不过本文并没有列举出来,总而言之,只有想不到没有做不到。

 
四、Node.js的优缺点
 
主要参考:https://www.cnblogs.com/lsgxeva/p/7993271.html

优点:

(1)高并发(最重要的优点);

(2)适合I/O密集型应用;

缺点:

(1)不适合CPU密集型应用,CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

(2)只支持单核CPU,不能充分利用CPU;

(3)可靠性低,一旦代码某个环节崩溃,整个系统都崩溃;

原因:单进程,单线程

解决方案:

a.Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

b.开多个进程监听同一个端口,使用cluster模块;

(4)开源组件库质量参差不齐,更新快,向下不兼容;

(5)Debug不方便,错误没有stack trace;

猜你喜欢

转载自www.cnblogs.com/youcong/p/10163881.html