一个 vue 低代码项目,想用户在页面上 ide 控件输入一段 js ,然后在对应组件的生命周期回调中运行这段 js 。
其实就是类似 jsonp 创建 script 执行或者调用 worker 执行这段 js 之类的。单纯一个 eval 非常不实用。
突然网上看到说要为 js 弄一个沙盒沙箱模块,好像也有道理。这个实现难度就不是个人短期能搞定的。这个直接引用别人的库或者开源模块吧,好像 github 没找到。
这么多厂商做低代码,应该有开源这个模块的吧。。。。
1
qq347891134 212 天前 1
vm-browserify
https://www.npmjs.com/search?q=vm-browserify |
2
bug51 OP 感觉在 vue composition 里面是能实现的,分成两部分:
v-html ,把用户的 vue 模板代码编译上去。 然后 js 区域弄一个 组合式函数 useSandbox ,用户编写,返回几个数据值。通过数据值来驱动模板状态更新。 |
3
ysc3839 212 天前 via Android
印象中放 iframe 里面能实现沙盒,可以参考 ZeroNet 的方案。
不过这么做还是比较复杂,不太考虑性能的话,可以考虑用 wasm 跑一个 js 引擎。 |
4
tool2d 212 天前
eval 挺实用的,我最喜欢用 eval 了。
你这个需求在传统行业里,叫脚本语言。 |
5
Dewent 212 天前 via iPhone
看看 webcontainers,不确定是不是满足
|
6
sapjax 212 天前 1
|
7
zhy0216 212 天前 via Android
quickjs
|
8
crysislinux 212 天前 via Android
可以用 https://github.com/justjake/quickjs-emscripten. iframe 要搞得安全还是要费点功夫,不过你可以加载一个跨域的 iframe 来做。
|