详解开源的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 相关文章推荐
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
javascript学习笔记(十) js对象 继承
Jun 19 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
js实现截图保存图片功能的代码示例
Feb 16 Javascript
javascript基于定时器实现进度条功能实例
Oct 13 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 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
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
用 JSON 处理缓存
2007/04/27 Javascript
javascript window对象属性整理
2009/10/24 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
使用Python & Flask 实现RESTful Web API的实例
2017/09/19 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python3 读取Word文件方式
2020/02/13 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python pandas如何向excel添加数据
2020/05/22 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
python excel多行合并的方法
2020/12/09 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
初中物理教学反思
2014/01/14 职场文书
酒店员工培训方案
2014/06/02 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python