如何使网络用户能够使用代码控制代码?

时间:2018-10-14 07:30:09

标签: javascript

我使用p5.js制作了一个有趣的小工具,我想在我的网页上分享。我不是网络开发人员,并且小工具只是一个静态网页,其中显示一些图形,真的没什么花哨的。

当前,要使用该小工具,您必须编写一个小Javascript函数,该函数在小工具的主循环内被调用,而后者又会调用影响小工具行为的各种函数。因此,我想制作一个静态网页,用户可以在其中输入代码来控制小工具。为此,我似乎有三个主要选择:

  1. 仅允许用户在文本框中输入Javascript,然后使用new Function()来运行它。

  2. 允许用户输入Javascript,但可以使用一种或多种技术对其进行沙箱处理。

  3. 允许用户使用其他某种语言编写代码,然后在我的代码中对其进行解析和解释。

我的第一个问题是,选项1是否安全,因为这是一个静态网页,并且所有内容都在浏览器中运行?以前有很多问题本质上都在问这个问题,但是它们大多是很老的了,答案似乎在“不不安全”和“只要在用户本地计算机上就可以了”之间平均分配。如果能够在2018年安全地完成此任务,那么我的问题就解决了,我会很高兴。

如果不建议使用选项1,那么我的第二个问题是,实现选项2的简便方法吗?有多个可用于沙箱化Javascript代码的库,但是它们似乎都有更多功能比我在静态页面上运行用户代码的简单情况更重要。对先前类似问题的一些回答说,应该在iframe中运行用户代码,但是作为Web / Javascript新手,我不确定这到底意味着什么或如何实现。可以简单地完成沙盒化用户代码,还是我必须学习这些重量级的库之一?

如果选项1和2失败,我的第三个问题是,选项3现有什么解决方案?用户代码根本不需要做任何复杂的事情,只需将内容分配给变量,调用基本数学函数,并调用在脚本中实现的一些Javascript函数。原则上,设计和实现具有这些功能的迷你语言并不难,但这将成为一个全新的项目。是否存在为此目的而设计的Java解释器的现有语言?

0 个答案:

没有答案