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

2024-04-07 16:17:54 +08:00
 bug51

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

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

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

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

1510 次点击
所在节点    前端开发
8 条回复
qq347891134
2024-04-07 16:21:43 +08:00
bug51
2024-04-07 16:31:39 +08:00
感觉在 vue composition 里面是能实现的,分成两部分:
v-html ,把用户的 vue 模板代码编译上去。
然后 js 区域弄一个 组合式函数 useSandbox ,用户编写,返回几个数据值。通过数据值来驱动模板状态更新。
ysc3839
2024-04-07 16:34:55 +08:00
印象中放 iframe 里面能实现沙盒,可以参考 ZeroNet 的方案。
不过这么做还是比较复杂,不太考虑性能的话,可以考虑用 wasm 跑一个 js 引擎。
tool2d
2024-04-07 16:39:12 +08:00
eval 挺实用的,我最喜欢用 eval 了。

你这个需求在传统行业里,叫脚本语言。
Dewent
2024-04-07 16:59:51 +08:00
看看 webcontainers,不确定是不是满足
sapjax
2024-04-07 18:09:24 +08:00
zhy0216
2024-04-07 18:13:04 +08:00
quickjs
crysislinux
2024-04-07 18:39:22 +08:00
可以用 https://github.com/justjake/quickjs-emscripten. iframe 要搞得安全还是要费点功夫,不过你可以加载一个跨域的 iframe 来做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX