详解开源的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的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
为JavaScript添加重载函数的辅助方法
Jul 04 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
Dec 17 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
详解JS对象封装的常用方式
Dec 30 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 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电台频率大全 - 10 江苏省
2020/03/11 无线电
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
js实现选项卡效果
2020/03/07 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python列表使用实现名字管理系统
2019/01/30 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
python requests.get带header
2020/05/05 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
技术总监管理职责范本
2014/03/06 职场文书
德语专业求职信
2014/03/12 职场文书
高级工程师英文求职信
2014/03/19 职场文书
初中家长寄语
2014/04/02 职场文书
小区文明倡议书
2014/05/16 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏