美文网首页
Thinkjs3 中自定义加载,实现插件目录功能

Thinkjs3 中自定义加载,实现插件目录功能

作者: 思考蛙 | 来源:发表于2018-07-09 17:09 被阅读0次

近期用 thinkjs3 实验业务的时候,希望拥有『业务插件』功能,如果登录验证码、短信发送、第三方登录等,这样团队在开发的过程中就可以只去做相应的业务插件,而非直接在基础项目中硬编码。

thinkjs3 框架提供的框架级的插件机制是:

  • 基于 Koa 2.x,兼容 middleware
  • 支持 Extend、Adapter 等插件方式

如果想实现我要达到的效果还是没有现成的机制,需要做些扩展,参考了一些基于 thinkjs 的项目,如果 CmsWing,它实现的插件功能比较简单粗暴,它的插件目录如下:

├── controller
│   ├── admin
│   ├── api
│   ├── center
│   ├── cmswing
│   ├── ext                              # 插件主目录
│   │   ├── ad                         # 具体插件(广告插件)
│   │   │   ├── admin.js          # 插件的 controller
│   │   │   ├── config.js         # 插件配置
│   │   │   ├── model             # 插件 model
│   │   │   └── view               # 插件视图文件目录
│   │   ├── atlas
│   │   ├── ……
│   ├── home
│   └── mod

直接嵌入进 controller 中,可以读性比较差,且概念上不好理解,但是简单好用。

我们希望效果如下:

.
├── addons                        # 插件目录
│   ├── ad                           # 插件(广告)
│   │   ├── config.js            # 插件配置
│   │   ├── controller          # 插件 controller 目录
│   │   ├── model                # 插件 model 目录
│   │   └── views                 # 插件视图文件 目录
│   └── captcha
├── admin
│   ├── controller
│   └── views
├── api
├── common
└── home

这样我们认为是比较方便后续做插件开发,拥有独立的目录,和独立的逻辑组成,插件有自己的 controller、model、view,以独立文件夹存在,在整个工程中有独立的插件集合目录。

前文说过 thinkjs 本身并没有提供这样的机制,因些要实现起来还需要做些工作:
1、用 thinkjs 建立一个支持多模块的工程
2、建立 addons 目录
3、在 common/bootstrap 的 worker 中将 addons 目录下的插件加载处理

先挖个坑,这两天补完后续

相关文章

  • Thinkjs3 中自定义加载,实现插件目录功能

    近期用 thinkjs3 实验业务的时候,希望拥有『业务插件』功能,如果登录验证码、短信发送、第三方登录等,这样团...

  • 实现一个自定义类加载器

    实现一个自定义类加载器,加载自定义目录下的类。 要读取的自定义目录的类 自定义ClassLoader 开始读取类 ...

  • Tp5 类的自动加载

    Tp5 类的自动加载 为了实现创建自定义目录 可以use他的类库文件来实现功能这时候就需要配置修改对应自动加载的文...

  • 使用Gradle编译Java工程之自定义Plugins篇

    文章目的 本章中我们将了解到如何自定义实现Gradle的插件(plugin)功能,并且亲自参与实现一个简单插件的全...

  • Android 插件化、热修复、增量更新介绍

    一、插件化 概述:Android插件化技术,可以实现功能模块的按需加载和动态更新,其本质是动态加载未安装的apk。...

  • ios 引导页

    目标功能 能够快速实现普通引导页功能. 提供自定义view的加载模式. 提供特定样式的加载模式,只需要配置即可. ...

  • flutter io 文件的操作

    引入第三方插件 在pubspec.yaml中 加入 插件的引用 终端加载插件 最后在项目中引入 查看目录 临时目录...

  • Android插件化之Hook Activity

    插件化:Android插件化技术,可以实现功能模块的按需加载和动态更新(从服务器上下载),其本质是动态加载未安装的...

  • EXCEL实现数据可视化

    一、主要实现功能及加载项插件EXCEL 数据切片(office2010版本以上)插入-加载项-xltools.ne...

  • Qt编写控件属性设计器2-拖曳控件

    一、前言 上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用...

网友评论

      本文标题:Thinkjs3 中自定义加载,实现插件目录功能

      本文链接:https://www.haomeiwen.com/subject/nzjtpftx.html