详解开源的JavaScript插件化框架MinimaJS


Posted in Javascript onOctober 26, 2017

本文介绍我开发的一个JavaScript编写的插件化框架——MinimaJS,完全开源,源码下载地址:https://github.com/lorry2018/minimajs。该框架参考OSGi规范,将该规范定义的三大插件化功能在Node上实现了。MinimaJS三个功能:动态插件化,服务和扩展。该框架基于VSCode开发、使用ES6编码,基于Node 8开发,代码量几千行,非常的简单、优雅、轻量。框架的代码结构划分清晰,命名优雅。

我们先简单看一下,如何来使用这个框架。

通过这几行代码就可以创建一个插件框架,并且从当前的plugins目录下加载插件。

每一个插件在plugins目录下,由plugin.json来定义插件的基本信息、依赖信息、服务和扩展,该文件必须在插件根目录下,并且包含。一个插件由plugin.json和其它文件构成,其它文件为可选,可以包括js、html、css文件等。如下为一个插件示例。对于plugin.json文件,除了id是必填属性,其它均为可选,这意味着最小的插件为一个只定义了plugin.json且该文件只声明插件id。

详解开源的JavaScript插件化框架MinimaJS

通OSGi规范类似,每一个插件可以定义一个激活器,默认为Activator.js,如果命名不是默认值,则需要在plugin.json里面通过activator定义该激活器文件名。一个典型的Activator定义如下,用于声明插件的入口和出口。

这里start与stop分别代表入口和出口,用于服务注册、绑定、事件监听等。

插件间通过服务进行通讯,一个插件注册服务,一个插件消费服务。插件注册可以通过plugin.json来声明,也可以通过激活器start方法的PluginContext参数的addService来注册服务。如下所示,使用plugin.json来注册一个服务。

另一个插件,可以通过激活器来消费服务。

该框架还提供了插件扩展、类加载等特性,可以通过框架提供的实例来探索。以下是一个插件化的REST框架,基于插件化构建的实例,可以通过源码下载获取。

详解开源的JavaScript插件化框架MinimaJS

这个示例演示了Express、Art-Template、WebAPI框架、插件动态扩展、Web轻量框架的构建,详细可以查看实例。

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript下arguments,caller,callee,call,apply示例及理解
Dec 24 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
Dec 26 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
bootstrap 表单验证使用方法
Jan 11 Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
利用npm 安装删除模块的方法
May 15 Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 #Javascript
js插件实现图片滑动验证码
Sep 29 #Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
Oct 25 #Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 #Javascript
详解HTML5 使用video标签实现选择摄像头功能
Oct 25 #Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 #Javascript
JS使用tofixed与round处理数据四舍五入的区别
Oct 25 #Javascript
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
Laravel框架表单验证详解
2014/09/04 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
javascript折半查找详解
2015/01/26 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
Vuex提升学习篇
2018/01/11 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
pandas多级分组实现排序的方法
2018/04/20 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
英文求职信写作小建议
2014/02/16 职场文书
班主任寄语大全
2014/04/04 职场文书
公司担保书格式范文
2014/05/12 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
委托公证书样本
2015/01/23 职场文书
出国导师推荐信
2015/03/25 职场文书
python tkinter实现定时关机
2021/04/21 Python
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
angular4实现带搜索的下拉框
2022/03/25 Javascript