首先,要感謝你決定為 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)參閱: