一點感悟:《Node.js學習筆記》star數突破1000+

寫做背景

筆者前年開始撰寫的《Node.js學習筆記》 github star 數突破了1000,算是個里程碑吧。html

從第一次提交(2016.11.03)到如今,1年半過去了。忽然有些感慨,想要寫點東西,談談這期間的收穫、心路歷程,以及如何學習Node.js。前端

心路歷程

筆者一直有作技術筆記的習慣,前幾年零零散散的也寫了很多Node.js的東西,只不過都存在evernote裏。寫着寫着,以爲有必要系統地整理下,因而就有了這個項目。node

粗略統計了下,總共提交了約60篇教程,以及將近300個範例腳本git

大部分的commit都集中2016年十一、12月份,以及2017年上半年。這段時間其實項目組挺忙的,常常一週6天班,同時在兩三個項目間來回切換。github

寫做的過程挺枯燥的,也有點累人,尤爲常常只能抽大半夜或週末的時間來碼字,常常寫技術文章的同窗應該能體會。無論怎麼說,一路堅持了下來,感受仍是有很多收穫。編程

一、技術積累。最初存在evernote裏的只是零星的筆記,通過整理校對、進一步的思考以及延展性學習,零散的知識點逐漸串聯成體系化的知識面。這比單單記住了數百個Node.js的API,以及枯燥的配置項更有用。segmentfault

二、知識分享。寫做的過程當中,很多一樣正在學習Node.js的同窗或經過QQ,或經過私信表達了感謝。對筆者來講,這其實比star數的增長更有意義。api

三、技術焦慮有所緩解。衆所周知,前端領域變化太快,身處其中的從業者壓力很是大,這也是前不久著名的「老子學不動了」的梗忽然刷屏的緣由。深刻學習、思考,掌握學習的方法和規律,可以必定程度上緩解技術焦慮症。瀏覽器

四、意外收穫。這期間,收到阿里雲棲社區(專家博主)、騰訊雲+社區的入駐邀請,多家知名出版社的撰稿邀請,在線教育平臺(如慕課)的開課邀請等。安全

如何學習Node.js

2年前在SegmentFault社區上有人問過相似的問題《關於nodejs的學習?》,當時簡單地回答了下。

  1. 實踐是最好的學習方式,若是能把所學用到實際中去,效率比光學不練要高上不少。
  2. 遇到問題,學會使用google、stackoverflow、官方文檔。
  3. 學習node的障礙,大部分時候不是node自己,而是相關領域知識。

實踐出真知,這點無需強調。遇到技術問題善用搜索引擎,也算是圈內共識了(初學者須要增強這方面意識)。

其實最難的是第3點,分辨你所遇到的問題。

舉個例子,好比如今想學習 https 這個模塊,很多初學者會顯得束手無策,常見的問題有:

  1. 問題一:https、http、net 模塊長得好像,API也差很少,它們之間是什麼關係?
  2. 問題二:配置項裏有一項是證書,這是個幹嗎的?照着指引配好證書了,爲何瀏覽器會報錯?
  3. 問題三:server本地跑得好好的,怎麼部署到雲服務器上就訪問不了,明明能夠ping通,端口也啓動了,爲何提示拒絕訪問?

正式回答問題前,先祭出一張網絡分層架構圖,請讀者把它牢記在心。

互聯網基於分層架構實現,包括應用層、傳輸層、網絡層、鏈路層、物理層。其中,前端開發者比較熟悉的是應用層(HTTP協議),若是想學習Node服務端編程,那麼,至少須要對傳輸層(TCP)、網絡層(IP)也有必定的瞭解。

對於網絡的每一個層次,Node.js基本都有對應的模塊,好比https、http、net(TCP)、tls/crypto等。

前面列舉的幾個問題,都是對網絡知識、服務器知識瞭解的欠缺致使的,而不是於Node.js的API有多複雜、難以理解。

這裏直接回答問題:

  1. 問題一:http爲應用層模塊,主要按照特定協議編解碼數據;net爲傳輸層模塊,主要負責傳輸編碼後的應用層數據;https是個綜合模塊(涵蓋了http/tls/crypto等),主要用於確保數據安全性;該用哪一個模塊應該很清楚了。
  2. 問題二:安全證書是PKI體系的重要一環,主要用於身份校驗。本地調試用的證書若是是本身簽署的話,瀏覽器會視爲不安全並報錯,能夠參考 《HTTPS科普掃描帖》。
  3. 問題三:這種狀況大機率是請求被防火牆攔截。ping走的是ICMP協議,由操做系統內核處理,可以ping通不表明TCP鏈接就可以創建成功,能夠參考 《ping的使用與實現原理剖析

寫在後面

編寫《Node.js學習筆記》的過程收穫了很多,也有很多感觸,這裏就不過多碎碎念。對於「如何學習Node.js」這個問題,其實有挺多東西想寫,篇幅所限,後面的文章詳細展開。

相關連接

Nodejs學習筆記

筆者我的博客

相關文章
相關標籤/搜索