🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## Node.js 是什么 Node.js 是一个基于V8的JavaScript运行环境。 - Node.js 是一个Javascript运行环境(Runtime Enviroment)。后端程序员如果理解这个有障碍的话, 可以想想JRE。 - Node.js 基于Google的V8引擎。实质是对Chrome V8引擎进行了封装。 - Node.js 是运行在服务端的 JavaScript。 Node.js 发布于2009年5月,由Ryan Dahl开发。 ## Node.js 与JavaScript框架(比如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,可以实现对高并发的高性能处理。 #### 适用场景 1. RESTful API 2. 前后端分离的Web应用 3. 大量 Ajax请求的应用 ## Node.js 优缺点 优点: 1. 高并发 2. 适合I/O密集应用 缺点: 1.不适合CPU密集型应用 2. 因为单进程单线程,不能充分利用CPU 3. 可靠性低。 这个缺点可以结合Nngix反向代理和使用cluster模块改善 4.开源库尚未成熟 5.Debug不方便 ## 下载安装 官方网站: [https://nodejs.org/en/](https://nodejs.org/en/) 有Windows 版本也有linux 版本的。 Windows版本下载之后点击安装一直next 就可以了。以下介绍一下Linux下的安装: 1. 下载完成后用ftp上传到Linux任意文件夹。我的是/usr/local。进入到此文件夹。 ``` cd /usr/local ``` 2. 解压 ``` tar xf node-v8.3.0-linux-x64.tar.xz ``` 3.进入解压目录,设置node和npm为全局变量 ``` #ln -s /home/oscar/software/node-v8.3.0-linux-x64/bin/node /usr/local/bin/node #ln -s /home/oscar/software/node-v8.3.0-linux-x64/bin/npm /usr/local/bin/npm ``` 5.测试安装结果,命令行执行: ``` #node -v #npm -v ``` 至此, Linux 下按照Node.js 完成。 ***** *****