Egg 框架簡述 (二):插件使用

  1. 簡單的骨架認(rèn)知
  2. 插件使用(Plugins)
  3. 持久層方案(egg-sequelize)
  4. Worker 和 高效負(fù)載均衡
  5. Agent 代理角色
  6. 定時(shí)任務(wù)

筆者的其他文章推薦: 《JS 函數(shù)式編程思維簡述》

2. 插件(Plugins)

官方文檔:https://eggjs.org

? ? ? ?首先我們需要明確的是理逊,什么是插件橡伞?插件在應(yīng)用中扮演的角色就是,提升應(yīng)用擴(kuò)展能力的獨(dú)立的功能封裝晋被。比如我們當(dāng)前的每一個(gè)應(yīng)用都是一個(gè)機(jī)器人兑徘,他們大概長這個(gè)樣子:

image

我們在這些項(xiàng)目中,可以提取兩類功能:具備通用性的功能不具備通用性的功能羡洛。他們通常有以下區(qū)別:

名稱 注釋
通用性 并非每個(gè)應(yīng)用必須得有的可選功能挂脑,可由使用者自由選擇是否擴(kuò)展的能力
非通用性 只在某個(gè)應(yīng)用中必須存在,無法擴(kuò)展給別的應(yīng)用的主要業(yè)務(wù)能力

因此欲侮,插件的設(shè)計(jì)原則是:具備通用性的功能崭闲,可以將其抽離作為插件備用。
例如上圖的這四個(gè)機(jī)器人威蕉,我們可以發(fā)現(xiàn)他們都具備一些相似的特性刁俭,以及完全不同的特性:有的機(jī)器人裝載的手臂是相同的,有的裝載的腿是相同的韧涨。這些相同或相似的部分牍戚,我們便可以獨(dú)立抽象為一個(gè)插件,在有新的機(jī)器人需要?jiǎng)?chuàng)建時(shí)虑粥,有選擇性的考慮是否添加該插件如孝。這樣設(shè)計(jì)的好處是:有效的減少了相似的代碼在應(yīng)用中重復(fù)出現(xiàn)的概率,提高了可擴(kuò)展和可維護(hù)性娩贷。

插件在Egg中的應(yīng)用

原則: Egg 本身未攜帶過多插件第晰,僅配備了幾個(gè)企業(yè)級(jí)常用的插件,如 onerrorlogrotator茁瘦、i18n 等罗岖。更多插件應(yīng)由應(yīng)用開發(fā)者自行選擇擴(kuò)展,或自行開發(fā)腹躁。

應(yīng)用表現(xiàn): 擴(kuò)展已有的 Egg 內(nèi)置對(duì)象桑包。如使用 egg-sequelize 插件后,在 Service 部分便可以使用 ctx.model.xxx 的方式調(diào)用 sequelize 的數(shù)據(jù)模型纺非,該插件在實(shí)現(xiàn)原有的 ORM 操作過程中哑了,將操作對(duì)象擴(kuò)展到了 Context 對(duì)象上。

image

步驟1:插件選擇

我們可以在 Egg 相關(guān)社區(qū)烧颖,尋找我們感興趣的插件弱左。或通過 GitHub 搜索 egg-plugin 炕淮,尋找相關(guān)插件拆火。

步驟2:安裝、配置插件

Egg 插件通常以 NPM 包的形式存儲(chǔ)于遠(yuǎn)程庫中涂圆,我們搜索到感興趣的插件后们镜,直接通過 NPM 便可進(jìn)行安裝:

$ npm i egg-yourplugin --save

在安裝之后,于應(yīng)用中的 package.json 處對(duì)其進(jìn)行配置:

{
  "dependencies": {
    "egg-yourplugin": "^2.1.3"
  }
}

步驟3:啟用插件

我們需要在項(xiàng)目中的 ./config/plugin.ts 位置润歉,啟用相應(yīng)的插件模狭。如:

import { EggPlugin } from 'egg';

const plugin: EggPlugin = {
    
    // 啟用插件 yourplugin
    yourplugin: {
        enable: true,
        package: 'egg-yourplugin',
    },
}

步驟4:初始化插件

插件啟用之后,可以在配置文件中( 如 ./config/config.default.ts )踩衩,對(duì)插件進(jìn)行初始化設(shè)置:

import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
    const config = {} as PowerPartial<EggAppConfig>;
    // ...
    config.yourplugin = {
        field1, field2
    };
}

在應(yīng)用的配置文件中嚼鹉,對(duì)插件的初始化數(shù)據(jù),會(huì)覆蓋掉插件中的原有配置驱富,并傳遞給插件本身進(jìn)行處理(實(shí)際上每一個(gè)插件也是一個(gè)小的應(yīng)用)锚赤。

步驟5:使用插件

關(guān)于插件的使用方式,根據(jù)插件的構(gòu)建方式不同而不同褐鸥。每一個(gè)插件掛載到哪一個(gè)內(nèi)置對(duì)象中线脚,通常插件都會(huì)有詳細(xì)的說明文檔描述。我們可以尋找插件項(xiàng)目下的 README.md 查看晶疼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酒贬,一起剝皮案震驚了整個(gè)濱河市又憨,隨后出現(xiàn)的幾起案子翠霍,更是在濱河造成了極大的恐慌,老刑警劉巖蠢莺,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒匙,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锄弱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門考蕾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人会宪,你說我怎么就攤上這事肖卧。” “怎么了掸鹅?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵塞帐,是天一觀的道長。 經(jīng)常有香客問我巍沙,道長葵姥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任句携,我火速辦了婚禮榔幸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矮嫉。我一直安慰自己削咆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布蠢笋。 她就那樣靜靜地躺著态辛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挺尿。 梳的紋絲不亂的頭發(fā)上奏黑,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音编矾,去河邊找鬼熟史。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窄俏,可吹牛的內(nèi)容都是我干的蹂匹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凹蜈,長吁一口氣:“原來是場噩夢啊……” “哼限寞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仰坦,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤履植,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悄晃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玫霎,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庶近。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翁脆。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鼻种,靈堂內(nèi)的尸體忽然破棺而出反番,到底是詐尸還是另有隱情,我是刑警寧澤叉钥,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布恬口,位于F島的核電站,受9級(jí)特大地震影響沼侣,放射性物質(zhì)發(fā)生泄漏祖能。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一蛾洛、第九天 我趴在偏房一處隱蔽的房頂上張望养铸。 院中可真熱鬧,春花似錦轧膘、人聲如沸钞螟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳞滨。三九已至,卻和暖如春蟆淀,著一層夾襖步出監(jiān)牢的瞬間拯啦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工熔任, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褒链,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓疑苔,卻偏偏與公主長得像甫匹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惦费,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容