详解开源的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 相关文章推荐
让mayfish支持mysqli数据库驱动的实现方法
May 22 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 Javascript
JS获取和修改元素样式的实例代码
Aug 06 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
详解webpack2+React 实例demo
Sep 11 Javascript
Thinkjs3新手入门之如何使用静态资源目录
Dec 06 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
详解微信小程序缓存--缓存时效性
May 02 Javascript
如何构建一个Vue插件并生成npm包
Oct 26 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模板引擎SMARTY
2006/10/09 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
送你43道JS面试题(收藏)
2019/06/17 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
什么是servlet链?
2014/07/13 面试题
小饰品店的创业计划书范文
2013/12/28 职场文书
会计求职信
2014/05/29 职场文书
小学班主任培训方案
2014/06/04 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
现场施工员岗位职责
2015/04/11 职场文书
安全教育第一课观后感
2015/06/17 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
思想工作总结范文
2015/08/12 职场文书
Python保存并浏览用户的历史记录
2022/04/29 Python