V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
moonrailgun
V2EX  ›  分享创造

MiniStar 一个用于实现微内核(插件化)架构的前端框架

  •  1
     
  •   moonrailgun ·
    moonrailgun · 2021-06-04 08:45:14 +08:00 · 2702 次点击
    这是一个创建于 1269 天前的主题,其中的信息可能已经有所发展或是发生改变。

    什么是微内核(插件化)

    https://segmentfault.com/a/1190000016862735

    ministar 的核心设计理念

    • 简单

    由于基座项目与插件项目都能做到技术栈无关,ministar 对于用户而言只是一个类似 jQuery 插件系统的库,你需要通过 ministar/runtime 来加载插件与共享依赖组件,然后用 ministar/bundler 来构建插件项目, 即可实现原系统插件化的改造。

    • 解耦 /技术栈无关

    微内核的核心目标与微前端一样,是将巨石应用拆解成若干可以自治的松耦合微应用,而 ministar 的诸多设计均是秉持这一原则,除了需要共享的公共依赖与基座项目提供的能力,插件项目拥有自己的上下文,依赖管理,以及相互的通讯机制,这样来保证插件具有独立开发的能力。并保证了与其它依赖共享类型的能力。

    特性

    • 开箱即用, 也可以进行定制化改造。
    • 技术栈无关,任意技术栈的应用均可 使用 /接入,不论是 React/Vue/Angular/Svelte/JQuery 还是其他等框架。
    • 共享依赖,同样的依赖只需要加载一次,减少不必要的体积与打包时间
    • 像调用原生组件一样进行插件间的依赖调用
    • 基于 Rollup 进行打包,快!
    • 为现代前端而生。在过去,我们通过 window 暴露方法,现在我们所有的代码都需要编译成模块,而暴露也通过模块
    • 拓扑依赖排序,防止时序性的问题。

    项目文档

    10 条回复    2021-06-07 15:40:28 +08:00
    del1214
        1
    del1214  
       2021-06-04 08:55:14 +08:00
    看来最近这类的项目没少写,大家都在造轮子,支持一下
    musi
        2
    musi  
       2021-06-04 09:07:48 +08:00
    看了下大佬的 github 提交记录,直呼牛逼
    Ritter
        3
    Ritter  
       2021-06-04 10:16:17 +08:00
    就是一个插件系统吗
    meloncc
        4
    meloncc  
       2021-06-04 11:06:17 +08:00
    看了一下代码,这个框架与微前端相比,针对的是模块,颗粒度更小,让我联想到可配置工作流的应用场景中适不适用。
    ericgui
        5
    ericgui  
       2021-06-04 13:08:22 +08:00 via iPhone
    这个有点意思
    moonrailgun
        6
    moonrailgun  
    OP
       2021-06-04 13:58:12 +08:00
    @del1214 有其他类似的框架么?我找不到才造的这个轮子

    @Ritter 可以这么理解,ministar 可以在不改变原有代码习惯的前提下渐进化完成对原有系统改成插件化的改造

    @meloncc 动态工作流可以考虑试试使用动态生成代码的方式来实现。插件机制相比动态代码而言更加死,不是很适合工作流场景
    superliwei
        7
    superliwei  
       2021-06-04 23:09:20 +08:00
    我现在的项目也是插件化的设计,每个插件有自己的作用域,能配置,能设置,支持多语言,多条件编译,能安装能卸载,独立编译。支持树状插件扩展,意思就是插件可以扩展插件。
    9ki
        8
    9ki  
       2021-06-05 09:47:31 +08:00
    @superliwei 考虑开源出来吗?
    moonrailgun
        9
    moonrailgun  
    OP
       2021-06-07 14:15:00 +08:00
    @superliwei 插件化的思想并不新鲜,有兴趣交流一下你的项目的实现细节么。
    superliwei
        10
    superliwei  
       2021-06-07 15:40:28 +08:00
    @moonrailgun 我现在的设计也有一问题,我做的是一个实时白板协作系统,系统中有很多的应用和插件,你可以理解都是插件只是不同的形态,有后台运行的,有按需加载的,有需要预加载的。每个应用都有自己的配置文件和多个语言包,还有单独的配置界面,整个交互界面类 iOS 。每个应用需要单独编译。同于不同的用户安装的应用和插件不同,所以我没法把一些文件一起打包,就会造成进入系统需要加载很多小文件,比如每个应用的配置文件,当前应用语言包,应用程序包,素材包等,这样就会大量请求。目前没想到更好的方案能减少请求数。贴一下网址: https://boardos.online
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:18 · PVG 17:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.