摘要:[MAN鐵人賽]Day 16:NodeJS - Intro & Setup
NodeJs
Node.js顧名思義便是使用JavaScript語言作為基礎的框架,特別的是,相對於jQuery或是YUI等在瀏覽器中運行使用的JavaScript框架,Node.js是作為網站程式的後端框架,就如同PHP或是Java一般開發網站。
換句話說,JavaScript不只可以跑在瀏覽器中,還可以當做網站的伺服器!這個想法是非常的新鮮有趣,主要的原因是在於隨著Gmail等AJAX網站以及技術的興起,許多的程式開發者紛紛投入心力鑽研JavaScript,並且有許多開發心得、優化技巧陸續被發掘,加上瀏覽器之間的競爭越來越激烈,JavaScript的執行效能持續性的突破,因此最終便誕生了Node.js。
有幾個強大的優勢
- 以JavaScript為開發語言(建築在Google Chrome所開放原始碼的V8 JavaScript引擎上),可統一前後台開發語言降低工程師學習多語言的困擾
- node.js是事件驅動(event-driven)的組成概念
- 無阻塞特性(non-blocking),可處理大量I/O的服務端口,避免Server端阻塞
- 強大的社群支援與NPM套件管理概念,讓擴充與使用更加方便
NodeJS架構如下(來源):
NodeJS Event Loop架構(來源):
而任何一項技術有優點一定就有缺點,NodeJS最大的缺點是不適合做CPU運算等需要多執行序的網頁程式,因為JavaScript本身就是一個單執行序的架構,此缺點的探討可以參考此
但回過頭來說,如果你只是要架設一個很簡單與輕量的網站的話NodeJS應該是你非常好的解決方案了。
這邊推薦一個yahoo工程師對NodeJS的介紹(48分鐘英文解說),這個介紹講得非常詳細與完備,強烈建議大家能聽聽看,順便當英文學習摟.
而NodeJS本身提供的API可參考此處
Setup
- 至Node.js官方下載軟體
HelloWorld with NodeJS
-
建立一個HelloWorld.js的文件檔案並將下方內容寫入檔案內
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
-
接者在terminal至該檔案目錄內執行下面指令
node example.js
這邊會得到看到terminal給你下面的回應代表正常運作
Server running at http://127.0.0.1:1337/
-
此時你在透過網頁瀏覽器打開http://127.0.0.1:1337/ 即可看到Hello World字樣
結語
NodeJS已經是一個F2E不可不學的技術,除了本身可以架設成Backend Service外其實很多如Grunt與Phonegap等專案已經都改成透過NodeJS來Build project的方式,學好NodeJS即可前後端皆用JavaScript一條龍處理到底~!Day-16 over!