gpt4 book ai didi

javascript - 如何使用 vanilla javascript 在 Node 服务器上执行函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:40 25 4
gpt4 key购买 nike

好吧,基本上我正在尝试创建一个使用 JSON 文件作为数据库的打字游戏。我正在使用 Nodejs 来通过 fs 模块操纵 .json 文件的使用。我想要做的是有一个 main.js 来操作网站的外观,其中包含一个高分表,我还想要一个player.js,它将在后端运行,更新包含每个玩家姓名和高分的 JSON 文件。

所以我正在尝试它。我经历了惨痛的教训才知道 require() 是一个 Node 函数。我希望 main.js 从player.js 调用函数并向其发送参数。

var playerArr = player.updatePlayers("Rain", 30);

我知道这不起作用,但在player.js中用node编写的updatePlayers()函数返回一个数组,我想将其设置为main.js中的playerArr。

require() 在浏览器中出现错误,因为它不是普通 Javascript 的一部分,而且我知道它必须在 Node 服务器上运行。

有什么办法可以做到这一点吗?这是一个学校项目,我希望能够在其中实现 Nodejs 和 JSON。

<小时/>

好吧,除了一件关键的事情之外,一切都正常......数组没有被发送回浏览器。我决定使用 Express 的路线:

app.get("/:name,:score", returnScoreboard);
function returnScoreboard(request, response){
let data = request.params;
playerArr = updatePlayers(data.name, data.score);
response.send(playerArr);
}

现在在我的 main.js 中,这是我的代码:

var playerArr;

var updatePlayer = new XMLHttpRequest();
updatePlayer.onreadystatechange = () => {
playerArr = this.responseText;
}

updatePlayer.open("GET", "/Moo,100", true);
updatePlayer.send();

console.log(playerArr);

我似乎无法从playerArr 中得到响应。我正在使用的 JSON 文件每次都会使用新对象正确更新 ({"name":"Moo", "score":100}),但它没有分配给playerArr。请帮忙!

最佳答案

我建议你有一个 Node 后端并使用类似 https://expressjs.com/ 的东西。您可以使用它来设置一些端点。这些端点将由您的前端 JS 代码使用 Fetch 或类似的东西来调用,https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch .

<小时/>

对上述编辑的回应:

我认为您可能面临异步问题。我刚刚将 console.log 移至 onreadystatechange 调用中。每当服务器返回响应时,onreadystatechange就会执行,因此当您的代码到达原始console.log时,onreadystatechange可能尚未触发。

var playerArr;

var updatePlayer = new XMLHttpRequest();
updatePlayer.onreadystatechange = () => {
playerArr = this.responseText;
console.log(playerArr);
}

updatePlayer.open("GET", "/Moo,100", true);
updatePlayer.send();

关于javascript - 如何使用 vanilla javascript 在 Node 服务器上执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com