V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bug51
V2EX  ›  前端开发

大佬们 有没有“运行第三方 js”的库?最好带沙盒的那种

  •  
  •   bug51 · 262 天前 · 1160 次点击
    这是一个创建于 262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 vue 低代码项目,想用户在页面上 ide 控件输入一段 js ,然后在对应组件的生命周期回调中运行这段 js 。

    其实就是类似 jsonp 创建 script 执行或者调用 worker 执行这段 js 之类的。单纯一个 eval 非常不实用。

    突然网上看到说要为 js 弄一个沙盒沙箱模块,好像也有道理。这个实现难度就不是个人短期能搞定的。这个直接引用别人的库或者开源模块吧,好像 github 没找到。

    这么多厂商做低代码,应该有开源这个模块的吧。。。。

    第 1 条附言  ·  262 天前
    2 楼的思路搞错了,低代码的“自定义组件”可以满足,能抄的项目还是挺多的。

    而生命周期里面执行 “自定义代码”,主要是需要先决定“自定义代码”能获取到什么 context
    8 条回复    2024-04-07 18:39:22 +08:00
    qq347891134
        1
    qq347891134  
       262 天前   ❤️ 1
    bug51
        2
    bug51  
    OP
       262 天前
    感觉在 vue composition 里面是能实现的,分成两部分:
    v-html ,把用户的 vue 模板代码编译上去。
    然后 js 区域弄一个 组合式函数 useSandbox ,用户编写,返回几个数据值。通过数据值来驱动模板状态更新。
    ysc3839
        3
    ysc3839  
       262 天前 via Android
    印象中放 iframe 里面能实现沙盒,可以参考 ZeroNet 的方案。
    不过这么做还是比较复杂,不太考虑性能的话,可以考虑用 wasm 跑一个 js 引擎。
    tool2d
        4
    tool2d  
       262 天前
    eval 挺实用的,我最喜欢用 eval 了。

    你这个需求在传统行业里,叫脚本语言。
    Dewent
        5
    Dewent  
       262 天前 via iPhone
    看看 webcontainers,不确定是不是满足
    sapjax
        6
    sapjax  
       262 天前   ❤️ 1
    zhy0216
        7
    zhy0216  
       262 天前 via Android
    quickjs
    crysislinux
        8
    crysislinux  
       262 天前 via Android
    可以用 https://github.com/justjake/quickjs-emscripten. iframe 要搞得安全还是要费点功夫,不过你可以加载一个跨域的 iframe 来做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.