详解开源的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 相关文章推荐
JS 自定义函数缺省值的设置方法
May 05 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
Vue实现table上下移动功能示例
Feb 21 Javascript
解决layui弹框失效的问题
Sep 09 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 Javascript
使用Karma做vue组件单元测试的实现
Jan 16 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
May 16 Javascript
微信小程序实现选项卡滑动切换
Oct 22 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
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
JS 建立对象的方法
2007/04/21 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
js编写选项卡效果
2017/05/23 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
大学军训自我鉴定
2013/12/15 职场文书
经销商会议欢迎词
2014/01/11 职场文书
火锅店的活动方案
2014/08/15 职场文书
销售员岗位职责
2015/02/10 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
高中英语教学反思范文
2016/03/02 职场文书
python中sys模块的介绍与实例
2021/04/17 Python