V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
moocean
V2EX  ›  问与答

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

  •  
  •   moocean · 2019-04-17 10:39:14 +08:00 · 2528 次点击
    这是一个创建于 2048 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可以实现这样的效果吗?有没有类似的网站可以参考?应该怎么来实现?
    求救😂
    25 条回复    2019-04-17 17:29:55 +08:00
    moocean
        1
    moocean  
    OP
       2019-04-17 10:43:45 +08:00
    求前端大佬回复一下呗
    Vegetable
        2
    Vegetable  
       2019-04-17 10:44:53 +08:00
    moocean
        3
    moocean  
    OP
       2019-04-17 10:48:16 +08:00
    @Vegetable 老哥不是这个,就是类似谷歌插件这样,不过插件的作用范围是项目,老哥,你这个是编辑器,然后的运行结果啊
    learnshare
        4
    learnshare  
       2019-04-17 10:51:16 +08:00   ❤️ 1
    iframe?
    unhappy224
        5
    unhappy224  
       2019-04-17 10:57:26 +08:00 via iPad
    可以吧,template 本来就是字符串啊
    whypool
        6
    whypool  
       2019-04-17 11:04:02 +08:00   ❤️ 1
    可以搞,成本相当于搞 erp 系统

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

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

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

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

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

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

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

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