大家有没有在自己的代码里面,动态的下载并执行一段第三方的 js 文件或者代码?

2022-03-31 11:34:56 +08:00
 yazoox

现在客户有一个需求,要在我们的一个包 /package ( React, typescript,编写的,用于显示数据的),展示数据的之前,要从客户的一个服务器上,下载一个.js 文件,执行一下,生成一些数据,导入到我们的数据中,然后再渲染展示数据。

这个 js 文件,是动态决定的。甚至可能不止一个。

这个有没有比较好的实践方法?

3545 次点击
所在节点    JavaScript
24 条回复
libook
2022-03-31 18:39:39 +08:00
@yazoox #16 我没有具体做过,我的思路就是用 WebWorkers 、WebAssembly 等天然提供沙盒的机制来跑,注意它们的沙盒基本是运行方面的隔离,一些同域的资源也可能可以访问,具体可以去 MDN 上仔细研究一下。
还可以找找看有没有一些前端沙盒的库,我听说 Deno 可以在浏览器端作为一个沙盒环境运行(本质好像也是 WebAssembly ),本人没用过,你可以去看一下是不是满足需要。

沙盒和外界程序之间使交流用 postmessage 等机制,对数据交流进行严格管制,就可以避免安全问题,同时记得记录关键日志(可以从前端发到你们自己的日志服务器),以便于审计和回溯。
yazoox
2022-04-01 09:01:00 +08:00
@seakingii
let result = window[functionName](userId);
加载的 script 中的函数是通过 window[name]访问的啊。got it. thx

@libook 嗯,用 WebWorkers 试试~ thx
han3sui
2022-04-01 17:25:33 +08:00
npm i loadjs
SmiteChow
2022-04-02 16:05:21 +08:00

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

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

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

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

© 2021 V2EX