怎樣有效地學習 Node.js?
要學相關的哪些東西, 哪些可靠資料, 怎樣的順序 ?
還有比較關心有沒有整體梳理 node 各種工具如何一起協同運作的博客和文檔 ?
這個回答已經是三年前了,可能沒那麼準確了,我會找個時間來更新一下。
Node.js 之 log4js 完全講解 - 前端外刊評論 - 知乎專欄
老的回答-------------------------------------------------------------------------------------------------------------
NodeJs現在處於發展階段,相關資料和書籍不是很多。說開了NodeJs只是JavaScript作為CommonJS的實現,使得JavaScript在伺服器端有了用武之地,所以NodeJs從語法層面來說還是JavaScript。但是與客戶端的JavaScript又有所區別。注意以下幾點:- 要學習NodeJs,必須有一定的JavaScript基礎,理解事件模型,了解JavaScript的語法和特性,理解JavaScript面向對象編程
- 學習NodeJs類似於Python等代碼組織的方式——包機制,require和exports。
- 一些基本的操作系統,HTTP等網路通信,資料庫(尤其是非關係資料庫),Web編程的知識有所了解。
- http://nodejs.org/ 官方網站,最簡單的示例,詳盡的文檔(中文版http://cnodejs.org/cman/)
- github上的https://github.com/joyent/node以及各種周邊庫
- The Node Beginner Book the node beginner book,深入淺出,做完很有成就感
- 簡單的NodeJs MVC http://cnodejs.org/blog/?p=342,出自CNODEJS中文社區,上面的其他文章多訂閱多看看
- Google和訂閱,Google各種東西教程資料,好的blog就訂閱下,不斷學習,比如說http://howtonode.org/
- 參家一些線下的分享會,多分享多進步
- npm:NodeJs包管理器
- express:伺服器端比較流行的MVC框架,處理服務請求,路由轉發,邏輯處理
- mongoose:mongodb包裝,更方便使用資料庫
- http://socket.io:實現服務端和客戶端socket通信解決方案
- backbone:客戶端MVC框架,編寫客戶端應用(豆瓣說)
- coffeescript:提高JavaScript的可讀性,健壯性
- zombie:瀏覽器子集,編寫html解析器,輕形javascript客戶端測試
首先,清楚Node.js究竟是什麼?Node.js 究竟是什麼?
官方文檔和github上面的代碼無疑是最好的學習資料。
再推薦幾個不錯的文檔:1.這個是中文版的經典入門教程:Node入門2. Express.js 中文入門指引手冊3. Mongoose 基本功能使用,對於mongoose的學習,官網的文檔和入門指引很好。再然後就是自己動手做一些東西,慢慢摸索,可以參考這個,如何合理部署nodejs文件,也可以跟據自己的經驗去部署。對了,還有這個NodeCloud - Node.js resources。最後強烈建議多閱讀github上跟Node.js相關的模塊的源碼。1-31更新:
這裡有個不錯的專欄: 深入淺出Node.js相關的內容2-26更新:
全面認識 Node.js ,這個不錯,裡面資料挺多。使用 Node.js 作為完整的雲環境開發堆棧5-29更新:
補充一個還不錯的系列教程: 從零開始nodejs系列文章國內關於nodejs的書籍,推薦看朴靈大大的《深入淺出NodeJs》和趙坤的《NodeJs實戰》(建議有一些基礎再看),完事再看看《用AngularJs開發下一代Web應用》就更好了。看我的 Node.js 開源課程:alsotang/node-lessons · GitHub
以前回答了 如何系統地學習Node.js?,裡面列出了系統掌握 Node 可以從哪方面入手,但是沒有給出更加詳細的路線,而這個問題很適合聊怎樣有效地掌握 Node。
Node 常見的使用場景中,Web 和工具佔了大頭,所以這裡以 Web 開發為例。而 HTTP 協議在 Web 開發中實在是太重要了,所以應該儘早掌握,看 HTTP權威指南 或者薄一點的 圖解HTTP。拿到一段 HTTP 請求原始信息,能夠分清楚 method, path, query string, headers 和 body 等。
在掌握了 HTTP 協議之後,可以使用現成的 Web 框架(比如 Express(稍微舊了點的書,但是還能看 Node與Express開發))寫項目,先從簡單的開始,熟練掌握之後再寫相對複雜的。
比如留言板就非常簡單,能提交留言的內容,能夠顯示提交之後的內容就行。實現需求的同時要能準確區分 HTTP 請求/響應信息的相關部分。
掌握留言板之後就可以考慮寫 Todo,Todo 在留言板的基礎上增加了修改、刪除和標記完成的功能,其他部分基本上沒有什麼差異,同樣地,需要區分 HTTP 請求/響應信息的相關部分。
接著可以考慮加上用戶功能,這個時候需要 Session 和 Cookie,這個依然是 HTTP 協議的內容。並且數據如何關聯也需要掌握,然後在 Todo 的基礎上增加其他用戶可以評論的功能,進一步掌握數據如何關聯。
到了這一步就可以寫規模稍微大一點的程序了,比如博客、論壇(參考 CNode:Node.js專業中文社區)等。寫這些項目的過程中,一方面熟悉 HTTP 協議,一方面熟悉 Express 的用法。
這兩個都熟悉之後可以進行下一步的學習,實現一個 Web Server,然後在自己的 Server 上重新寫上面提到的項目,這個是最終的目標。實現的過程中需要用到 知乎用戶:如何系統地學習Node.js? 里提到的那些庫,一邊實現,一邊掌握這些庫。
當然或許不知道如何實現,那可以換一種方式,掌握 Express 的實現方式,也就是讀 Express 的源碼,把 Express 的源碼徹底搞懂(當然換一個框架也行,如果不知道選什麼框架,那麼就選 Express),這樣上面的項目裡面的代碼背後發生了什麼都能非常熟悉,這個時候自然很好地掌握了 Node Web 開發。
重視概念,不要太看重照貓畫虎的那種快捷成就感,認真地理解核心概念,從Javascript開始,先適應這種語言的思考方式,非同步,事件驅動,原型等等;然後去理解nodejs的核心,EventEmitter,Buffer,Stream,模式如Middleware,Observer,PubSub,這些東西你寫一萬遍只有簡單路由的tutorial,不專門去理解就不會理解,多少年經驗都沒用。而理解了那些東西你才可以成為專業程序員,具備程序設計的能力。
不少人覺得node編程就是用express還是用koa,或者egg,或者覺得就是ES6,7的新語法怎麼用,或者就是各種掉進工具欄的陷阱,這些都是細枝末節,web框架大同小異,寫路由是沒有技術含量的東西,語法只是糖,代替不了你自己的理解和智慧,特別是要自己架構應用的時候,工具鏈幾個月一變,只是開發的一種補充,絕不是重點。
概念第一
IT浪人
這是講Node核心的書
Node.js in Practice
Node.js the Right Way: Practical, Server-Side JavaScript That Scales
Node.js Design Patterns
starkoverflow 上相似問題的答案總結http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-nodejs
可以查看下 阿里B2B前端的 七天學會nodeJShttp://nqdeng.github.io/7-days-nodejs/
nodejs就是一種語言,我們可以通過學習一種語言的步驟去入手。1、了解第一步了解,就是知道該語言的概括,包括什麼內容,有什麼好處,有什麼缺點,能做點什麼。這一步驟是引起自己學習的興趣,或者是學習的需求,明白自己為什麼要學這麼語言。2、入門入門,至少看過一本完整的相關書籍或者教程。通過書籍,了解該語言的特性、語法,能夠敲一些簡單的代碼,比如hello world什麼的,也知道這麼語言包含哪些基礎教程。
3、熟悉
熟悉階段主要是通過實質例子去學習,可以參考別人的例子,自己重寫敲,然後經歷各種調試,修bug的艱苦過程。這也是學習一門語言進步比較快,比較有成就感的介紹,同時也是最痛苦,最容易放棄的階段,頂住了,你就這門語言的初級用戶。4、掌握掌握階段也是以實操為基礎,這裡和熟悉不一樣就是,做一些新的例子,最好是日常碰到的項目,通過信語言去實現,這裡除了考驗代碼的基礎語法,更重要的是實現思維的學習,每一種語言都有思維,這個階段就是好好體會。這個階段也會很艱難,項目不要去看數量,而是質量,項目的完整性很重要。5、熟練熟練怎麼說呢,這個階段不斷實現新的項目是重點,對新語言可以說是信手拈來,有問題能夠自己解決或者知道如何去找解決辦法,熟悉這個新語言的常見問題。能夠發現別人使用這個語言的一些問題,並能夠嘗試去解決。另外一點更重要的就是,對新語言在項目中的積累,能夠為後期的項目提高效率。完成這個階段,中高級不在話下。6、精通精通,這個很難用語言體會。畢竟在前端混了兩年多,沒敢跟誰說我精通了某種語言。精通css?css看似簡單,但是真正的精通恐怕還是很高深。我對這個階段的理解是:可以很輕易的用這門語言實現項目,並且能夠有優化的思路。能夠自己發現並解決項目中的問題,能夠幫別人發現並解決這門語言的問題和遺憾。另外一個重點是,能夠教別人使用這種語言。「教」是重點,比如能夠寫個入門教程什麼的。嘗試探討更深入的問題。。。關鍵在於理解 EventIO 思路和回調函數。
個人意見,總之;要自我毀滅一次。
現在網路資料非常之多,我就不列舉了,學習順序倒可給點建議:
1.安裝node環境;
2.熟悉node的npm模塊管理命令,知道每條命令幹什麼,可以用來做些什麼事情;
3.基於node的http模塊構建簡單的sever,這個node官網應該是有的,理解這個簡單的server是怎樣接收和返回http;
4.在3的基礎上,做些類似登錄具有交互的功能,給瀏覽器發送cookies;
5.理解3,4的步驟再去看看express框架的基礎搭建,再利用3,4的學習方法投入到express框架當中;
6.基於express框架和node官網api(path模塊,fs模塊等常用),做些小項目,做管理系統啊什麼的都可以
看API,如果是nodejs入門我建議看看Node.js 台灣社群協作電子書看了之後寫一個簡單的博客系統,那樣你就慢慢的上手了
2014年2月24日修改:
主站:
node.js
Node.JS on OpenShift
Node.js on OpenShift? You bet your JavascriptGetting Started with Node.JS on OpenShift
Getting Started with Node.JS on OpenShiftOn Windows 7, OpenShift requires CygWin and you must run from that CLI.
rhc app create –a NodeJSBrownBag –t nodejs-0.6
rhc app cartridge add –a NodeJSBrownBag –c mongodb-2.0rhc app cartridge listgit commit –a –m 「Added some source code」git push
My existing NodeJS demo app in progress.
OpenShift / Red Hat Cloud Notes:
http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/User_Guide/sect-User_Guide-Deploying_Your_Application_to_the_Cloud.html
Add Cartridges for NodeJS, Mongo, … from the openshift website
http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/User_Guide/sect-User_Guide-Using_Cartridges.htmlRockMongo
Web Dev Framework for Node.JS
Express - node.js web application frameworkNode Debugger
smtlaissezfaire/ndb 路 GitHubNode Inspector / Web Debugger for NodeJS
https://github.com/dannycoates/node-inspectorBDD for Node (Vows)
Vows ? Asynchronous BDD for NodeExpresso TDD for Node
http://visionmedia.github.com/expresso/Unit Test Runner
tmpvar/mjsunit.runner 路 GitHubhttp://Socket.IO
Socket.IO: the cross-browser WebSocket for realtime apps.Tracking NodeJS Modules
http://eirikb.github.com/nipster/Node.JS and MongoDB for Beginners
Nodejs and MongoDB, A Beginner"s ApproachHeroku + Node.js + MongoDB (not for free heroku)http://embeddedfun.blogspot.com/2011/11/heroku-nodejs-mongolab.htmlGetting Started with MongoDB and Node.JS
Node.js and MongoDBGetting Started with Node.js on Heroku
Getting Started with Node.js on HerokuFree Guide to Node.JS
The Node Beginner BookNode.JS Tutorial
Node.js for beginners, part 1Node.JS Docs
- docs.nodejitsu.comAPI
Node.js v0.10.26 Manual DocumentationHTTP API
HTTP Node.js v0.10.26 Manual DocumentationNode Manual
http://nodemanual.org/latest/From Java to NodeJS
http://n0tw0rthy.wordpress.com/2012/01/08/from-java-to-node-js/Planet NodeJS
http://planetnodejs.com/Useful Node.js Tools, Tutorials And Resources
Nide Node.js IDE for CLI
http://coreh.github.com/nide/VJET IDE for Eclipse
eBay 路 GitHubInstall in Your Eclipse Using:
eBay 路 GitHubTypeLibs for VJET
eBay 路 GitHubnode.js News
http://nodebits.org/node.js Patterns
http://nodebits.org/distilled-patternsJavaScript Checker
JSHint, a JavaScript Code Quality ToolJAKE Build Tool for Node.JS
Intro to JakeNode.JS Video
Node.js Step by Step: IntroductionNode Guide
Felix"s Node.js GuideMaster Node.JS Book
http://visionmedia.github.com/masteringnode/Stella Laurenzo
http://nodetuts.com/tutorials/21-nodejs-mongodb-and-mongoose-11.html#video
Tim Caswell on Learning Node.js
Streaming file uploads with node.js
appendix_1 - Node.js v0.6.1 Manual Documentation
3rd Party Modules
Modules · joyent/node Wiki · GitHubUnderstanding the node.js event loop ? Mixu"s tech blog
Part 1: Understanding event loops and writing great code for Node.js
Node.js, Doctor"s Offices and Fast Food Restaurants
Shine Technologies on WordPress.com
blog.nodejitsu.com
DailyJS: A JavaScript Blog
HighKick Test Runner
azer/highkick 路 GitHubAsync Spell Checker
mscdex/spellcheck 路 GitHubNode Podcast
NodeUp: A Node.js PodcastLearning Javascript with Object Graphs
John Resig - Simple 「Class」 Instantiation
DailyJS: Tags
DailyJS: Node Tutorial Part 2
NodeBook
Books at mixu.netmde/timezone-js 路 GitHub
Stack for Linux and VMWare
Bitnami: The App Store for Server SoftwareNode.Js Everywhere
http://www.cloudave.com/19978/nodejs-why-im-basically-porting-everything-to-it/Web Services 2.0 on Node
http://webservices20.blogspot.com/yaronn/wcf.js 路 GitHub
Take your JavaScript skills to the server with node.js
http://cnnr.me/b/2012/05/your-first-node-dot-js-module/
There』s a CoffeeScript module.
Yahoo Mojito Ontop of NodeJs
Mojito - Yahoo"s NodeJS based Multi Device Application FrameworkNodeJS News
Node.js NewsExamples
Twitter Client
Build effective html5 app with node.js socket.io Twitter bootstrapNodetime benchmark node.js app
Build effective html5 app with node.js socket.io Twitter bootstrap
http://jamesshore.com/Agile-Book/test_driven_development.html
JSLint,The JavaScript Code Quality Tool
http://nodetime.com/blog/cpu-profiling-with-nodetime
http://sweettam.blogspot.com/2012/05/jade-visualizer-using-nodejs-and.html
Jade - Template Engine
http://jade-visualizer.herokuapp.com/
Javascript code prettifier
http://obvious.github.com/matador/
Cheerio: A faster, Windows-friendly alternative to jsdom
https://github.com/tmpvar/jsdom
JQuery for the Server
https://github.com/MatthewMueller/cheeriohttp://twitter.github.com/hogan.js/
https://github.com/ded/klass
http://dustindiaz.com/klass
https://github.com/ded/valentine
這個是我當時學習的經歷,可以借鑒一下新手如何快速入門node.js
前面提到的Learn Node.js Completely and with Confidence也很不錯,詳細到每一步,有章可循。這裡有中文的不側漏精通 Node.js
深度源碼剖析:https://github.com/yjhjstz/deep-into-node
身為一個遊戲公司的HR,在找不到node.js,我就要自學node.js了。。。
這裡有回答:如何學好node.js? - 靳洪飛的回答
學習任何編程語言都有些竅門,經驗都是相通的。
對於學node。js來說,如果想快速入門1)先要找到好的資源站點,互聯網知識碎片化很嚴重,在優質的資源上學習能事半功倍牧虎網 - 一站式IT技術高價值資源分享平台2)優秀的技術文章,這個也不得不推薦我和小夥伴的社區,不是廣告,好的東西就是需要分享3)去github上找些比較簡單的例子,邊學習基礎語法,邊動手練習,一定要多動手,這步很關鍵4)去github上找些node。js的開源項目,自己安裝上後,去學習他的源代碼5)多總結,多記筆記,多和行業內大牛交流知乎上有很多回答雲山霧繞,跑題千里,真心希望大家都能尊重提問者,切中問題去回答,別忽悠一堆沒用的,碼農的時間真的是很寶貴的。如果想簡單了解和開發node.js,可以看看這個初學文章: http://www.gbin1.com/technology/javautilities/20120904-node-js-for-beginners
歡迎訪問ANTCP我的網站就是node寫的哦,網上看的視頻,無互聯網背景。 ANTCP
推薦閱讀: