2015/03/04

node.js 筆記

Debian 7 安裝

apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs

開啟 HTTP 服務

//app.js
var http = require('http');
http.createServer(function(req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('<h1>Node.js</h1>');
  res.end('<p>Hello World</p>');
}).listen(80);
console.log("HTTP server is listen at port 80.");

執行

node app.js

不用每次關閉程式都重新執行

supervisor 會偵測 app.js 是否有變更,如果有變更會自動重啟
安裝 supervisor
npm install -q supervisor
執行
supervisor app.js

同步與非同步

同步讀取檔案
//readFileSync.js
var fs = require('fs'):
var content = fs.readFileSync('test.txt', 'utf-8');
console.log(content);
console.log('done.');
執行結果
I'm a test file.
done.
非同步讀取檔案
//readFile.js
var fs = require('fs');
fs.readFile('test.txt', 'utf-8', function(err, content) {
        if (err) {
                console.error(err);
        } else {
                console.log(content);
}
});
console.log('done.'); 
執行結果
done.
I'm a test file.
nde.js 的非同步運作是使用事件觸發 callback function 來達成,fs.readFile 登錄一個讀檔案的事件,當事件觸發時才執行後面寫的 callback function。所以 node.js 應該有個處理各事件的狀態機循環。利用這個機制,node.js 可以單一執行序完成多線運作,省下不少開執行序耗費的系統資源。

沒有留言: