Node.js初體驗(1)

來源:互聯網
上載者:User

最近寫的文章收到許多朋友的反饋,感謝大家的支援和建議,讓我對堅持寫部落格充滿熱情,一個月一篇文章確實有點少,所以以後儘力多做分享,做好的分享,希望能對朋友們有用。

到新公司的這段時間學到了很多新東西,有好多東西需要去總結去探索,不過事情得一件一件來,今天咱們先從Node開始。註:以後出現的Node即node.js。

先搞點前戲熱熱場 - 為什麼寫這篇文章:

1.前段時間單位有新項目啟動,服務端要做的工作不多也不算麻煩,就是處理一些中介層的服務,而且我們團隊裡面個個都會JavaScript,領導就決定試試伺服器端的JavaScript,結果本人有幸被派去研究了幾天Node,懷著雞凍的心情開始了node.js的篇章,這篇文章也就是為這幾天研究的總結。

2.一個JavaScript工程師如果沒聽過node.js那麼我想你是不是錯過了什麼,每個優秀的前端工程師都有必要去瞭解幕後處理流程,那麼如果又能從JavaScript出發,豈不是一件很美妙的事麼。

3.互連網的火熱使得JavaScript風光無限,且服務端的JavaScript也並不是什麼新技術了,相關的架構也有不少,只是node.js的成功讓他爆髮式的出現在我們的視線中,讓很多前端工程師看到了從前端寫到後端的另一種實現希望。註:node.js 是一個允許開發人員使用 JavaScript 語言編寫伺服器端代碼的架構。

4.今年8月曾在某大公司最後一輪(第五輪)的面試被問到Node.js的問題,相對應的回答那是相當之糟糕,結果怎樣你們懂的,感覺這個問題是導致沒有通過的關鍵點之一...那家公司是我在讀大學的時候就無比嚮往的公司,現在回想起那次經曆和過程,談不上惋惜,畢竟我真的儘力了 - 其實這篇文章更多的也是為了完成自己一個小小的心結...好吧,又扯遠了。

5.歡迎各種轉載,不過請註明出處,謝謝。

Node是個啥?

寫個東西還是盡量面面俱到吧,所以有關基本概念的東西我也從網上選擇性的拿了些下來,有些地方針對自己的理解有所改動,對這些概念性的東西有過瞭解的可選擇跳過這段。

1.Node 是一個伺服器端JavaScript 解譯器,可是真的以為JavaScript不錯的同學學習Node就能輕鬆拿下,那麼你就錯了,總結:水深不深我還不知道,不過確實不淺。

2.Node 的目標是協助程式員構建高度可伸縮的應用程式,編寫能夠處理數萬條同時串連到一個物理機的串連代碼。處理高並發和非同步I/O是Node受到開發人員的關注的原因之一。

3.Node 本身運行Google V8 JavaScript引擎,所以速度和效能非常好,看chrome就知道,而且Node對其封裝的同時還改進了其處理位元據的能力。因此,Node不僅僅簡單的使用了V8,還對其進行了最佳化,使其在各種環境下更加給力。(什麼是V8 JavaScript 引擎?請“百度知道”)

4.第三方的擴充和模組在Node的使用中起到重要的作用。下面也會介紹下載npm,npm就是模組的管理工具,用它安裝各種 Node 的軟體包(如express,redis等)並發布自己為Node寫的軟體包 。

安裝Node

在這簡單說說在window7和linux兩種環境下安裝Node。安裝的時候一定要注意Python的版本,多次因為Python版本的問題安裝失敗,建議2.6+的版本,低版本會出現Node安裝錯誤,查詢Python版本可在終端中輸入:pyhton -v

1.先介紹linux下的安裝吧,Node在Linux環境下的安裝和使用都非常方便,建議在Linux下運行Node,^_^...我使用的是Ubuntu11.04

a.安裝依賴包:50-100kb/s大概每個包一分鐘就能下載安裝完成

 
  1.  sudo apt-get install g++ curl libssl-dev apache2-utils   
  2.  sudo apt-get install git-core 

b.在終端一步步運行一下命令:

 
  1. git clone git://github.com/joyent/node.git     
  2. cd node  
  3. ./configure  
  4. make     
  5. sudo make install 

安裝順利的話到這一步Node就算安裝成功了,2M的網路用了共計12分鐘。

註:如果不用git下載也可以直接下載源碼,不過這樣下載安裝需要注意Node版本問題。使用git下載安裝是最方便的,所以推薦之。

2.在Windows下使用Cygwin安裝Node,這個方式不太推薦,因為真的需要較長時間和較好的人品。我的系統是 win7旗艦版

Cygwin是一個在windows平台上啟動並執行unix類比環境,:http://cygwin.com/setup.exe。

下載好Cygwin後開始安裝,步驟:

a.選擇下載的來源 - Install from Internet

b.選擇下載安裝的根目錄

c.選擇下載檔案所存放的目錄

d.選擇串連的方式

e.選擇下載的網站 - http://mirrors.163.com/cygwin

f.麻煩就麻煩在這步,考驗人品的時候到了。需要的下載安裝時間不確定,反正需要比較長的時間(超過20分鐘),偶爾會出現安裝失敗的情況。單擊一下各個程式包前面的旋轉箭頭表徵圖選擇你想要的版本,選中時會出現了"x"號表示已經選中了該程式包。選擇需要下載的程式包:

 
  1. Devel包:  
  2. gcc-g++: C++ compiler  
  3. gcc-mingw-g++: Mingw32 support headers and libraries for GCC C++  
  4. gcc4-g++: G++ subpackage  
  5. git: Fast Version Control System – core files  
  6. make: The GNU version of the ‘make’ utility  
  7. openssl-devel: The OpenSSL development environment  
  8. pkg-config: A utility used to retrieve information about installed libraries  
  9. zlib-devel: The zlib compression/decompression library (development)  
  10. Editor包:vim: Vi IMproved – enhanced vi editor  
  11. Python包:把Default切換成install狀態即可  
  12. Web包:  
  13. wget: Utility to retrieve files from the WWW via HTTP and FTP  
  14. curl: Multi-protocol file transfer command-line tool 

上個,以下載zlib-devel為例:

其上幾步走完才算把環境搭建完成,可是現在還沒有到安裝Node,還需要在Cywgin的ASH模式下執行rebaseall,步驟如下:

a. cmd命令列

b. 進入cygwin安裝目錄下的bin子目錄

c. 運行ash進入shell模式

d. ./rebaseall -v

e. 沒有錯誤就關閉命令列視窗

好了,現在到下載安裝Node了,啟動Cygwin.exe後輸入:

 
  1. $ wget http://nodejs.org/dist/node-v0.4.12.tar.gz  
  2. $ tar xf node-v0.4.12.tar.gz  
  3. $ cd node-v0.4.12  
  4. $ ./configure  
  5. $ make  
  6. $ make install 

3.直接下載node.exe檔案

nodejs.org下載較慢所以我在網盤上傳了一個,:http://www.everbox.com/f/VhyL6EiGF5Lm3ZSRx85caFDIA5

聽說有不太穩定的問題,不過你假如只是想先在windows下瞭解Node,個人感覺這個方法比你裝個Cygwin好很多。

註:原本不太想寫安裝Node這段,可是為了這篇文章的全面性還是寫了,沒想到一寫就是那麼長一段了...茶几了

“Hello World” - 為什麼每次見到這句心情都會小激動,不解...

首先,建立個hello.js的檔案,在檔案中copy如下代碼:

 
  1.  var http = require('http');  
  2. http.createServer(function (req, res) {  
  3.   res.writeHead(200, {'Content-Type': 'text/plain'});  
  4.   res.end('Hello World\n');  
  5. }).listen(1337, "127.0.0.1");  
  6. console.log('Server running at http://127.0.0.1:1337/'); 

代碼邏輯:

a. 全域方法require()是用來匯入模組的,一般直接把 require() 方法的傳回值賦值給一個變數,在 JavaScript 代碼中直接使用此變數即可 。require("http") 就是載入系統預置的 http 模組

b. http.createServer 是模組的方法,目的就是建立並返回一個新的web server對象,並且給服務綁定一個回調,用以處理請求。

c. 通過 http.listen() 方法就可以讓該 HTTP 伺服器在特定連接埠監聽。

d. console.log就不用多說了,瞭解firebug的都應該知道,Node實現了這個方法。

註: 想瞭解具體細節請查看文檔 cnodejs.org/cman/all.html#http.createServer

接著運行Node伺服器,執行hello.js代碼,成功啟動會看見console.log()中的文本。有圖有真相:


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.