Fastify 如何寫(xiě)一個(gè)好的插件

2020-02-06 15:44 更新

首先,要感謝你決定為 Fastify 編寫(xiě)插件。Fastify 本身是一個(gè)極簡(jiǎn)的框架,插件才是它強(qiáng)大功能的來(lái)源,所以,謝謝你。Fastify 的核心原則是高性能、低成本、提供優(yōu)秀的用戶體驗(yàn)。當(dāng)編寫(xiě)插件時(shí),這些原則應(yīng)當(dāng)被遵循。因此,本文我們將會(huì)分析一個(gè)優(yōu)質(zhì)的插件所具有的特征。

需要一些靈感?你可以在 issue 中使用 "plugin suggestion" 標(biāo)簽!

代碼

Fastify 運(yùn)用了不同的技術(shù)來(lái)優(yōu)化代碼,其大部分都被寫(xiě)入了文檔。我們強(qiáng)烈建議你閱讀 插件指南 一文,以了解所有可用于構(gòu)建插件的 API 及其用法。

存有疑慮或?qū)で蠼ㄗh?我們非常高興能幫助你!只需在我們的 求助倉(cāng)庫(kù) 提一個(gè) issue 即可!

一旦你向我們的 生態(tài)列表 提交了一個(gè)插件,我們將會(huì)檢查你的代碼,需要時(shí)也會(huì)幫忙改進(jìn)它。

文檔

文檔相當(dāng)重要。假如你的插件沒(méi)有好的文檔,我們將拒絕將其加入生態(tài)列表。缺乏良好的文檔會(huì)提升用戶使用插件的難度,并有可能導(dǎo)致棄用。以下列出了一些優(yōu)秀插件文檔的示例:

許可證

你可以為你的插件使用自己偏好的許可,我們不會(huì)強(qiáng)求。我們推薦 MIT 許可證,因?yàn)槲覀冋J(rèn)為它允許更多人自由地使用代碼。其他可替代的許可證參見(jiàn) OSI list 或 GitHub 的 choosealicense.com。

示例

總在你的倉(cāng)庫(kù)里添加一個(gè)示例文件。這對(duì)于用戶是相當(dāng)有幫助的,也提供了一個(gè)快速的手段來(lái)測(cè)試你的插件。使用者們會(huì)為此感激的。

測(cè)試

徹底地測(cè)試一個(gè)插件,來(lái)驗(yàn)證其是否正常執(zhí)行,是極為重要的。缺乏測(cè)試會(huì)影響用戶的信任感,也無(wú)法保證代碼在不同版本的依賴下還能正常工作。

我們不強(qiáng)求使用某一測(cè)試工具。我們使用的是 tap,因?yàn)樗峁┝碎_(kāi)箱即用的并行測(cè)試以及代碼覆蓋率檢測(cè)。

代碼檢查

這一項(xiàng)不是強(qiáng)制的,但我們強(qiáng)烈推薦你在插件中使用一個(gè)代碼檢查工具。這可以幫助你保持統(tǒng)一的代碼風(fēng)格,同時(shí)避免許多錯(cuò)誤。

我們使用 standard,因?yàn)樗恍枞魏闻渲茫⑶胰菀着c測(cè)試集成。

持續(xù)集成

這一項(xiàng)也不是強(qiáng)制的,但假如你開(kāi)源發(fā)布你的代碼,持續(xù)集成能保證其他人的參與不會(huì)破壞你的插件,并檢查插件是否如預(yù)期般工作。Travis 持續(xù)集成系統(tǒng)對(duì)開(kāi)源項(xiàng)目免費(fèi),且易于安裝配置。此外,你還可以啟用 Greenkeeper 等服務(wù),它可以幫你將依賴保持在最新版本,并檢查在 Fastify 的新版本上你的插件是否存在問(wèn)題。

讓我們開(kāi)始吧!

棒極了,現(xiàn)在你已經(jīng)了解了如何為 Fastify 寫(xiě)一個(gè)好插件! 當(dāng)你完成了一個(gè)插件(或更多)之后,請(qǐng)讓我們知道!我們會(huì)將其添加到 生態(tài) 一節(jié)中!

想看更多真實(shí)的例子?請(qǐng)參閱:

  • point-of-view Fastify 的模板渲染 (ejs, pug, handlebars, marko) 插件。
  • fastify-mongodb Fastify 的 MongoDB 連接插件,通過(guò)它你可以在你服務(wù)器的每個(gè)部分共享同一個(gè) MongoDb 連接池。
  • fastify-multipart 為 Fastify 提供 mltipart 支持。
  • fastify-helmet 重要的請(qǐng)求頭安全插件。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)