electron 直接从JSON计算代码,这是个坏主意,还是有更好的方法?

quhf5bfb  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(160)

本质上,我在制作一个游戏,在电子内部使用JavaScript、CSS、HTML等,这样我就可以轻松访问本地文件。这个游戏将完全是本地和离线的。从不与服务器建立任何连接。
但我的想法是将小的自包含故事加载到一个池中,玩家可以从中进行选择,只需将它们放入一个文件夹中,它们就包含在游戏中。我使用JSON文件来实现这一点,但我还希望能够在启动时为故事模块创建特定的变量。
例如,我想为故事模块中的角色取一个随机的名字,所以在开始时:
"do_at_start" : "story_variables.character_name = randomChoiceFunction('name1', 'name2', 'name3')"等等。
我这样做的原因是,任何人都可以制作一个自定义的JSON文件,并以这种方式在游戏中使用它们,而不是编写函数等来制作一个新的模块。
我认为最简单的方法是在需要的时候在JSON值中的字符串中编写eval()代码。这是一个本地应用程序,这仍然是一个坏主意吗?或者还有其他方法可以实现这一点?理想情况下,我希望得到一些建议,我可以从头开始,作为一种练习,看看我是否可以从头开始编写这样的东西。但我仍将采纳关于其他办法的建议,如果这些办法更容易实施的话。

4nkexdtk

4nkexdtk1#

你所描述的似乎是一种完全合理的方式,允许你的应用程序本质上是一个modding API。 chrome (电子的基础)有一个相当强大的安全模型,所以我不会太担心恶意代码的风险。
如果您真的关心加强攻击面,请确保您使用follow the electron security best practices,并考虑直接使用disabling network access和/或limiting the app to a single folder。(SO链接作为示例提供,但您可能需要寻找其他实现)。
另一个选择是构建一个完整的自定义解析器,其中包含您可能想要使用的每个函数。您将扫描并替换输入文件中预定义的宏。如果您想继续这样做,我建议您看看Sugarcube的做法。

相关问题