W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
插件機(jī)制是我們框架的一大特色。它不但可以保證框架核心的足夠精簡、穩(wěn)定、高效,還可以促進(jìn)業(yè)務(wù)邏輯的復(fù)用,生態(tài)圈的形成。有人可能會(huì)問了
接下來我們就來逐一討論
我們?cè)谑褂?Koa 中間件過程中發(fā)現(xiàn)了下面一些問題:
綜上所述,我們需要一套更加強(qiáng)大的機(jī)制,來管理、編排那些相對(duì)獨(dú)立的業(yè)務(wù)邏輯。
一個(gè)插件其實(shí)就是一個(gè)『迷你的應(yīng)用』,和應(yīng)用(app)幾乎一樣:
他們的關(guān)系是:
插件一般通過 npm 模塊的方式進(jìn)行復(fù)用:
$ npm i egg-mysql --save |
注意:我們建議通過 ^ 的方式引入依賴,并且強(qiáng)烈不建議鎖定版本。
{ |
然后需要在應(yīng)用或框架的 config/plugin.js 中聲明:
// config/plugin.js |
就可以直接使用插件提供的功能:
app.mysql.query(sql, values); |
plugin.js 中的每個(gè)配置項(xiàng)支持:
在上層框架內(nèi)部內(nèi)置的插件,應(yīng)用在使用時(shí)就不用配置 package 或者 path,只需要指定 enable 與否:
// 對(duì)于內(nèi)置插件,可以用下面的簡潔方式開啟或關(guān)閉 |
同時(shí),我們還支持 plugin.{env}.js 這種模式,會(huì)根據(jù)運(yùn)行環(huán)境加載插件配置。
比如定義了一個(gè)開發(fā)環(huán)境使用的插件 egg-dev,只希望在本地環(huán)境加載,可以安裝到 devDependencies。
// npm i egg-dev --save-dev |
然后在 plugin.local.js 中聲明:
// config/plugin.local.js |
這樣在生產(chǎn)環(huán)境可以 npm i --production 不需要下載 egg-dev 的包了。
注意:
// config/plugin.js |
插件一般會(huì)包含自己的默認(rèn)配置,應(yīng)用開發(fā)者可以在 config.default.js 覆蓋對(duì)應(yīng)的配置:
// config/config.default.js |
具體合并規(guī)則可以參見配置。
參見文檔:插件開發(fā)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: