Node.js最佳實踐 -在2017年如何成為一名更好的Node.js開發者

okbi4515 7年前發布 | 9K 次閱讀 Node.js Node.js 開發

一年前,我發表的 在2016年如何成為一名更好的Node.js開發者 獲得了廣泛的歡迎,因此今年我想延續去年的主題,講講在2017年,如何成為一名更好的Node.js開發者。

在這篇文章中,我們將回顧2017年Node.js的最佳實踐,最熱話題,我們需要關注什么,來提升自身能力。讓我們開始吧!

使用 ES2015

去年,我們也建議大家 使用ES2015 ,和去年相比,今年有很大的改觀。

當時,Node.js v4版本作為長期支持版本,僅支持57% ES2015的語法,經過了一年,Node.js v6版本作為長期支持版本,支持了99% ES2015的語法。

也就是說,如果你正在使用最新的長期支持版本的Node,你不需要添加任何的babel,也可以使用ES2015編輯整個項目。

關于更多的Node.js版本對ES2015支持的細節,我推薦大家去Node.js官網

使用 Promises

promise的概念早在八十年代就被提出,現在已經是大多數現代編程語言中簡化編寫的一部分。

假設如下場景,讀取一個文件,把它轉成JSON并輸出文件名,如果用callback回調函數實現,代碼如下:

fs.readFile('./package.json', 'utf-8', function (err, data) {  
  if (err) {
    return console.log(err)
  }

  try {
    JSON.parse(data)
  } catch (ex) {
    return console.log(ex)
  }
  console.log(data.name)
})

我們用Promises實現這個功能,可以提高代碼的可讀性:

fs.readFileAsync('./package.json').then(JSON.parse).then((data) => {  
  console.log(data.name)
})
.catch((e) => {
  console.error('error reading/parsing file', e)
})

當然,現如今使用 fs 模塊并沒有一個返回值為Promise的 readFileAsync API,為了讓上述代碼正常運行,你需要引入一個類似 promisifyAll 的模塊,給它運行的環境。

使用代碼規范

當代碼規范被稱為代碼規范時,就意味著,至少在公司范圍內推行,所以,當你想要改變你的項目時,意味著從0開始,不需要為之前的人的代碼而懊惱。

我們RisingStack使用了我們的代碼規范 JavaScript Standard Style 構建我們的項目。

使用代碼規范,你不需要使用 .eslintrc , .jshintrc , 或 .jscsrc 不需要加載其他文件到項目中。 

使用Docker

你可以把Docker鏡像當成部署容器的工具。Docker就是部署軟件運行環境的一個容器,它包含了你軟件運行的大部分的基礎環境:代碼,運行時間,系統工具,系統程序庫,任何你能想到需要安裝的東西。

為什么應該使用 Docker?

  • 隔離了運行環境和項目代碼

  • 作為一個安全工具,讓你的代碼更加安全

  • 輕量的Docker鏡像

  • 穩定的部署

  • 通過Docker你可以在本地看到你軟件的運行環境

你可以參照網站 official getting started tutorial 完成你的第一個Docker,另外推薦 Kubernetes best practices 作為補充。

監視你的程序

當你的Node進程出現故障時,第一個知道的人應當是開發者,而不是用戶。

一個開源的解決方案 Prometheus 可以幫助你解決進程崩潰的問題。 Prometheus是SoundCloud的一個開源工具箱,監聽并提示進程崩潰問題。 唯一的缺點是你需要手動掛載在自己開發的域下。

如果你在尋找一個開箱即用的方案,可以關注我們開發的 Trace by RisingStack ,也是一個不錯的解決方案。

Trace能為我們做的

  • 警告

  • 記錄收集項目的CPU數據

  • 分布式追蹤,查找錯誤

  • 性能監測,

  • 保護你的npm包安全

進行后臺日志管理

如果你用HTTP發送請求,只要接受停止,整個消息都會丟失。但是,如果逆選擇一個持久的傳輸層,像一個消息隊列一樣傳輸消息,你就不會有這個困擾。

如果接收服務停止,消息傳輸還會繼續,將會在稍后發出。如果服務沒有掛掉,它會有一個提示, 服務器將會重試,因此沒有數據會丟失。

一個例子: 假如你發送了幾千封郵件,在每一封里,你都會寫一些基礎信息,像郵件地址,姓名,簽名,這時后臺就好像工人一樣,整理出一樣地址的幾百封,一起發到同一個地址。

這樣的好處是,你可以隨時查看每一封的狀態,沒有郵件會被寄丟。如果你發現幾百封郵件同時丟了,你可以進行后期操作,讓他們使用同一隊列。

你可以使用借鑒如下日志管理工具:

使用最新的穩定的Node.js版本

為了最好的開發體驗,我們最推薦的版本是最新版本和最新穩定版本,在本文中,我們更推薦最新長期穩定版本。就是寫這篇文章時的最新版本 6.9.2

為了更輕松的切換Node版本, 你可以使用 nvm 。 你安裝一次, 輸入這兩個命令:

nvm install 6.9.2  
nvm use 6.9.2

使用語義化的版本

在幾個月前我們進行了一次關于 Node.js Developer Survey 的分享, 我們呼吁并幫助大家認識并使用語義化的Node版本。

不幸的是,我發現只有71%的調查對象使用語義化的版本,在構建他們的項目。 這個比例應當更高,我們的觀點是,每個項目都應當使用版本控制。 為什么這么說,當我們更新包的時候,如果沒有版本控制,很容易把整個項目搞崩潰。

對你的項目和模塊做版本控制是很關鍵的,你的用戶必須知道,什么時候發布了新版本,他們需要做什么,來獲取新版本。

這就是為什么圖片中展示的,為什么這么多人使用語義化的版本控制,你需要在版本控制中包含如下信息 重點,監聽,補丁

  • 重點當有不兼容的API更新時,需要通過版本控制兼容

  • 監聽在不終止服務的情況下增加新的API

  • 補丁向下兼容,BUG修復

npm也用了版本管理來管理你項目的依賴,因此,當你發布模塊的時候,一定要確認npm包是否有相應的更新。換個說法,如果不看,你也許會把其他系統弄崩潰。

維護應用的安全性

在2017年,保護你的用戶信息安全將會是你構建項目的著重點。僅在2016年,就有 數百萬用戶被賬戶入侵 ,出現這個現象就是因為安全措施不到位。

作為Node.js安全的初學者, 你可以讀我們的博客 Node.js Security Checklist , 包含如下觀點:

  • 安全的 HTTP Header,

  • 強制保護,

  • Session管理,

  • 處理依賴關系,

  • 數據管理

當你理解了這些基礎概念, 你可以在 Surviving Web Security with Node.js !留下你的觀點

學習Serverless

Serverless是AWS Lambda提出的一個理念。從此以后,這種理念流行起來, 并且有了開放的討論社區。

明年, serverless 將成為一個關于構建項目的專門的方向。如果你想更上一層樓,你需要從現在開始學習。

一個最流行的解決方案就是 Serverless Framework , 這是由 AWS Lambda部署的一個方案。

參加研討會和見面會

參加研討會和見面會是一個學習新趨勢,開發技巧和最佳實踐的好機會。當然也可以認識更多的人。

作為開始的第一步,我建議你參加并在 one of these events 上演講。

做一個公開的演講很難,吸引到每一個人的注意力更是難上加難,而且這不是一個好的想法。我推薦去 speaking.io 查看演講的一些小技巧。

在2017年成為一名更好的Node.js開發者

2017年作為- Node.js發力的一年,我們希望大家從Node.js開發中收獲更多

我們啟動了一個新的項目叫做掌握Node.js,希望從這些方面加深大家對Node.js的理解

  • Node.js異步編程

  • 創建Express服務器

  • 創建Node數據庫

  • 使用Node構建結構化,可擴展的APP

 

 

來自:http://www.w3ctech.com/topic/1970

 

 本文由用戶 okbi4515 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!