学习 Node.js 的 6 个步骤
发布于 9个月前 作者 nswbmw 6145 次浏览

从刚接触Node.js到现在,自己也是一路摸滚打爬过来的,虽不说是什么高手,但对于如何学习Node.js,还是有一些个人见解,拿出来与大家共勉~

学习Node.js大致有 6 个步骤或者说 6 个层次:

第一步

对于刚接触Node.js的新手来说,第一步无非是打好基础,你需要弄明白以下事情:

  • JavaScript 的特性和语法。假如你对 JavaScript 还不熟悉的话,推荐书籍及链接:
  • Node.js 是什么?Node.js与JavaScript的区别是什么?
  • Node.js的优点?Node.js的缺点?
  • Node.js适用场景?Node.js不适用的场景?
  • Node.js的基本语法。Node.js的特性:
    • 单线程
    • 异步 IO
    • 事件驱动
  • npm 是什么?npm的基本使用
  • REPL
  • 等等

其实上面的内容,大部分Node.js的书籍都有介绍。基本了解了Node.js后,我们可以写一些 hello world 的程序:

  • 搭建一个 HTTP 服务器,返回 hello, world 。(使用 HTTP 模块)
  • 读取一个 txt 文件,将内容显示到命令行中。(使用 fs 模块)
  • 等等

第二步

你也许想,Node.js 只有那些少得可怜的核心模块能做什么呢?别担心,npm 上目前有近 7W 的第三方模块,月下载量高达 2.1亿 (2014—4—20 数据)… 这才是 Node.js 的活力所在。当你对Node.js已经了解的差不多了,并且按耐不住跃跃欲试了。这个时候,我们不妨用 Node.js 的第三方模块做些好玩的事情:

  • 搭建一个微博网站
  • 搭建一个博客网站
  • 搭建一个在线聊天室
  • 写一个简单的爬虫
  • 调用一些网站的API做一些好玩的东西
  • 等等

但是,并不是说 Node.js 只能做以上事情,几乎其他语言能做的事情 Node.js 都能做,而且有些情况下能做的更好。

第三步

当然,就像学 js 也不能只会用框架一样,学习 Node.js 也不能只会用外部模块。这个时候,我们需要回头深入了解下 Node.js 核心模块的用法。说白了,就是好好看 Node.js 官方 API 文档。看文档是码农必备技能,英语不好的童鞋浏览器装个划词翻译的插件。

第四步

  • 多实践。不管是用核心模块还是外部模块,尝试用 Node.js 解决某个问题或者替换掉以前用其他语言写过的代码。
  • 读源码。这里说的读源码并不是说上来就去读 Node 或者其他较大的框架的源码。这个时候,挑一些简单的只实现某个特定功能的工具模块的源码读,这种模块的代码通常在几百行,阅读起来并不是很困难,但是却能涨不少的姿势。比如:
    • underscore (学习 JavaScript 的语法和技巧)
    • 等等

第五步

坚持第四步。在使用 Node.js 时发现没有合适的模块选择或者选择的模块功能不尽人意,这个时候你可以尝试去创建一个模块或者修改现有的模块,并且使用 npm 发布自己的模块或者去该模块的 GitHub 上提 PR 。

第六步

  • 多实践。这个就不用解释了
  • 读 Node 源码及较大的框架的源码。提高必备
  • 多关注下 GitHub 上的牛人
  • 重复第1-6步

PS:贯穿始终的是买几本 Node.js 的书读,推荐《深入浅出Node.js》。

22 回复

《深入浅出Node.js》确实不错,推荐,,

确实应该理论+实践的学习

《深入浅出Node.js》 支持!~

超级赞, 楼主总结的太棒了。这里Node的源码应该指的是JS部分吧, C++那部分对于JS同学可是超级吃力也没有太大意义的哟, 除非你有计划或需要开发一些addon

大赞,话说是看着楼主教程入门的。

取消制定了, 文章在 Wiki 里放了个链接 :) -> nodeclub Wiki/论坛精华帖

最近一直在看LZ的github学习nodeJS开发,非常棒!会继续按照楼主的说的六步练习,其实任何语言也无外乎这几步,关键是坚持下去

推荐 《nodejs入门经典》 + 《深入浅出nodejs》 楼主好建议 我现在处于阶段2 请问简单的博客跟爬虫哪能找到好点的例子呢?

归根到底还是多实践,多写bug

推荐《nodejs开发指南》,不过里面的实例用的nodejs版本太低了

《深入浅出node.js》是不错,比较详细,讲了很多实质性的内容。目前还没看过其它书,接下来准备找个《node.js实战》来看看,不知道怎么样。有没有看过的朋友,发表下意见?

我覺得樓主的這套適合前端同學 或者初學者 來學習node

我作為一個一直只做後端的工程師來說一下我的學習和使用的過程 ###讀書 入門的時候看的郭家寶的那本綠皮的nodejs開發指南,當時也是唯一能買到的nodejs有關的中文書了 說實在地,在麦当劳兩天看完之後真的覺得自己沒有入門,不是說書寫的不好,只能說對書裡地例子沒什麼感覺,沒有很好體現nodejs特有的有點 之後閱讀了《js程序設計》 紅色很厚的那本 跟前端相關的例如DOM之類的章節全略過了 大概對js這語言有了了解對 對es有寫了解 之後再看了《professional nodejs》 紅皮封面是望遠鏡的那個 覺得比郭寫的那本好不少 看了這本大概才算是對nodejs真正入門了吧 看《professional nodejs》 的同時 也參考著看了learning node 白皮封面是個老鼠的 amazon當時買的時候評價沒有professional nodejs好,所以只是輔助參考一下,反正個人認為看《professional nodejs》就夠了《learning node》就不需要浪費錢了,我也慶幸是買的kindle版不是實體書 有本小書叫《node cookbook》 我就喜歡讀各種cookbook,很實用,也適合新手快速了解node能干些什麼,有哪些知名的module 到這時候為止,我還是連一個nodejs的項目都麼有寫,一行自己的nodejs代碼都沒有敲。 上面那段時間讀了這麼多書,這段時間大概就是12年末 -12年春節前後-13年初的一段時間 ###動手 之前全部是書本上的,動手第一個項目是用pomelo做的遊戲服務器,大概要畫一到兩個星期跟蹤調試的方式閱讀pomelo源碼,當時pomelo還是個好簡單的基礎框架,代碼簡單。 與其說是看pomelo源碼,大部份時間其實是跟蹤到node的源碼裏看了。 這個過程細化的就是 ####看項目需求 ####根據需求找module 看源碼 ####評估用哪個module 設計功能的實現 ####嘗試實現 ####調試 ####測試 這個過程不斷重複 過程中就看了很多第三方的module的實現或者部分功能的實現 async underscore mongoose express crc socket.io redis 等等等等 如果第二步找module找不到合適,自己寫咯,前面看了那麼多module之後,吃過豬肉,見過豬跑,我覺得可以試著養幾頭小豬了 ###深入 項目在上面動手過程中的無限次循環中 做出來 這個時候就準備上線前的一下系統的壓測咯 自然各種memwatch ndump profiler之類的會用到 這時候注意到了StrongLoop家的一些工具,的確是很有技術含量,也很好用,通過他們的博客也學會不少性能工具的用法,他們對node做一些修改優化。大概從StrongLoop這能學到的也就這麼多。之後還是要回歸社區。看github上的issues,開著的issues基本這時候看了大概也沒有什麼能貢獻能討論的,還是主要通過搜索一些關鍵詞找感興趣的close的issues看。 話說這段時間比較閑,每天除了看github和改自己寫的bug,改改一些第三方包的bug之外,大家結合自己工作多給npm貢獻點東西也不錯。

之後再怎麼發展就不太知道。 最近在系統地看一下node代碼的v8和uv的部分。 現在失業在家33天(自從不上班了 天天在v2ex簽到記日子)了 之前上班時間太閒,光刷weibo知乎了。現在才明白應該靜下心來多看一些東西,溫故一些東西,知新一些東西。

對了 後來我們項目上線了 越獄渠道上線了~ 這時候總算pu(piao?)ling 不會打 反正就是田永強大大的《深入淺出》出版了(反正之前沒有混到Github 上看內測的資格) 建議大家在做完一個項目後或者項目後期 一定要看一下這本書

现在还处于第一阶段……买了本犀牛书,继续奋斗……

用了javascript1年多,感觉才刚刚入门,angularjs也用了半年多,还是有点懵懂,看完了 设计模式,依旧懵懂。 总结就是,依旧习惯造轮子,写不容易维护的代码。 最近买了楼主的 node.js实战 ,现在在用 coffeescript写书里面的项目。 真心想问问楼主,我总是疑惑自己写的代码不够规范,方法不是正确的,怎么办!

由于本人是新手,买了一本《Node实战》目前正在看!!书中以实例项目驱动为主!比较符合楼主所说的第二部学习步骤!比较适合已经基本掌握了Node一些基本的API而想要进一步进阶的小伙伴!!

对《Node实战》的敢脚深有同感啊!!!示例代码有时候感觉很有问题!!!!只能自己一点一点改正!!!

刚开始学node.js 还在第一阶段, 大家一起来学吧 http://jiafeifei.weebly.com/blog/nodejs-1

最近开始学习nodejs,请多多指教

回到顶部