Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境。Node.js 使用了一個(gè)事件驅(qū)動(dòng)缭贡、非阻塞式 I/O 的模型惰匙,使其輕量又高效砂吞。Node.js 的包管理器 npm 是全球最大的開源生態(tài)系統(tǒng)铛铁。
– Node.js 中文網(wǎng)
如果我們使用 PHP 來編寫后端的代碼時(shí)隔显,需要 Apache 或者 Nginx 的 HTTP 服務(wù)器,并配上 mod_php5 模塊和 php-cgi饵逐。
從這個(gè)角度看括眠,整個(gè)“接收 HTTP 請(qǐng)求并提供 Web 頁(yè)面”的需求根本不需要 PHP 來處理。
不過對(duì) Node.js 來說倍权,概念完全不一樣了掷豺。使用 Node.js 時(shí),我們不僅僅在實(shí)現(xiàn)一個(gè)應(yīng)用薄声,同時(shí)還實(shí)現(xiàn)了整個(gè) HTTP 服務(wù)器当船。事實(shí)上,我們的 Web 應(yīng)用以及對(duì)應(yīng)的 Web 服務(wù)器基本上是一樣的默辨。
– 菜鳥教程
下面記錄了在 Windows 和 Ubuntu 中使用 Node.js 的筆記德频。
(筆者的系統(tǒng)環(huán)境為 Windows 10 64位,Ubuntu 14.4 64位)
安裝
Node.js 中文網(wǎng)目前提供了兩個(gè)版本——v4.4.4
的長(zhǎng)期支持版本和 v6.2.0
的最新穩(wěn)定版本缩幸。筆者選擇了 v6.2.0
壹置。
(Node.js 官網(wǎng)目前提供的版本是 v6.9.2 LTS
和 v7.3.0 Current
)
Windows
對(duì)于 Windows,有 .msi
和 .exe
兩種安裝方式表谊。下載 .exe
钞护,放在 D:\Nodejs\\
目錄。
(此處注意一點(diǎn)爆办,為了方便使用命令 node
难咕,盡量不要修改文件名 node.exe
。如果選擇 .msi
安裝方式則無此顧慮距辆。)
配置環(huán)境變量
將 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
配置環(huán)境變量
將 D:\Nodejs\node_modules
添加到 NODE_PATH
咙冗。
檢查
npm -v
輸出如
4.0.5
Ubuntu
對(duì)于 Ubuntu,也有多種安裝方式漂彤。
- 其一雾消,直接從倉(cāng)庫(kù)安裝
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
)
配置環(huán)境變量 /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
- 其三挫望,編譯源碼
略立润。
可見第一種方式最簡(jiǎn)單,但缺點(diǎn)就是版本老舊媳板;第二種方式可以使用較新的版本桑腮;第三種方式待筆者進(jìn)階再做嘗試。此處筆者選擇了第二種方式以繼續(xù)蛉幸。
如果選擇第一種方式破讨,可能需要對(duì)命令做一個(gè)鏈接丛晦,因?yàn)槠渌胤綍?huì)用到
node
命令而不是nodejs
:ln -s /usr/bin/nodejs /usr/bin/node
測(cè)試
編寫 HelloWorld 應(yīng)用 hello.js
// 使用 require 指令來載入 http 模塊,并將實(shí)例化的 HTTP 賦值給變量 http
var http = require('http');
http.createServer(function(request, response) {
// 發(fā)送 HTTP 頭部
response.writeHead(200, {'Content-Type': 'text/plain'});
// 發(fā)送相應(yīng)數(shù)據(jù)
response.end('Hello, world!');
}).listen(8888);
// 終端打印以表示啟動(dòng)成功
console.log('Server running at http://localhost:8888/');
運(yùn)行
node hello.js
瀏覽器訪問 http://localhost:8888/
提陶,出現(xiàn) Hello, world!
烫沙,成功。
應(yīng)用
在 Ubuntu 上部署 App 版本檢查更新服務(wù)隙笆。
cd /opt/node-v6.2.0-linux-x64
mkdir SchTtableAppVerCheck
cd SchTtableAppVerCheck
安裝 Express 框架
Express 是一個(gè)簡(jiǎn)潔而靈活的 Node.js Web 應(yīng)用框架锌蓄,提供了一系列強(qiáng)大特性幫助你創(chuàng)建各種 Web 應(yīng)用和豐富的 HTTP 工具。
– Node.js 中文網(wǎng)
npm install express -g
* 幾個(gè)附加重要模塊
npm install body-parser -g
npm install cookie-parser -g
npm install multer -g
(-g
全局安裝)
* npmjs.org
官方可能訪問較慢撑柔,可以使用淘寶 NPM 鏡像瘸爽,頁(yè)面有操作方法,不再贅述铅忿。
編寫應(yīng)用 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 數(shù)據(jù)文件
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
運(yùn)行
node app.js
如何后臺(tái)運(yùn)行剪决?
有兩種方法,其一 nohup
開進(jìn)程;其二 forever
模塊管理。筆者采用第二種方法眯亦。
安裝 forever
模塊
npm install forever -g
運(yùn)行
forever start app.js
檢查
forever list
停止
forever stop app.js
更多用法參考 foreverjs / forever。