moocean
V2EX  ›  问与答

老哥们,问一下, vue 写的项目,页面上可以做成模块吗?比如说 页面上预留一块地方,可以让客户自己写模块,或者我们写模块让他下载,然后自动加载到页面上

  •  
  •   moocean · Apr 17, 2019 · 3352 views
    This topic created in 2762 days ago, the information mentioned may be changed or developed.
    可以实现这样的效果吗?有没有类似的网站可以参考?应该怎么来实现?
    求救😂
    25 replies  •  2019-04-17 17:29:55 +08:00
    moocean
    moocean
    OP
    Apr 17, 2019
    1
    求前端大佬回复一下呗
    moocean
    moocean
    OP
    Apr 17, 2019
    3
    @Vegetable 老哥不是这个,就是类似谷歌插件这样,不过插件的作用范围是项目,老哥,你这个是编辑器,然后的运行结果啊
    learnshare
    learnshare
    Apr 17, 2019❤️1
    4
    iframe?
    unhappy224
    unhappy224
    Apr 17, 2019 via iPad
    5
    可以吧,template 本来就是字符串啊
    whypool
    whypool
    Apr 17, 2019❤️1
    6
    可以搞,成本相当于搞 erp 系统

    首先要有一个拉取 vue 文件的管理系统,除了 vue 文件之外,还要一个描述文件,这个文件功能是什么

    然后,重点来了,分析描述文件,是插入组件还是插入页面

    组件是否有依赖,如果有,在源码目录执行 npm i
    分析组件插入的目标页面,生成模板指令标签,引用模板
    如果有子父组件传值,需要更改传入参数和返回结果,需要分析 data 和 methods 里面的代码

    如果是独立的页面,重复上面的步骤,然后分析是否有 vuex 状态管理,是否有路由以及路由权限,路由参数

    这些都搞完,就可以执行 build 生成新文件

    简单点就直接搞一套正则规则去分析源码,按特定格式写模板,复杂点上机器学习分析源码,先训练个几百亿次,准确度 99%就行
    moocean
    moocean
    OP
    Apr 17, 2019
    7
    @learnshare 这个标签可以大量用吗,再页面上?会不会影响性能
    moocean
    moocean
    OP
    Apr 17, 2019
    8
    @whypool 老哥,这个成本很高啊,我们这个因为是操作数据库的,和 phpadmin 差不多,这样搞老难了,前端还我一个,还有 poc 压力
    moocean
    moocean
    OP
    Apr 17, 2019
    9
    能不能这样,模块写好,隐藏起来,然后做一个市场,他安装了某个模块,就让那个模块显示出来,伪的实现
    AlphaTr
    AlphaTr
    Apr 17, 2019❤️1
    10
    ```
    const component = fetch("http://example.com/component.js")

    new Vue({
    render(createElement) {
    return createElement(component, {props})
    }
    }).$mount().$el
    ```

    这样子动态渲染别人的模块应该就可以
    airyland
    airyland
    Apr 17, 2019 via iPhone
    11
    将客户代码插入相应位置直接在服务端 build 就行了,虽然不够灵活实时,但是简单粗暴。
    moocean
    moocean
    OP
    Apr 17, 2019
    12
    @airyland 老哥,那自己的代码,如何实现模块的添加,删除啥的,总觉得,模块隐藏,显示不太好,还有这个,插入相应位置,怎么插入呢,vue 已经打包好的前端代码咋放进去,老哥,我还是个菜鸡,不太懂
    moocean
    moocean
    OP
    Apr 17, 2019
    13
    新的代码插件如何插入到老代码呢?
    InternetExplorer
    InternetExplorer
    Apr 17, 2019❤️1
    14
    空着的位置放个 div,给一个唯一的 ID,要某个组件的时候加载那个组件的 js 文件,vue 就挂到那个 div 上
    jadec0der
    jadec0der
    Apr 17, 2019
    15
    可以让客户装油猴写脚本
    1KN6sAqR0a57no6s
    1KN6sAqR0a57no6s
    Apr 17, 2019 via Android
    16
    @InternetExplorer 我也觉得是这样。但是楼上的老哥都已经要上机器学习了,就没敢说话。
    momocraft
    momocraft
    Apr 17, 2019
    17
    加钱 找人
    moocean
    moocean
    OP
    Apr 17, 2019
    18
    也就是说,当我点击安装某个插件的时候,这个组件就挂到空 div 上了,然后各种操作预设好,可以直接用,那这样还是要在服务器 build 把,再别的电脑登录了,就没有这个组件了,是不是需要后台需要记住组件的状态,安装了还是未安装
    moocean
    moocean
    OP
    Apr 17, 2019
    19
    @momocraft 这个就很难了,老哥,小公司,小公司,救我菜鸡前端
    moocean
    moocean
    OP
    Apr 17, 2019
    20
    @jadec0der 这个不可能的把,毕竟用户不是都会脚本,还有,项目里面的报表都是以编辑器写代码形式做的,和 echarts 实例那样差不多的操作,只不过里面数据替换
    moocean
    moocean
    OP
    Apr 17, 2019
    21
    能不能像 vscode 那样的插件机制呢,是不是对一个 webView api😂😂😂😂😂
    cydysm
    cydysm
    Apr 17, 2019
    22
    如果都是预设好的话 render 哪些组件 从服务端获取 我觉得是可行 是否安装可以在接口上增删改
    CloudnuY
    CloudnuY
    Apr 17, 2019
    23
    类似 xss 吗……
    gaocc
    gaocc
    Apr 17, 2019
    24
    @moocean 这种伪实现……怎么感觉像是权限控制。个人觉得是可以实现,但具体还是得根据甲方需求来吧,做一个能符合 70 客户的就很好了,剩下的基本都是定制化的
    moocean
    moocean
    OP
    Apr 17, 2019
    25
    @gaocc 老哥,暂时还没有甲方呢,快进行 poc 了,想要这样的功能,老板软件工程时代,模块化过来的,追求这种模块化
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1052 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    ♥ Do have faith in what you're doing.