1. 程式人生 > >nodejs學習過程2之相關網站2

nodejs學習過程2之相關網站2

too text align res 工具 實現 聯系 document util

nodejs學習過程2之相關網站2

全文來自於知乎

鏈接:https://www.zhihu.com/question/21567720/answer/201301150
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

一、第一篇


以前學習 Node 盡管也能感覺到自己在不斷進步,但是直到使用 Node 完成了一些有意思的項目之後才算系統掌握 Node。

使用 Node 來寫 Web 方面的東西還挺有意思的,會碰到一些問題,在解決這些問題的過程中掌握 Node 是比較好的方式,因為掌握了本質的東西,再去學習工具相對輕松很多。

比如說要實現 Express 的功能,下面這些東西都很有機會接觸到:

需要使用 Net(Node.js v8.2.0 Documentation)來處理基本的網絡請求與響應

需要使用 TLS(Node.js v8.2.0 Documentation)來處理 HTTPS 協議

需要發送文本文件時要使用 File System(Node.js v8.2.0 Documentation)

需要發送圖片時要使用 Buffer(Node.js v8.2.0 Documentation)

需要壓縮內容時,要使用 Zlib(Node.js v8.2.0 Documentation)

需要進行測試時,要使用 Assert(Node.js v8.2.0 Documentation)

需要記錄 log 時,要使用 Console(Node.js v8.2.0 Documentation )和 Process(Node.js v8.2.0 Documentation)

需要生成 Session 並存儲在 Cookie 時,要使用 Crypto(Node.js v8.2.0 Documentation)

需要處理路徑問題要使用 Path(Node.js v8.2.0 Documentation)

需要處理異步問題的時候還得自己寫一個 promisify(Node.js v8.2.0 Documentation),當然現在 Node 已經原生支持這個函數

需要將程序拆分到不同模塊時,要使用 Module(Node.js v8.2.0 Documentation)

在這個過程中,Stream(Node.js v8.2.0 Documentation)的概念貫穿始終

比如說要實現 Request,還能接觸其他不同的東西:

除了 Net(TLS),DNS(Node.js v8.2.0 Documentation)、Domain(Node.js v8.2.0 Documentation)、URL(Node.js v8.2.0 Documentation)和 Query String(Node.js v8.2.0 Documentation)搭配使用會更加方便,當然有些自己實現也不難。

比如說要實現前後端分離,可能就不想使用 Net(TLS),而是選擇 HTTP(Node.js v8.2.0 Documentation)和 HTTPS(Node.js v8.2.0 Documentation),畢竟前面的項目足夠掌握好 Net 了,這個時候再換成 HTTP 花費不了什麽時間。

其實這幾個不算難,而且有很多現成的庫可以使用,但是想系統掌握 Node,肯定要深入學習 Node 的核心知識。

學習庫的用法可能見效快,更加容易收獲滿足感,但是最終還是要回來學核心知識的,庫變化很快,但是核心變化是很緩慢的。而且上面列出的這些掌握之後,學習庫也不會慢到哪裏去,哪天想學習其他語言,也是能遷移不少的。

更新

增加一個相關聯的回答:怎樣有效地學習 Node.js?

編輯於 2017-12-08

第二篇

作者:知乎用戶
鏈接:https://www.zhihu.com/question/19793473/answer/270040903
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

以前回答了 如何系統地學習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 開發。

編輯於 2017-12-04

nodejs學習過程2之相關網站2