web 应用怎么实现一个插件系统呢? - V2EX
zxCoder

web 应用怎么实现一个插件系统呢?

  •  
  •   zxCoder May 1, 2023 1995 views
    This topic created in 1133 days ago, the information mentioned may be changed or developed.

    我已经阅读了一些资料,但我仍然不太明白应该怎么做。

    假设我的应用是 React+Java ,我应该如何开发一个插件,使得它能够修改应用的 UI添加新的数据库表 /字段添加新的 api

    即插件系统应该怎么写?主系统应该提供什么?插件代码在哪里执行?如果是在后端执行?怎么修改前端页面?等等,好多问题

    codehz
        1
    codehz  
       May 1, 2023
    一般来说是一起改代码(
    所以如果都是 js 的话就很合理了(
    还有就是用类似 json 动态生成表单的方式,缺点是自由度比较低,但是基本上只要改后端就可以了,放在后端比较合适
    剩下的我能想到的就是所谓的低代码方案,其实就相当于把前面的两个方案结合起来,动态生成,但可以容易定制
    (这个容易定制当然也是有限定范围和代价的)
    mingl0280
        2
    mingl0280  
       May 1, 2023 via Android
    ……我不是写 React+Java 的,我用 C#,给你一点提示:
    1.插件可以以 loadlibrary 形式加载(二进制库)
    2.你在路由事件中可以向插件请求不同的操作,如 before/after 主程序的处理代码,然后根据插件的返回值决定要不要继续处理主程序的代码。
    lcwylxx921
        3
    lcwylxx921  
       May 1, 2023
    从比较高的层面去看,插件系统无非是要针对所在系统的特性与想要实现的需求,去设计一种数据结构,以及解释 /执行该数据结构的某种机制,让这个数据结构能够动态地进入到应用系统的生命周期中去,从而影响应用系统的某些功能。具体来看,你这个需求类似于基于 Web 的低代码,你可以参考这方面比较流行的一些开源项目的设计
    zxCoder
        4
    zxCoder  
    OP
       Jun 9, 2023
    后端的插件机制现在比较清楚了,但是前端的想了一下感觉不太可能,强如 vscode 也没能搞出来。。。顶多就是在一些预设定好的部分去修改 UI ,没有办法做到非常的灵活
    About     Help     Advertise     Blog     API     FAQ     Solana     2842 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:29 PVG 12:29 LAX 21:29 JFK 00:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86