详解开源的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 相关文章推荐
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 Javascript
JS获取浏览器语言动态加载JS文件示例代码
Oct 31 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
May 04 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
使用JQuery中的trim()方法去掉前后空格
Sep 16 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
详解原生JS回到顶部
Mar 25 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 5.5 新特性
2013/07/02 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
yii操作cookie实例简介
2014/07/09 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Numpy中的mask的使用
2018/07/21 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
啤酒销售实习自我鉴定
2013/09/24 职场文书
工商学院毕业生自荐信
2013/11/12 职场文书
如何写好建议书
2014/03/13 职场文书
大学生评语大全
2014/04/18 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS