Node.js 最佳實踐 —— 如何在 2018 年成為更好的 Node.js 開發者

yongli92發表於2019-03-04

Node.js 最佳實踐 —— 如何在 2018 年成為更好的 Node.js 開發者

在過去兩年中,每年寫一篇關於來年如何成為更好的 Node.js 開發者的建議已經成了我自己的傳統。今年也不例外!?

如果你對我之前的新年建議感興趣,你可以在 RisingStack 部落格上閱讀:

話不多說,一起來看 2018 年的建議!

採用 async-await

隨著 Node.js 8 的釋出,async 函式已經普遍可用了。有了 async 函式的存在,你可以替換掉回撥,寫出讀起來和同步程式碼一樣的非同步程式碼。

但什麼是 async 函式?讓我們回顧一下 Node.js Async 函式最佳實踐 一文:

async 函式可以讓你寫出讀起來像是同步程式碼的,但實際基於 Promise 的程式碼。一旦你使用了 async 關鍵字來定義函式,你就可以在函式體內使用 await 關鍵字。async 函式被呼叫時,它會返回一個 Promise。當 async 函式體中返回一個值時,該 Promise 完成(fulfilled)。當 async 函式丟擲錯誤時,該 Promise 失敗(rejected)。

await 關鍵字可以用來等待一個 Promise 完成並且返回結果值。如果傳給 await 關鍵字的值不是一個 Promise,它會將其轉換成一個已完成的 Promise

如果你想掌握 async 函式,我推薦你瀏覽這些資源:

讓你的應用優雅地中止

當你部署應用的新版本時,必須更換舊版本。你使用的,不管是 Heroku, Kubernetes, supervisor 還是任何其它的程式管理器,會首先給應用傳送一個 SIGTERM 訊號,來通知它即將被中止。一旦應用得到了該訊號,它應該停止接受新的請求,完成所有正在處理中的請求,並且清理它使用的資源。資源通常包含了資料庫連線和檔案鎖。

為了讓這一過程更簡單,我們在 GoDaddy 上釋出了名為 terminus 的開源模組,來幫助你的應用實現優雅中止。現在就來看看 ☺️

在公司內採用相同的風格指南

在一個有上百人開發團隊的公司中採用風格指南是很有挑戰性的 —— 讓每個人都認可同一套規則簡直難如登天。

恕我直言:你永遠無法讓上百個開發者認可同一組準則,即使這能帶來顯而易見的收益,譬如讓團隊更快地在專案間切換,而無需費時費力來習慣一套新的(即使只有一點兒不同)程式碼編寫風格。

如果你正是工作在這種團隊氛圍中,我發現最好的辦法是信任某位經驗豐富的程式設計師,和其他人共同努力來決定風格指南包含哪些準則,但他要有最終決定權。在所有人都能遵循同一套準則之前,該準則的具體內容並不重要(我不想引發關於分號的爭吵)。重要的是必須在某一刻有所決定。

把安全當做必備條件

我們看到越來越多的公司被列在 haveibeenpwned 上 —— 我打賭你不想成為下一個。當你向你的使用者釋出一段新程式碼的時候,程式碼稽核應該包含安全領域的專家。如果你公司內沒有這樣的人才,或者他們非常非常忙,一個很好的解決辦法是和類似 Lift Security 這樣的公司合作。

而你作為一名開發者,同樣應該努力更新你的安全知識。為此,我推薦你閱讀這些材料:

在見面會或會議上演講

另一個成為更好的開發者,甚至更好地學會表達自己的方法,就是在見面會或者會議上演講。如果你從未試過,我推薦先從一個本地的見面會開始,再去嘗試申請全國的或者國際的會議。

我明白當眾演講會很難。當我準備我的第一次演說時,Speaking.io 幫了我不少忙,我也推薦你去看看。如果你正在準備你的第一次演說,並且想要一些反饋的話,你可以在 Twitter 上找我談談,我很樂意幫忙!

一旦你有了一個想要在會議上分享的主題,你可以在 Github 上檢視到 2018 Web 會議 徵文集合,這太棒了!

直接使用新的瀏覽器 API 編寫模組

九月時 MikealModern Modules 上釋出了一篇很好的文章。其中我最喜歡的一件事,就是使用瀏覽器 API 來編寫模組,當必要時填補(polyfill)Node.js。由此而來的顯著優勢就是你可以將更小的 JavaScript 程式碼釋出進瀏覽器中(並且讓頁面載入得更快)。另一方面,沒人會在意你的後端依賴是不是太過繁重。

採納應用開發的 12-Factors 法則

應用開發的 12-Factors 原則,描述了網路應用應當如何編寫的最佳實踐,因此它也出現在今年我的建議列表中了。

隨著 Kubernetes 和其它編排引擎的使用率不斷提升,遵循 12-Factors 法則變得越來越重要。它們涵蓋了以下領域:

  1. 一份基準程式碼,多份部署
  2. 顯示宣告和分離依賴關係
  3. 在環境中儲存配置
  4. 把後端服務當做附加資源
  5. 嚴格分離構建和執行
  6. 以一個或多個無狀態程式執行應用
  7. 通過埠繫結提供服務
  8. 通過程式模型進行擴充套件
  9. 快速啟動和優雅中止可最大化健壯性
  10. 儘可能地保持開發、預釋出、線上環境相同
  11. 把日誌當做事件流
  12. 後臺管理任務當做一次性程式執行

學習新的 ECMASCript 特性

一些新的 ECMAScript 特性可以顯著提升你的效率。它們可以幫你寫出不言自明的清晰程式碼。其中我最愛的特性有(老實說它們不是非常新了):

如果你想知道新的 ECMAScript 特性的完整內容,我推薦閱讀這本書 ES6 & Beyond


你想在這份列表中加入別的建議嗎?請在留言中告訴我。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章