- Node.js[5] connect & express簡介
- Node.js[4] 第一個模塊
- Node.js[3] 俯瞰API (整理中)
- Node.js[2] Hello Node
- Node.js[1] 俯瞰NPM
- Node.js[0] 簡介
學習node的過程很美妙,不斷有新的概念出現;這個過程也大大拓展了技術視野,之后會把學習中遇到的點點滴滴整理出來。
Node是什么?
“Node.js”是官方稱呼,交流多用node簡稱。
Ryan Dahl給Chrome V8 Javascript引擎添加了一組友好的Javascript API,並讓V8能夠獨立運行於多個平台上(暫且把V8看做是js虛擬機),這樣js也能寫出跨平台非瀏覽器頁面的應用。
關於node是什么?github上node項目的readme標題為“Evented I/O for V8 Javascript”,也能看出node給自己的定位; 下面是一小段node代碼,實現了一個簡單http server:
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/');
node本身只提供實現應用程序的精簡api集合。為了讓node能提供更強大的功能,Ryan借鑒了Perl、Python等語言的經驗,提出了NPM(Node Packaged Module,暫且叫模塊)的概念,並創建了一整套的模塊發布、安裝、依賴管理機制;node后來的成功,也是所有node社區成員共同努力的結果,NPM起了關鍵的作用。
更多node介紹可查看這里。
Node為何成功?
node最初的宣傳“噱頭”是單線程異步編程模型;單線程意味着編程復雜性更容易控制;node事件驅動的異步編程模型實現的非阻塞IO,可以編寫出更高並發量的網絡程序(如web server);對某些特定應用場景是非常有吸引力的,比如Twitter的tweet處理隊列,其他應用場景包括:RESTFUL API、實時數據統計;總的來說,高並發小數據量的場景比較適合node。
不可否認node概念新穎,初期尤其對前端工程師吸引力巨大,因為不需要花費太大代價就能實現瀏覽器之外的相當豐富的功能;從NPM Registry也能看出來,早期的項目以前端為主。
node發展飛快,隨着node名聲鵲起,也吸引了更多非前端程序員的加入,我們看到了諸如關系數據庫、no-sql、MVC framework 等類型更為豐富的模塊出現了。
node發展過程獲得了node社區的大力支持,從NPM Registry站點的火熱程度可見一斑;截止2012-11-17已有17700+模塊,目前仍然在持續增長中(后續會專門介紹NPM)。
這些因素一起推動了node在數年內就風靡全球。
“磨刀不誤砍柴功”
Node資源
現在安裝node變得很簡單,支持多個平台;
入門書籍,好書不在多
- 《NodeJs Beginner》中文版,開源node教程;實現了一個完整精悍的Web應用,包含:server、router、handler
- 《Node for Front End Developers》,簡練而較全面地介紹了node的網絡、數據、MVC等方面的原生技術和第三方模塊
更多的資源可以訪問nodejs.org
Git & Github
進入node的世界,git成了最常見的源碼管理工具;希望多了解git,可以參考開源git教程《ProGit》。
github是目前最火的git遠程庫托管中心;github制作之精良、熱度之高只有親身體會一下才能了解;目前github上前端項目總量排名第一。
IDE
Sublime、Notepad++、EditPlus、Ultra Editor都行;個人覺得WebStorm實在強悍,值得一試。
之后的安排
希望在開始介紹代碼之前能讓大家看到一個活的node,一個真正改變我們技術生活的node;所以首先介紹NPM,簡介+所有模塊分類+熱門模塊介紹;之后可能有:
- node開發環境
- node api結構剖析
- 動手開發一個模塊
- connect & express簡介
- connect源碼分析
- express源碼分析
- grunt
- …
暫時想到這些。