详解开源的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 StringBuilder类实现
Dec 22 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
javascript数组去重的方法汇总
Apr 14 Javascript
JavaScript基本数据类型及值类型和引用类型
Aug 25 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
详解Nuxt.js部署及踩过的坑
Aug 07 Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 Javascript
Vue 数据绑定的原理分析
Nov 16 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结合Ueditor并修改图片上传路径
2016/10/16 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
python 自动批量打开网页的示例
2019/02/21 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
银行开业庆典方案
2014/02/06 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
小时代观后感
2015/06/10 职场文书