所以我有一个带有一些A帧代码的html文件(它只是向场景添加一个球)。还有一个.js脚本,其中包含可以移动球的函数,如moveUp();.现在我希望能够使用JavaScript的eval执行一些用.txt文件编写的JavaScript代码(使用移动功能)。
但是客户端JavaScript无法读取或写入.txt文件(我不想在运行时自己选择文件)。有没有办法在JavaScript var中获取.txt文件的数据,而无需设置服务器和使用服务器端JavaScript?
答案 0 :(得分:2)
我会就你将如何进行提出建议。听起来你真正需要的是一种允许用户将commands
而不是实际code
保存到文件中的方法,然后允许再次加载这些命令并影响位置等屏幕上的形状。
假设您有move
函数,其中包含object
,x
和y
个参数:
function move(obj, x, y) {
// Move obj using x and y coords
}
也许你有一个允许用户输入这些坐标的表单,但不知何故你想要保存这些坐标和动作(move
)。
最简单的方法是使用一组对象。这样做的好处是你可以stringify
进入JSON,保存这些数据,然后重新加载它并将它解析回你的应用程序,直到你的内容。
例如,您可以将数据保存为数组中的一系列命令,如下所示:
const commands = [
{ action: 'move', x: 30, y: 50 },
{ action: 'move', x: 300, y: 510 }
];
您可以通过push
将更多命令对象添加到阵列中。
然后你可能有一个包含一些动作功能的对象。让我们再次使用move
:
const commandFns = {
move: function (obj, x, y) {
// Move obj using x and y coords
}
}
因此,要将命令移开,只需遍历actions数组,调用相应的函数。
const obj = currentShapeToBeMoved;
commands.forEach(({ action, x, y }) => actionFns[action](obj, x, y));
要保存命令JSON.stringify(commands)
命令数据对象。也许将它保存到文件到磁盘,或者甚至更好,localStorage
。
要将文件加载回应用程序,请找到保存数据的位置,然后JSON.parse(data)
返回其数组形式。
简而言之,您不会在文件中附加任何内容。您所做的只是加载数据,更新应用程序中的数据,然后保存相同/修改后的数据。