Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm 是全球最大的开源生态系统。
– Node.js 中文网
如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器,并配上 mod_php5 模块和 php-cgi。
从这个角度看,整个“接收 HTTP 请求并提供 Web 页面”的需求根本不需要 PHP 来处理。
不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。
– 菜鸟教程
下面记录了在 Windows 和 Ubuntu 中使用 Node.js 的笔记。
(笔者的系统环境为 Windows 10 64位,Ubuntu 14.4 64位)
安装
Node.js 中文网目前提供了两个版本——v4.4.4
的长期支持版本和 v6.2.0
的最新稳定版本。笔者选择了 v6.2.0
。
(Node.js 官网目前提供的版本是 v6.9.2 LTS
和 v7.3.0 Current
)
Windows
对于 Windows,有 .msi
和 .exe
两种安装方式。下载 .exe
,放在 D:\Nodejs\\
目录。
(此处注意一点,为了方便使用命令 node
,尽量不要修改文件名 node.exe
。如果选择 .msi
安装方式则无此顾虑。)
配置环境变量
将 D:\Nodejs
添加到 PATH
。
检查
node -v
输出如
v6.2.0
安装 npm
从 GitHub 下载 npm
源码 npm-4.0.5.zip
,解压到 D:\Nodejs\\
,安装
D:\>cd Nodejs\npm-4.0.5
D:\Nodejs\npm-4.0.5\>node cli.js install -gf
配置环境变量
将 D:\Nodejs\node_modules
添加到 NODE_PATH
。
检查
npm -v
输出如
4.0.5
Ubuntu
对于 Ubuntu,也有多种安装方式。
- 其一,直接从仓库安装
apt-get install nodejs
apt-get install npm
检查
nodejs -v
npm -v
输出如
v0.10.25
1.3.10
- 其二,下载编译好的版本
wget 'https://nodejs.org/dist/v6.2.0/node-v6.2.0-linux-x64.tar.gz'
tar zxvf node-v6.2.0-linux-x64.tar.gz -C /opt
(该版本已自带 npm
)
配置环境变量 /etc/profile
# Set Node.js environment
export NODE_HOME=/opt/node-v6.2.0-linux-x64
export NODE_PATH=${NODE_HOME}/lib/node_modules
export PATH=${PATH}:${NODE_HOME}/bin
source /etc/profile
检查
node -v
npm -v
输出如
v6.2.0
3.8.9
- 其三,编译源码
略。
可见第一种方式最简单,但缺点就是版本老旧;第二种方式可以使用较新的版本;第三种方式待笔者进阶再做尝试。此处笔者选择了第二种方式以继续。
如果选择第一种方式,可能需要对命令做一个链接,因为其他地方会用到
node
命令而不是nodejs
:ln -s /usr/bin/nodejs /usr/bin/node
测试
编写 HelloWorld 应用 hello.js
// 使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http
var http = require('http');
http.createServer(function(request, response) {
// 发送 HTTP 头部
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送相应数据
response.end('Hello, world!');
}).listen(8888);
// 终端打印以表示启动成功
console.log('Server running at http://localhost:8888/');
运行
node hello.js
浏览器访问 http://localhost:8888/
,出现 Hello, world!
,成功。
应用
在 Ubuntu 上部署 App 版本检查更新服务。
cd /opt/node-v6.2.0-linux-x64
mkdir SchTtableAppVerCheck
cd SchTtableAppVerCheck
安装 Express 框架
Express 是一个简洁而灵活的 Node.js Web 应用框架,提供了一系列强大特性帮助你创建各种 Web 应用和丰富的 HTTP 工具。
– Node.js 中文网
npm install express -g
* 几个附加重要模块
npm install body-parser -g
npm install cookie-parser -g
npm install multer -g
(-g
全局安装)
* npmjs.org
官方可能访问较慢,可以使用淘宝 NPM 镜像,页面有操作方法,不再赘述。
编写应用 app.js
var express = require('express');
var app = express();
// 文件读写模块
var fs = require('fs');
app.get('/SchTtable/appversion.do', function(req, res) {
var data;
try {
// 读取 .js 代码文件所在目录的 .json 数据文件
data = fs.readFileSync(__dirname + '/appversion.json', 'utf-8');
// 检查格式
data = JSON.parse(data);
} catch (err) {
data = {};
console.log(err);
}
res.jsonp(data);
});
var server = app.listen(8080, function() {
var host = server.address().address;
var port = server.address().port;
console.log("http://%s:%s", host, port);
});
console.log('SchTtableAppVerCheck is running.');
完成后 ls
检查
app.js appversion.json node_modules
运行
node app.js
如何后台运行?
有两种方法,其一 nohup
开进程;其二 forever
模块管理。笔者采用第二种方法。
安装 forever
模块
npm install forever -g
运行
forever start app.js
检查
forever list
停止
forever stop app.js
更多用法参考 foreverjs / forever。