版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/84306324
Node.js 是什么
- Node.js 是一个Javascript运行环境(Runtime Enviroment)。后端程序员如果理解这个有障碍的话, 可以想想JRE。
- Node.js 基于Google的V8引擎。实质是对Chrome V8引擎进行了封装。
- Node.js 是运行在服务端的 JavaScript。
Node.js 发布于2009年5月,由Ryan Dahl开发。
Node.js VS JQuery、ExtJS
完全没有可比性, 不是一个类型的概念。Node.js不是JavaScript的Framework, 也不是前端的库。
如果实在要拿个来比的话, 可以与JRE(Java Runtime Enviroment)来比较,Node.js让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言
Node.js 的出现及应用场景
线程与线程阻塞
看一下线程的定义:可以独立运行的最小的CPU单位, 可以在一个进程里并发运行, 共享该进程下的内存地址空间。
注意,线程是共享内存空间的,如果多个线程用到同一个空间的变量时, 则先到显得,后到等待, 也就是加入到阻塞排队序列,也就是常说的线程阻塞。
一般的服务器, 比如Apache的服务器就会出现以上阻塞的状况。
Node.js是怎么做的?
- 单进程,单线程
- 异步I/O
也就是说:通过异步回调的方式, 不需要实时等待执行结果的返回。
NodeJS的工作原理其实就是事件循环。可以说每一条NodeJS的逻辑都是写在回调函数里面的,而回调函数都是有返回之后才异步执行的!
Java等后端语言通过子线程也可以实现并行请求,Node.js 看起来更自然。
NodeJS处理并发的能力强,但处理计算和逻辑的能力反而很弱,通过异步I/O,可以实现对高并发的高性能处理。
####适用场景
- RESTful API
- 前后端分离的Web应用
- 大量 Ajax请求的应用
Node.js 优缺点
优点:
- 高并发
- 适合I/O密集应用
缺点:
1.不适合CPU密集型应用
2. 因为单进程单线程,不能充分利用CPU
3. 可靠性低。
这个缺点可以结合Nngix反向代理和使用cluster模块改善
4.开源库尚未成熟
5.Debug不方便
下载安装
官方网站: https://nodejs.org/en/
有Windows 版本也有linux 版本的。
Windows版本下载之后点击安装一直next 就可以了。以下介绍一下Windows下的安装:
- 下载完成后用ftp上传到Linux任意文件夹。我的是/usr/local。进入到此文件夹。
cd /usr/local
- 解压
tar xf node-v8.3.0-linux-x64.tar.xz
3.进入解压目录,设置node和npm为全局变量
#ln -s /home/chuan/chuansoft/node-v8.3.0-linux-x64/bin/node /usr/local/bin/node
#ln -s /home/chuan/chuansoft/node-v8.3.0-linux-x64/bin/npm /usr/local/bin/npm
5.测试安装结果,命令行执行:
#node -v
#npm -v