Node.js 嘗鮮筆記

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 LTSv7.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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妒茬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔚晨,更是在濱河造成了極大的恐慌乍钻,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铭腕,死亡現(xiàn)場(chǎng)離奇詭異银择,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)累舷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門浩考,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人被盈,你說我怎么就攤上這事析孽。” “怎么了只怎?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵袜瞬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我身堡,道長(zhǎng)邓尤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮汞扎,結(jié)果婚禮上季稳,老公的妹妹穿的比我還像新娘。我一直安慰自己澈魄,他們只是感情好景鼠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著一忱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谭确。 梳的紋絲不亂的頭發(fā)上帘营,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音逐哈,去河邊找鬼芬迄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昂秃,可吹牛的內(nèi)容都是我干的禀梳。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼肠骆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼算途!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚀腿,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤嘴瓤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后莉钙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體廓脆,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年磁玉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了停忿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚊伞,死狀恐怖席赂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情时迫,我是刑警寧澤氧枣,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站别垮,受9級(jí)特大地震影響便监,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一烧董、第九天 我趴在偏房一處隱蔽的房頂上張望毁靶。 院中可真熱鬧,春花似錦逊移、人聲如沸预吆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拐叉。三九已至,卻和暖如春扇商,著一層夾襖步出監(jiān)牢的瞬間凤瘦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工案铺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔬芥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓控汉,卻偏偏與公主長(zhǎng)得像笔诵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姑子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Node.js是目前非澈跣觯火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特街佑。 眾所周知次酌,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,066評(píng)論 2 58
  • Node.js是目前非常火熱的技術(shù)舆乔,但是它的誕生經(jīng)歷卻很奇特岳服。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,610評(píng)論 2 41
  • 1 Node.js安裝與配置 1.1 Windows平臺(tái)下的Node.js安裝 在過去,Node.js一直不支持在...
    七寸知架構(gòu)閱讀 3,948評(píng)論 0 50
  • 除了妹妹璃搜,我沒有和別人一起洗過澡,就連上大學(xué)的時(shí)候鳞上,都巧妙地避開了舍友这吻,從不曾坦誠(chéng)相見。所以篙议,我沒有七月和安生唾糯。 ...
    你看今已亭亭如蓋閱讀 264評(píng)論 0 0
  • 入秋了移怯,又到了健身香璃、鍛煉的好時(shí)機(jī)了。今天下午出門舟误,外面風(fēng)和日麗葡秒,人行道上夏天多了許多身穿運(yùn)動(dòng)裝,手拿籃球的男生嵌溢,而...
    霸蠻俠閱讀 220評(píng)論 0 0