在眾多可用于簡(jiǎn)化 Node.js 開(kāi)發(fā)的工具中,以下 9 種是最佳選擇。
我最近在 StackOverflow上讀到了一項(xiàng)調(diào)查,該調(diào)查稱(chēng)超過(guò) 49% 的開(kāi)發(fā)人員在其項(xiàng)目中使用了 Node.js。這結(jié)果對(duì)我來(lái)說(shuō)并不意外。
作為一個(gè)狂熱的技術(shù)使用者,我可以肯定地說(shuō) Node.js 的引入引領(lǐng)了軟件開(kāi)發(fā)的新時(shí)代?,F(xiàn)在,它是軟件開(kāi)發(fā)最受歡迎的技術(shù)之一,僅次于JavaScript。
Node.js 是什么,為什么如此受歡迎?
Node.js 是一個(gè)跨平臺(tái)的開(kāi)源運(yùn)行環(huán)境,用于在瀏覽器之外執(zhí)行 JavaScript 代碼。它也是建立在 Chrome 的 JavaScript 運(yùn)行時(shí)之上的首選運(yùn)行時(shí)環(huán)境,主要用于構(gòu)建快速、可擴(kuò)展和高效的網(wǎng)絡(luò)應(yīng)用程序。
我記得當(dāng)時(shí)我們要花費(fèi)幾個(gè)小時(shí)來(lái)協(xié)調(diào)前端和后端開(kāi)發(fā)人員,他們分別編寫(xiě)不同腳本。當(dāng) Node.js 出現(xiàn)后,所有這些都改變了。我相信,促使開(kāi)發(fā)人員采用這項(xiàng)技術(shù)是因?yàn)樗碾p向效率。
使用 Node.js,你可以讓你的代碼同時(shí)運(yùn)行在客戶(hù)端和服務(wù)器端,從而加快了整個(gè)開(kāi)發(fā)過(guò)程。Node.js 彌合了前端和后端開(kāi)發(fā)之間的差距,并使開(kāi)發(fā)過(guò)程更加高效。
Node.js 工具浪潮
對(duì)于 49% 的開(kāi)發(fā)人員(包括我)來(lái)說(shuō),Node.js 處于在前端和后端開(kāi)發(fā)的金字塔頂端。有大量的 Node.js 用例幫助我和我的團(tuán)隊(duì)在截止日期之內(nèi)交付復(fù)雜的項(xiàng)目。幸運(yùn)的是,Node.js 的日益普及也產(chǎn)生了一系列開(kāi)源項(xiàng)目和工具,以幫助開(kāi)發(fā)人員使用該環(huán)境。
近來(lái),對(duì)使用 Node.js 構(gòu)建的項(xiàng)目的需求突然增加。有時(shí),我發(fā)現(xiàn)管理這些項(xiàng)目,并同時(shí)保持交付高質(zhì)量項(xiàng)目的步伐非常具有挑戰(zhàn)性。因此,我決定使用為 Node.js 開(kāi)發(fā)人員提供的許多開(kāi)源工具中一些最高效的,使某些方面的開(kāi)發(fā)自動(dòng)化。
根據(jù)我在 Node.js 方面的豐富經(jīng)驗(yàn),我使用了許多的工具,這些工具對(duì)整個(gè)開(kāi)發(fā)過(guò)程都非常有幫助:從簡(jiǎn)化編碼過(guò)程,到監(jiān)測(cè)再到內(nèi)容管理。
為了幫助我的 Node.js 開(kāi)發(fā)同道,我整理了這個(gè)列表,其中包括我最喜歡的 9 個(gè)簡(jiǎn)化 Node.js 開(kāi)發(fā)的開(kāi)源工具。
Webpack
Webpack是一個(gè)容易使用的 JavaScript 模塊捆綁程序module bundler,用于簡(jiǎn)化前端開(kāi)發(fā)。它會(huì)檢測(cè)具有依賴(lài)的模塊,并將其轉(zhuǎn)換為描述模塊的靜態(tài)素材asset。
可以通過(guò)軟件包管理器 npm 或 Yarn 安裝該工具。
利用 npm 命令安裝如下:
npm install --save-dev webpack
利用 Yarn 命令安裝如下:
yarn add webpack --dev
Webpack 可以創(chuàng)建在運(yùn)行時(shí)異步加載的單個(gè)捆綁包或多個(gè)素材鏈。不必單獨(dú)加載。使用 Webpack 工具可以快速高效地打包這些素材并提供服務(wù),從而改善用戶(hù)整體體驗(yàn),并減少開(kāi)發(fā)人員在管理加載時(shí)間方面的困難。
Strapi
Strapi是一個(gè)開(kāi)源的無(wú)界面headless內(nèi)容管理系統(tǒng)(CMS)。無(wú)界面 CMS 是一種基礎(chǔ)軟件,可以管理內(nèi)容而無(wú)需預(yù)先構(gòu)建好的前端。它是一個(gè)使用 RESTful API 函數(shù)的只有后端的系統(tǒng)。
可以通過(guò)軟件包管理器 Yarn 或 npx 安裝 Strapi。
利用 Yarn 命令安裝如下:
yarn create strapi-app my-project --quickstart
利用 npx 命令安裝如下:
npx create-strapi-app my-project --quickstart
Strapi 的目標(biāo)是在任何設(shè)備上以結(jié)構(gòu)化的方式獲取和交付內(nèi)容。CMS 可以使你輕松管理應(yīng)用程序的內(nèi)容,并確保它們是動(dòng)態(tài)的,可以在任何設(shè)備上訪(fǎng)問(wèn)。
它提供了許多功能,包括文件上傳、內(nèi)置的電子郵件系統(tǒng)、JSON Web Token(JWT)驗(yàn)證和自動(dòng)生成文檔。我發(fā)現(xiàn)它非常方便,因?yàn)樗?jiǎn)化了整個(gè) CMS,并為我提供了編輯、創(chuàng)建或刪除所有類(lèi)型內(nèi)容的完全自主權(quán)。
另外,通過(guò) Strapi 構(gòu)建的內(nèi)容結(jié)構(gòu)非常靈活,因?yàn)槟憧梢詣?chuàng)建和重用內(nèi)容組和可定制的 API。
Broccoli
Broccoli是一個(gè)功能強(qiáng)大的構(gòu)建工具,運(yùn)行在ES6模塊上。構(gòu)建工具是一種軟件,可讓你將應(yīng)用程序或網(wǎng)站中的所有各種素材(例如圖像、CSS、JavaScript 等)組合成一種可分發(fā)的格式。Broccoli 將自己稱(chēng)為 “雄心勃勃的應(yīng)用程序的素材管道”。
使用 Broccoli 你需要一個(gè)項(xiàng)目目錄。有了項(xiàng)目目錄后,可以使用以下命令通過(guò) npm 安裝 Broccoli:
npm install --save-dev broccolinpm install --global broccoli-cli
你也可以使用 Yarn 進(jìn)行安裝。
當(dāng)前版本的 Node.js 就是使用該工具的最佳版本,因?yàn)樗峁┝碎L(zhǎng)期支持。它可以幫助你避免進(jìn)行更新和重新安裝過(guò)程中的麻煩。安裝過(guò)程完成后,可以在 Brocfile.js
文件中包含構(gòu)建規(guī)范。
在 Broccoli 中,抽象單位是“樹(shù)”,該樹(shù)將文件和子目錄存儲(chǔ)在特定子目錄中。因此,在構(gòu)建之前,你必須有一個(gè)具體的想法,你希望你的構(gòu)建是什么樣子的。
最好的是,Broccoli 帶有用于開(kāi)發(fā)的內(nèi)置服務(wù)器,可讓你將素材托管在本地 HTTP 服務(wù)器上。Broccoli 非常適合流線(xiàn)型重建,因?yàn)槠浜?jiǎn)潔的架構(gòu)和靈活的生態(tài)系統(tǒng)可提高重建和編譯速度。Broccoli 可讓你井井有條,以節(jié)省時(shí)間并在開(kāi)發(fā)過(guò)程中最大限度地提高生產(chǎn)力。
Danger
Danger是一個(gè)非常方便的開(kāi)源工具,用于簡(jiǎn)化你的拉取請(qǐng)求pull request(PR)檢查。正如 Danger 庫(kù)描述所說(shuō),該工具可通過(guò)管理 PR 檢查來(lái)幫助 “正規(guī)化” 你的代碼審查系統(tǒng)。Danger 可以與你的 CI 集成在一起,幫助你加快審核過(guò)程。
將 Danger 與你的項(xiàng)目集成是一個(gè)簡(jiǎn)單的逐步過(guò)程:你只需要包括 Danger 模塊,并為每個(gè)項(xiàng)目創(chuàng)建一個(gè) Danger 文件。然而,創(chuàng)建一個(gè) Danger 帳戶(hù)(通過(guò) GitHub 或 Bitbucket 很容易做到),并且為開(kāi)源軟件項(xiàng)目設(shè)置訪(fǎng)問(wèn)令牌更加方便。
可以通過(guò) NPM 或 Yarn 安裝 Danger。要使用 Yarn,請(qǐng)?zhí)砑?danger -D
到package.JSON
中。
將 Danger 添加到 CI 后,你可以:
- 高亮顯示重要的創(chuàng)建工件
- 通過(guò)強(qiáng)制鏈接到 Trello 和 Jira 之類(lèi)的工具來(lái)管理 sprint
- 強(qiáng)制生成更新日志
- 使用描述性標(biāo)簽
- 以及更多
例如,你可以設(shè)計(jì)一個(gè)定義團(tuán)隊(duì)文化并為代碼審查和 PR 檢查設(shè)定特定規(guī)則的系統(tǒng)。根據(jù) Danger 提供的元數(shù)據(jù)及其廣泛的插件生態(tài)系統(tǒng),可以解決常見(jiàn)的議題issue。
Snyk
網(wǎng)絡(luò)安全是開(kāi)發(fā)人員的主要關(guān)注點(diǎn)。Snyk是修復(fù)開(kāi)源組件中漏洞的最著名工具之一。它最初是一個(gè)用于修復(fù) Node.js 項(xiàng)目漏洞的項(xiàng)目,并且已經(jīng)演變?yōu)榭梢詸z測(cè)并修復(fù) Ruby、Java、Python 和 Scala 應(yīng)用程序中的漏洞。Snyk 主要分四個(gè)階段運(yùn)行:
- 查找漏洞依賴(lài)性
- 修復(fù)特定漏洞
- 通過(guò) PR 檢查預(yù)防安全風(fēng)險(xiǎn)
- 持續(xù)監(jiān)控應(yīng)用程序
Snyk 可以集成在項(xiàng)目的任何階段,包括編碼、CI/CD 和報(bào)告。我發(fā)現(xiàn)這對(duì)于測(cè)試 Node.js 項(xiàng)目非常有幫助,可以測(cè)試或構(gòu)建 npm 軟件包時(shí)檢查是否存在安全風(fēng)險(xiǎn)。你還可以在 GitHub 中為你的應(yīng)用程序運(yùn)行 PR 檢查,以使你的項(xiàng)目更安全。Synx 還提供了一系列集成,可用于監(jiān)控依賴(lài)關(guān)系并解決特定問(wèn)題。
要在本地計(jì)算機(jī)上運(yùn)行 Snyk,可以通過(guò) NPM 安裝它:
npm install -g snyk
Migrat
Migrat是一款使用純文本的數(shù)據(jù)遷移工具,非常易于使用。 它可在各種軟件堆棧和進(jìn)程中工作,從而使其更加實(shí)用。你可以使用簡(jiǎn)單的代碼行安裝 Migrat:
$ npm install -g migrat
Migrat 并不需要特別的數(shù)據(jù)庫(kù)引擎。它支持多節(jié)點(diǎn)環(huán)境,因?yàn)檫w移可以在一個(gè)全局節(jié)點(diǎn)上運(yùn)行,也可以在每個(gè)服務(wù)器上運(yùn)行一次。Migrat 之所以方便,是因?yàn)樗阌谙蛎總€(gè)遷移傳遞上下文。
你可以定義每個(gè)遷移的用途(例如,數(shù)據(jù)庫(kù)集、連接、日志接口等)。此外,為了避免隨意遷移,即多個(gè)服務(wù)器在全局范圍內(nèi)進(jìn)行遷移,Migrat 可以在進(jìn)程運(yùn)行時(shí)進(jìn)行全局鎖定,從而使其只能在全局范圍內(nèi)運(yùn)行一次。它還附帶了一系列用于 SQL 數(shù)據(jù)庫(kù)、Slack、HipChat 和 Datadog 儀表盤(pán)的插件。你可以將實(shí)時(shí)遷移狀況發(fā)送到這些平臺(tái)中的任何一個(gè)。
Clinic.js
Clinic.js是一個(gè)用于 Node.js 項(xiàng)目的開(kāi)源監(jiān)視工具。它結(jié)合了三種不同的工具 Doctor、Bubbleprof 和 Flame,幫助你監(jiān)控、檢測(cè)和解決 Node.js 的性能問(wèn)題。
你可以通過(guò)運(yùn)行以下命令從 npm 安裝 Clinic.js:
$ npm install clinic
你可以根據(jù)要監(jiān)視項(xiàng)目的某個(gè)方面以及要生成的報(bào)告,選擇要使用的 Clinic.js 包含的三個(gè)工具中的一個(gè):
- Doctor 通過(guò)注入探針來(lái)提供詳細(xì)的指標(biāo),并就項(xiàng)目的總體運(yùn)行狀況提供建議。
- Bubbleprof 非常適合分析,并使用
async_hooks
生成指標(biāo)。 - Flame 非常適合發(fā)現(xiàn)代碼中的熱路徑和瓶頸。
PM2
監(jiān)視是后端開(kāi)發(fā)過(guò)程中最重要的方面之一。PM2是一款 Node.js 的進(jìn)程管理工具,可幫助開(kāi)發(fā)人員監(jiān)視項(xiàng)目的多個(gè)方面,例如日志、延遲和速度。該工具與 Linux、MacOS 和 Windows 兼容,并支持從 Node.js 8.X 開(kāi)始的所有 Node.js 版本。
你可以使用以下命令通過(guò) npm 安裝 PM2:
$ npm install pm2 --g
如果尚未安裝 Node.js,則可以使用以下命令安裝:
wget -qO- https://getpm2.com/install.sh | bash
安裝完成后,使用以下命令啟動(dòng)應(yīng)用程序:
$ pm2 start app.js
關(guān)于 PM2 最好的地方是可以在集群模式下運(yùn)行應(yīng)用程序??梢酝瑫r(shí)為多個(gè) CPU 內(nèi)核生成一個(gè)進(jìn)程。這樣可以輕松增強(qiáng)應(yīng)用程序性能并最大程度地提高可靠性。PM2 也非常適合更新工作,因?yàn)槟憧梢允褂?“熱重載” 選項(xiàng)更新應(yīng)用程序并以零停機(jī)時(shí)間重新加載應(yīng)用程序??傮w而言,它是為 Node.js 應(yīng)用程序簡(jiǎn)化進(jìn)程管理的好工具。
Electrode
Electrode是 Walmart Labs 的一個(gè)開(kāi)源應(yīng)用程序平臺(tái)。該平臺(tái)可幫助你以結(jié)構(gòu)化方式構(gòu)建大規(guī)模通用的 React/Node.js 應(yīng)用程序。
Electrode 應(yīng)用程序生成器使你可以構(gòu)建專(zhuān)注于代碼的靈活內(nèi)核,提供一些出色的模塊以向應(yīng)用程序添加復(fù)雜功能,并附帶了廣泛的工具來(lái)優(yōu)化應(yīng)用程序的 Node.js 包。
可以使用 npm 安裝 Electrode。安裝完成后,你可以使用 Ignite 啟動(dòng)應(yīng)用程序,并深入研究 Electrode 應(yīng)用程序生成器。
你可以使用 NPM 安裝 Electrode:
npm install -g electrode-ignite xclap-cli
你最喜歡哪一個(gè)?
這些只是不斷增長(zhǎng)的開(kāi)源工具列表中的一小部分,在使用 Node.js 時(shí),這些工具可以在不同階段派上用場(chǎng)。你最喜歡使用哪些開(kāi)源 Node.js 工具?請(qǐng)?jiān)谠u(píng)論中分享你的建議。
via: https://opensource.com/article/20/1/open-source-tools-nodejs
作者:Hiren Dhadhuk選題:lujun9972譯者:stevenzdg988校對(duì):wxy
本文由 LCTT原創(chuàng)編譯,Linux中國(guó)榮譽(yù)推出
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀(guān)點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。