是否有可能在服务器端使用Node.js使用jQuery选择器/DOM操作?
当前回答
npm install jquery——保存所有小写字母
NPM安装jsdom——保存
const jsdom = require("jsdom");
const dom = new jsdom.JSDOM(`<!DOCTYPE html>`);
var $ = require("jquery")(dom.window);
$.getJSON('https://api.github.com/users/nhambayi',function(data) {
console.log(data);
});
其他回答
我相信这个问题的答案是肯定的。 https://github.com/tmpvar/jsdom
var navigator = { userAgent: "node-js" };
var jQuery = require("./node-jquery").jQueryInit(window, navigator);
另一种选择是使用Underscore.js。它应该提供您可能需要的JQuery服务器端功能。
在写这篇文章的时候,也有保持的Cheerio。
快速,灵活,精益的实现核心jQuery设计 特别是针对服务器。
更新(6月27日-18日):看起来jsdom有一个重大更新,导致原来的答案不再工作。我找到了这个解释如何使用jsdom的答案。我复制了下面的相关代码。
var jsdom = require("jsdom");
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;
var $ = jQuery = require('jquery')(window);
注意:原来的答案没有提到你也需要使用npm install jsdom来安装jsdom
更新(2013年底):官方jQuery团队终于接管了npm上jQuery包的管理:
npm install jquery
然后:
require("jsdom").env("", function (err, window) {
if (err) {
console.error(err);
return;
}
var $ = require("jquery")(window);
});
模块jsdom是一个很棒的工具。但如果你想评估整个页面,并在服务器端做一些奇怪的事情,我建议在它们自己的上下文中运行它们:
vm.runInContext
所以像require / CommonJS这样的东西不会破坏你的Node进程本身。
你可以在这里找到相关文档。干杯!