详解开源的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关于select的相关操作说明
Jan 13 Javascript
jQuery对表单的操作代码集合
Apr 06 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
Nov 26 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
详解js实时获取并显示当前时间的方法
May 10 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 Javascript
基于javascript处理nginx请求过程详解
Jul 07 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 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/03/16 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
django settings.py 配置文件及介绍
2019/07/15 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
ktv收银员岗位职责
2013/12/16 职场文书
运动会广播稿400字
2014/01/25 职场文书
四年大学自我鉴定
2014/02/17 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
2014年工商所工作总结
2014/12/09 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书