詳解開源的JavaScript插件化框架MinimaJS
本文介紹我開發(fā)的一個(gè)JavaScript編寫的插件化框架——MinimaJS,完全開源,源碼下載地址:https://github.com/lorry2018/minimajs。該框架參考OSGi規(guī)范,將該規(guī)范定義的三大插件化功能在Node上實(shí)現(xiàn)了。MinimaJS三個(gè)功能:動(dòng)態(tài)插件化,服務(wù)和擴(kuò)展。該框架基于VSCode開發(fā)、使用ES6編碼,基于Node 8開發(fā),代碼量幾千行,非常的簡單、優(yōu)雅、輕量??蚣艿拇a結(jié)構(gòu)劃分清晰,命名優(yōu)雅。
我們先簡單看一下,如何來使用這個(gè)框架。
通過這幾行代碼就可以創(chuàng)建一個(gè)插件框架,并且從當(dāng)前的plugins目錄下加載插件。
每一個(gè)插件在plugins目錄下,由plugin.json來定義插件的基本信息、依賴信息、服務(wù)和擴(kuò)展,該文件必須在插件根目錄下,并且包含。一個(gè)插件由plugin.json和其它文件構(gòu)成,其它文件為可選,可以包括js、html、css文件等。如下為一個(gè)插件示例。對(duì)于plugin.json文件,除了id是必填屬性,其它均為可選,這意味著最小的插件為一個(gè)只定義了plugin.json且該文件只聲明插件id。
通OSGi規(guī)范類似,每一個(gè)插件可以定義一個(gè)激活器,默認(rèn)為Activator.js,如果命名不是默認(rèn)值,則需要在plugin.json里面通過activator定義該激活器文件名。一個(gè)典型的Activator定義如下,用于聲明插件的入口和出口。
這里start與stop分別代表入口和出口,用于服務(wù)注冊(cè)、綁定、事件監(jiān)聽等。
插件間通過服務(wù)進(jìn)行通訊,一個(gè)插件注冊(cè)服務(wù),一個(gè)插件消費(fèi)服務(wù)。插件注冊(cè)可以通過plugin.json來聲明,也可以通過激活器start方法的PluginContext參數(shù)的addService來注冊(cè)服務(wù)。如下所示,使用plugin.json來注冊(cè)一個(gè)服務(wù)。
另一個(gè)插件,可以通過激活器來消費(fèi)服務(wù)。
該框架還提供了插件擴(kuò)展、類加載等特性,可以通過框架提供的實(shí)例來探索。以下是一個(gè)插件化的REST框架,基于插件化構(gòu)建的實(shí)例,可以通過源碼下載獲取。
這個(gè)示例演示了Express、Art-Template、WebAPI框架、插件動(dòng)態(tài)擴(kuò)展、Web輕量框架的構(gòu)建,詳細(xì)可以查看實(shí)例。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript對(duì)talbe進(jìn)行動(dòng)態(tài)添加、刪除、驗(yàn)證實(shí)現(xiàn)代碼
javascript對(duì)talbe進(jìn)行動(dòng)態(tài)添加、刪除、驗(yàn)證實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-03-03微信小程序開發(fā)app.json全局配置實(shí)戰(zhàn)指南
app.json文件是小程序的全局配置文件,下面這篇文章主要給大家介紹了關(guān)于微信小程序開發(fā)app.json全局配置的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05bootstrap fileinput完整實(shí)例分享
這篇文章主要為大家分享文件上傳組件bootstrap fileinput完整實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11淺聊一下Javascript中的數(shù)據(jù)類型和類型轉(zhuǎn)換
在JavaScript中,理解數(shù)據(jù)類型,如何區(qū)分它們,以及它們?nèi)绾伪晦D(zhuǎn)換是至關(guān)重要的,在這篇文章中,我們將探討這些主題,以幫助大家鞏固JavaScript基礎(chǔ)2023-08-08javascript for循環(huán)從入門到偏門(效率優(yōu)化+奇特用法)
for循環(huán)是非?;A(chǔ)的javascript知識(shí),但由于JS太靈活了,所以可能出現(xiàn)一些讓初學(xué)者崩潰的寫法。我決定由淺入深的解釋一下for循環(huán),算是給比我還新手的新手解惑吧,少走彎路2012-08-08JavaScript如何實(shí)現(xiàn)數(shù)組內(nèi)的值累加
我們會(huì)經(jīng)常在開發(fā)過程中,需要獲取數(shù)組中的值累加,所以下面這篇文章主要給大家介紹了關(guān)于JavaScript如何實(shí)現(xiàn)數(shù)組內(nèi)的值累加的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-11-11Google排名中的10個(gè)最著名的 JavaScript庫
本文,我們將使用 Google 搜索出排名前 10 位的 JavaScript 庫,并對(duì)它們逐一進(jìn)行介紹。2010-04-04微信小程序?qū)崿F(xiàn)點(diǎn)擊圖片放大預(yù)覽
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)點(diǎn)擊圖片放大預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10