详解开源的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 相关文章推荐
了解jQuery技巧来提高你的代码
Jan 08 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
Dec 11 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
微信小程序获取用户信息并保存登录状态详解
May 10 Javascript
vue 开发之路由配置方法详解
Dec 02 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 Javascript
js实现点赞按钮功能的实例代码
Mar 06 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 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
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
python根据京东商品url获取产品价格
2015/08/09 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
tensorflow如何批量读取图片
2019/08/29 Python
使用python远程操作linux过程解析
2019/12/04 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
大学生实习证明范本
2014/01/15 职场文书
我的长生果教学反思
2014/04/28 职场文书
环保倡议书50字
2014/05/15 职场文书
商场促销活动总结
2014/07/10 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
入党转正申请书范文
2019/05/20 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python