2018——8條經(jīng)驗(yàn)構(gòu)建更好的node.js程序

翻譯自:8 Tips to Build Better Node.js Apps in 2018

在過去的兩年中,我們探索了編寫和運(yùn)用node.js的最佳實(shí)踐(請(qǐng)閱讀2016版2017版)。又一年過去了,是時(shí)候讓我們?cè)倩氐竭@個(gè)話題,來看如何成為一個(gè)更好的開發(fā)者。

在這篇文章中,我們收集了一些我們認(rèn)為在2018年Node.js開發(fā)者應(yīng)該遵循的經(jīng)驗(yàn)。畢竟獲取一些和新年計(jì)劃相關(guān)的提升是很暢快的。

1、使用 async - await

async - await 作為Node.js 8 重大特性出現(xiàn)。它改變了我們處理異步事件的方式,并且簡(jiǎn)化了之前難以駕馭的編碼方式。如果你還沒有使用async-await請(qǐng)閱讀我們的文章 introductory blog post

復(fù)習(xí)一遍我們之前講過的 async programming and Promises 也會(huì)是有幫助的。

2、了解 import和import()

ES modules 已經(jīng)通過編譯包@std/esm 被廣泛使用了。從Node.js 8.5開始,開啟--experimental-modules 就可以支持這個(gè)功能了,不過要很久之后才會(huì)變成正式的功能。

我們建議你從現(xiàn)在開始學(xué)習(xí)這個(gè)功能并且在2018年持續(xù)關(guān)注它。 你可以在這里找到一個(gè)簡(jiǎn)單的Node.js ES modules 教程。

3、熟悉HTTP/2

從Node.js 8.8開始不用任何選項(xiàng)就可以使用HTTP/2了。HTTP/2 的后端push和多路傳輸功能為瀏覽器高效的加載本地包鋪平了道路。很多框架例如Koa 和 Hapi 都部分的支持HTTP/2, 而Express 和Meteor 也都開始著手支持。

HTTP/2 在Node.js中仍然處于試驗(yàn)階段,但是我們預(yù)計(jì)在2018年會(huì)有更多的新包支持它。你可以在我們的文章HTTP/2 blog post中了解更多的關(guān)于HTTP/2的話題。

4、不再為代碼風(fēng)格爭(zhēng)論

Prettier在2017年產(chǎn)生了重大影響。它是一個(gè)嚴(yán)格的代碼格式化包,能夠在格式化代碼的同時(shí)消除掉簡(jiǎn)單的代碼風(fēng)格上的警告(warnings)。 但是,它沒辦法自動(dòng)改正代碼質(zhì)量上的錯(cuò)誤——如no-unused-varsno-implicit-globals

實(shí)質(zhì)上,在接下來的項(xiàng)目中你應(yīng)該將Prettier和老牌的linter一起使用。這回非常有用,尤其是你的團(tuán)隊(duì)中有讀寫困難者的時(shí)候。

5、構(gòu)建安全的Noje.js應(yīng)用

每年都會(huì)有重大的安全漏洞和新的缺陷,2017年也不例外。安全是一個(gè)變化很快的話題,我們不能忽視它。怎樣構(gòu)建安全的Node.js,閱讀我們的文章Node.js Security Checklist

如果你認(rèn)為你的程序已經(jīng)是安全的,可以用SnykNode Security Platform 來找到軟件中隱藏的缺陷。

6、擁抱微服務(wù)

如果你在開發(fā)中總是遇到問題,或者即將開發(fā)大型項(xiàng)目,可能是時(shí)候擁抱微服務(wù)架構(gòu)了。學(xué)習(xí)下面兩種技術(shù)在2018年的微服務(wù)場(chǎng)景中能夠齊頭并進(jìn)。

Docker 是一個(gè)提供容器服務(wù)的軟件技術(shù),它將一個(gè)軟件和其運(yùn)行所需要的所有環(huán)境都打包在一個(gè)完整的文件系統(tǒng)里,例如:代碼,運(yùn)行時(shí),系統(tǒng)工具和系統(tǒng)包。

Kubernetes 是一個(gè)開源的系統(tǒng),用來自動(dòng)部署,彈性伸縮,管理容器應(yīng)用。

在深入研究容器和服務(wù)編排之前,你可以先提升已有的代碼來熱身。遵循方法12-factor app ,在你使用容器打包和發(fā)布你服務(wù)的時(shí)候會(huì)容易的多。

7、給服務(wù)添加監(jiān)控

要在你的用戶反饋bug之前修復(fù)問題。監(jiān)控和報(bào)警是軟件開發(fā)中非常重要一部分,但是梳理一個(gè)復(fù)雜的微服務(wù)系統(tǒng)不是一件容易的事。幸運(yùn)的是,在這方面伴隨著幾個(gè)工具的不斷改善發(fā)展非常迅速。請(qǐng)看一下future of monitoring holds 或者學(xué)習(xí)一下現(xiàn)在的 OpenTracing 標(biāo)準(zhǔn)

如果你是個(gè)動(dòng)手能力較強(qiáng)的人,我們的 Prometheus 教程 會(huì)給你一個(gè)關(guān)于監(jiān)控的全面介紹。

8、開發(fā)或參與開源項(xiàng)目

你有喜歡的Node.js開源項(xiàng)目嗎?他們很可能需要你的幫助才能變得更好。只要找到一個(gè)你感興趣的issue就可以開始編碼了。

如果你不知道怎么開始,瀏覽一遍這幾個(gè)建議或者看一下這篇關(guān)于如何在GitHub上參與開源項(xiàng)目課程。做是最好的學(xué)習(xí)方法,尤其對(duì)于程序員來說。

你有哪些Node.js開發(fā)的建議?

在2018年,你有什么好的建議推薦給你的Node.js開發(fā)同事?請(qǐng)?jiān)谠u(píng)論區(qū)留言!

希望你擁有一個(gè)美好的2018。快樂編程!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容