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

标签 javascript node.js json

好吧,基本上我正在尝试创建一个使用 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/

相关文章:

node.js - 当 ignore-scripts 设置为 true 时,npm 的行为有何不同?

java - 具有未知属性名称的 Jackson 的 JSON

c# - ASP.NET MVC 5 - JSON - (动态?)模型绑定(bind) - REST 服务 - Webhooks - Chargebee

javascript - AngularJS $LogProvider 抛出非法访问错误

javascript - 迷失在 Node、Express 和谷歌分析 API 的回调 hell 中

javascript - AngularJS 观察对象数组中的对象属性

javascript - Node json请求栈

Javascript:如何访问数组中的每个元素

javascript - 在 CSS 和 JS 中动态调整高度

javascript - 图像在浏览器刷新时从左侧滑入/滑出