Basic Node.js

隨著Node.js的普及,Node.js的教學已經有許多,不論是文章還是電子書,甚至實體書... 本網站學習的目的不在打好Node.js的基礎,而是在分享與介紹常用的各類套件,因此這邊只稍微提一下一些基礎的概念,目的不在求入門的初學者可以快速學會,而是在給寫很久卻迷惘的開發者一個重新複習的機會。

安裝 Node from Source

目前Node.js提供各種版本的實作品,並且提供source code讓高手進行compile的動作,大家可以在這個網址找到相關的安裝程式:

http://nodejs.org

這裡就不介紹那種點一點就裝好的過程,我們來看看使用source code compile的步驟(PS:我習慣把node安裝在/opt/node下面,對應到的執行檔會是/opt/node/bin/node):

  • 下載source code: http://nodejs.org/dist/v0.10.7/node-v0.10.7.tar.gz (一般官網提供的載點如左所示,需要的話也可以直接使用:http://nodejs.org/dist ,找看看您需要的版本)
  • 解壓縮
    # tar -xzf node-v0.10.7.tar.gz
    
  • 檢查環境與設定
    # cd node-v0.10.7
    # configure --prefix=/opt/node
    
  • 編譯與安裝
    # make && make install
    
  • 設定環境變數
    # export PATH=/opt/node/bin:$PATH
    

以上,如果順利的話,你的node.js就安裝好了,可以透過下面指令檢查

  • 檢查版本
    # node -v
    
  • 檢查安裝路徑
    # which node
    

如果上面版本與路徑跟您所安裝的相同,那代表大功告成啦!

NVM

nvm是一套node.js版本管理的方式,可以在:https://github.com/creationix/nvm 找到相關的安裝與設定資訊,下面節錄安裝過程:

curl https://raw.github.com/creationix/nvm/master/install.sh | sh

使用nvm的方式也不難

安裝node.js 0.8.x版本

nvm install 0.8

使用node.js 0.8版本

nvm use 0.8

基本概念

跟JS很像的(應該說一樣)基本操作

對於初學JavaScript/Node.js的開發者,尤其是從物件導向語言進入的,特別容易搞錯,記得,function名字不要一樣...

function foo(x) {
    console.log('Now call X!! x=' + x);
}
function foo(x,y) {
    console.log('Now call XY!! x=' + x);
}
foo('a');

簡述non-block

non-block簡單的說就像是不等待回應的併行處理方式,但,他又不是multi-process或multi-thread,而是一心二用的執行方式... 一般non-block的片段有個簡單的判斷方式,就是在一段執行程式中被丟到function中被呼叫的程式,通常就是non-block的程式片段...我們一般稱之為callback function。

setTimeout(function(){
  console.log("foo...");
}, 1000);

console.log("bar...");

執行結果:

# node examples/basic/000-nonblock.js
bar...
foo...
setTimeout(function(){
  console.log("bar...");
}, 1000);

console.log("foo...");

執行結果:

node examples/basic/000-nonblock2.js
foo...
bar...
ffoo();

fbar();

function ffoo(){
  log('Start foo...');
  setTimeout(function(){
    log("foo...");
  }, 1000);
  log('End foo...');
}

function fbar(){
  log('Start bar...');
  log('bar...');
  log('End bar...');
}

function log(msg) {
  console.log("["+new Date()+"]"+msg);
}

執行結果:

# node examples/basic/000-nonblock3.js
[Mon May 20 2013 17:47:24 GMT+0800 (CST)]Start foo...
[Mon May 20 2013 17:47:24 GMT+0800 (CST)]End foo...
[Mon May 20 2013 17:47:24 GMT+0800 (CST)]Start bar...
[Mon May 20 2013 17:47:24 GMT+0800 (CST)]bar...
[Mon May 20 2013 17:47:24 GMT+0800 (CST)]End bar...
[Mon May 20 2013 17:47:25 GMT+0800 (CST)]foo...

下面是setInterval的展示,每三秒執行一次callback,但是在等待這三瞟的同時,下方的"foo..."已經被執行...

setInterval(function(){
    console.log("bar...");
}, 3000);

console.log("foo...");

執行結果:

# node examples/basic/000-nonblock4.js
foo...
bar...
bar...
bar...
(skip...)

Node.js的循序

延續剛剛對non-block的自以為是定義,其實一般Node.js的語法還是具備循序的特性,

console.log('The start of node...');
/**
 * 一般的for語句,仍然是循序的呈現方式
 */
for(i = 0; i< 3 ; i++ ){
 console.log('=>' + i);
}
console.log('The end of node...');

results matching ""

    No results matching ""