在 Node.js 中使用 jQuery

Using jQuery in Node.js

嗨,我是新来的,希望我能说清楚。我一直在尝试在 node.js 中调用 (?) jQuery,但我所做的一切都失败了。几个小时以来,我一直在努力解决这个问题,但仍然坚持希望有人可以帮助我解决这个问题!

我正在尝试使用他们的 api 从 twitch 获取一些信息。在这种情况下,流媒体是在线还是离线。当我在本地打开页面(没有 node.js)时,jQuery 代码工作正常。但是,当我尝试使用 node.js 时,它给出了错误:$.

这是经过一些研究和随机尝试后得出的..(对 node.js 和 jQuery 来说还是新的):

` http://imgur.com/a/2nhho

`

编辑:我尝试使用 node.js 的原因是在不刷新的情况下更新我的网站。所以如果有人去online/offline,he/she不应该强制刷新

"When the only tool you have is a hammer, every problem looks like a nail."

在这种情况下,您尝试使用错误的工具来完成工作。 jQuery 专为在浏览器环境中使用而构建和优化。虽然你可以通过阴影来强制它工作 DOM... 但不要。

如果您想使用 jQuery 的选择器和 DOM 操作功能,cheerio 基本上实现了 API,但专门针对 Node。js/server-side.

但是,您听起来像是想使用它的 ajax() 方法(或其中一个辅助方法,例如 post()get()

相反,您应该使用为 Node.js 构建的东西。 node-fetch (https://www.npmjs.com/package/node-fetch) 是一个优秀且易于使用的选项,专为 Node.js.

而设计

这是其文档中的一个简单示例:

fetch('https://github.com/')
.then(function(res) {
    return res.text();
}).then(function(body) {
    console.log(body);
});

您首先用您想要的 URL 调用 fetch()。它会 return 一个 Promise 和一个 Response 对象。从那里,你可以提取 text() 或其他任何东西,然后你可以从那里解析它。

如果你需要传递选项,调用不同的方法(如POST)等,你只需给它一个选项对象作为第一次调用的第二个参数(查看他们的文档).

有一个 npm 模块可以使用,它基于 jsdom
它会给你一个 window 对象。 示例:

var express = require('express');
var Window = require('window');
global.window = new Window();
global.document = window.document;
var $ = require('jquery');
var app = express();
function game() {
   $("body").append(`<h1>Hello world!</h1>`);
}
game();
app.get('/', function (req, res) {
    res.send(document.getElementsByTagName('html')[0].innerHTML)
});