详解开源的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面向对象之静态与非静态类
Feb 03 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
jQuery中DOM操作实例分析
Jan 23 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
Sep 08 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
node中的session的具体使用
Sep 14 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 Javascript
Vue修改项目启动端口号方法
Nov 07 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 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
单位速度在实战中的运用
2020/03/04 星际争霸
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
python不带重复的全排列代码
2013/08/13 Python
Python Flask基础教程示例代码
2018/02/07 Python
分析Python读取文件时的路径问题
2018/02/11 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python word转pdf代码实例
2019/08/16 Python
python 动态调用函数实例解析
2019/10/21 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
详解Python流程控制语句
2020/10/28 Python
《自选商场》教学反思
2014/02/14 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
Linux安装Docker详细教程
2022/07/07 Servers