详解开源的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 学习 几种常用方法
Jun 11 Javascript
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
javascript学习笔记(六) Date 日期类型
Jun 19 Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
Mar 28 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
微信小程序实现倒计时补零功能
Jul 09 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 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
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
js类的静态属性和实例属性的理解
2009/10/01 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
js验证账户名是否重复
2020/05/26 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python中每次处理一个字符的5种方法
2015/05/21 Python
python中__slots__用法实例
2015/06/04 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
简历中个人自我评价分享
2014/03/15 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
房屋产权证明书
2015/06/19 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
高中运动会广播稿
2015/08/19 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
导游词之镜泊湖
2019/12/09 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python