[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 完成。
*****
*****
- 0. 前言
- 1. 基础篇
- Node.js 入门介绍与安装
- Node.js运行模式与入门实例
- npm介绍及与Node.js关联
- Webpack 快速介绍及入门示例
- 模块
- webpack
- gulp
- 2. 进阶篇
- Node.js与Apache比较
- Node.js VS JavaScript
- CommonJS、AMD、CMD与ES6
- 3. 框架篇
- Node.js之Express快速介绍与入门示例
- 4. 实战篇
- 调试器监听
- webpack入门示例
- 5. 补充篇
- 语法
- 前端包管理工具:npm、cnpm、yarn
- 6. 问题解决篇
- webpack之options has an unknown property ‘contentBase‘. These properties are valid: