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