原視頻地址:
https://www.youtube.com/watch?v=gePCzPTEXSU
你對(duì) node.js 初學(xué)者你有什么建議.
Wyatt Preul
Joyent 產(chǎn)品工程師
不要一開始就依賴 npm 上的模塊, 嘗試自己從頭實(shí)現(xiàn)一些基本的功能, 直到你真正需要一個(gè)模塊的時(shí)候再引入他;
另外一個(gè)建議就是, 在社區(qū)保持活躍,參加到當(dāng)?shù)厣鐓^(qū)的活動(dòng)中去; 可以嘗試對(duì) node 做一些貢獻(xiàn), 哪怕只是更正 README 或者文檔之類的提交.
筆者注: 如果時(shí)間充足學(xué)習(xí)一門語(yǔ)言的最好方法就是造輪子.前提就是時(shí)間充足和學(xué)習(xí)期間
Patrick Ritchie
HomeAway 高級(jí)軟件經(jīng)理
找一個(gè)切入點(diǎn), 讓 node 幫助你迅速的開展業(yè)務(wù),展現(xiàn)出他的價(jià)值. 然后尋找更加完善和強(qiáng)大的 node 的程序來(lái)支撐你的業(yè)務(wù). node 和其他的軟件還是有很多大的區(qū)別的. 所以你需要一個(gè)完整的程序來(lái)實(shí)現(xiàn)你的商業(yè)目標(biāo).
Steven Faulkner
Bustle 工程總監(jiān)
剛開始學(xué)習(xí) node 的時(shí)候多看看你使用模塊的代碼,研究它背后的工作原理; node 界也有很多多產(chǎn)的開發(fā)者, 他們開發(fā)了很多不同類型的模塊, 多讀讀他們的代碼以理解他們背后的思想.
幾年前的 npm top contributor 列表: https://gist.github.com/michalbe/71f6f9e5938eeb781dc4 可惜了 TJ 大神已經(jīng)暫別 node 圈了.
node.js 的實(shí)踐方面的建議
所謂的最佳實(shí)踐
Charlie Robbins
GoDaddy 技術(shù)總監(jiān)
- 使用私有的 NPM 庫(kù)
- 如果你第一條沒(méi)有做到, 那換一條建議就是不要把
node_modules
提交到版本管理里面, 不會(huì)有好結(jié)果的 - 在 package.json 中使用 git URL 最終也會(huì)帶來(lái)麻煩, 雖然這樣做在沒(méi)有私有 npm 時(shí)的能幫你解決一些問(wèn)題.
譯者注: 總之就是一句話: 是要用 私有npm;
可以參考 cnpm 的解決方案
https://github.com/cnpm/cnpmjs.org/wiki/Deploy-a-private-npm-registry-in-5-minutes
Paul Milham
WildwWorks 工程師
- 在可能出現(xiàn)異常的地方正確的處理異常
- 當(dāng)你的應(yīng)用處于一個(gè)未知狀態(tài)的時(shí)候,毫不留情的重啟你的服務(wù)進(jìn)程
- 一定要有測(cè)試;在你提交代碼后有自動(dòng)化執(zhí)行的測(cè)試.
- js 是動(dòng)態(tài)類型的語(yǔ)言, 所以一定要有嚴(yán)格的數(shù)據(jù)檢查;確保進(jìn)入你的應(yīng)用的數(shù)據(jù)是你期望的, 特別是在 API 層面
譯者注: 第二條可能很多人不能接受, 要讓你的服務(wù)進(jìn)程能夠隨時(shí)重啟對(duì)系統(tǒng)的架構(gòu)能力最基本的考驗(yàn).當(dāng)然第三條也很重要, 很難想想一個(gè)復(fù)雜的系統(tǒng)沒(méi)有測(cè)試,沒(méi)有自動(dòng)化測(cè)試要怎么維護(hù).
James Hush
Netflix 軟件工程師
當(dāng)你在生產(chǎn)環(huán)境下開始一個(gè)新項(xiàng)目的時(shí)候, 一定要鎖定依賴關(guān)系; 不要在 package.json 出現(xiàn) "^","~"; 直接鎖定依賴關(guān)系.
譯者注: 我個(gè)人強(qiáng)烈推薦使用 *yarn , 如果你對(duì) yarn 不是很喜歡的話,那就在項(xiàng)目的根目錄下創(chuàng)建 .npmrc
文件, 寫入 save-exact = true
如果你要升級(jí) node.js 版本. 一定要先讓你團(tuán)隊(duì)的人知道你升級(jí)了 node.js 的本版; 如果有人在你升級(jí) node.js 版本后不能運(yùn)行程序.
rm -rf node_modules
然后npm i
, 90% 能解決你的問(wèn)題.
譯者注: node.js 發(fā)展太快了, 如果項(xiàng)目激進(jìn)的話直接用最新的版本好了. 保守的跟緊 TLS.
Patrick Ritchie
HomeAway 高級(jí)軟件經(jīng)理
JVM 的線程機(jī)制可以讓你壓榨完系統(tǒng)的所有資源來(lái)一定接受新的連接; 但是 node 只有已經(jīng)一個(gè)進(jìn)程和有限的內(nèi)存資源.
譯者注: 那就是學(xué)會(huì)用 cluster 和學(xué)習(xí)微服務(wù)架構(gòu)
最后的建議
(白云: 就剩一句話了啊?)
Sarah Saltrick Meyer
buzzfeed 程序媛
node的發(fā)展和互聯(lián)網(wǎng)變化一樣迅速, 同樣它也和互聯(lián)網(wǎng)一樣慢慢的變好. 你不可能花上6年時(shí)間出現(xiàn)等一個(gè)新的語(yǔ)言出現(xiàn), 然后把之前的工作拋到腦后.
譯者注: 她的意思是不是 node.js 雖然現(xiàn)在不是很完善,但是發(fā)展的越來(lái)越好,應(yīng)該順勢(shì)而為. 因?yàn)闆](méi)有采訪的上下文,我也不知道她為什么要說(shuō) 6年 時(shí)間.
Paul Milham
WildwWorks
我鼓勵(lì)大家去接受 JavaScript. js 是一門很棒的語(yǔ)言, 可以使用在各個(gè)領(lǐng)域. js 作為一個(gè)門動(dòng)態(tài)的類型的語(yǔ)言出現(xiàn)在你視野時(shí)候, 你需要一些態(tài)度上的轉(zhuǎn)變, 有些開發(fā)者甚至對(duì)動(dòng)態(tài)類型還有一些偏見(jiàn). 其實(shí)動(dòng)態(tài)的特性讓會(huì)讓代碼變得更加的的簡(jiǎn)潔和易讀, 但是首先還是你得接受她, 擁抱她; 而不是通過(guò)一些編譯到 js 的語(yǔ)言來(lái)繞開 js.
哈哈,個(gè)人感覺(jué)沒(méi)有掌握 js 去使用類似 ts 的語(yǔ)言的話確實(shí)造成一些問(wèn)題. 至于 dart 之類我沒(méi)有用過(guò)也不能發(fā)表什么.
完
希望對(duì)大家有幫助.