是否有可能在服务器端使用Node.js使用jQuery选择器/DOM操作?
当前回答
您必须使用新的JSDOM API来获取窗口。
const jsdom = require("jsdom");
const { window } = new jsdom.JSDOM(`...`);
var $ = require("jquery")(window);
其他回答
不。将浏览器环境移植到节点需要付出很大的努力。
我目前正在研究的另一种用于单元测试的方法是创建jQuery的“Mock”版本,在调用选择器时提供回调。
这样你就可以在没有DOM的情况下对jQuery插件进行单元测试。您仍然需要在真正的浏览器中进行测试,以查看代码是否可以正常工作,但如果您发现了特定于浏览器的问题,您也可以在单元测试中轻松地“模拟”这些问题。
一旦它准备好了,我会把一些东西推送到github.com/felixge。
我的工作代码是:
npm install jquery
然后:
global.jQuery = require('jquery');
global.$ = global.jQuery;
或者如果窗口存在,则:
typeof window !== "undefined" ? window : this;
window.jQuery = require('jquery');
window.$ = window.jQuery;
jQuery模块可以通过以下方式安装:
npm install jquery
例子:
var $ = require('jquery');
var http = require('http');
var options = {
host: 'jquery.com',
port: 80,
path: '/'
};
var html = '';
http.get(options, function(res) {
res.on('data', function(data) {
// collect the data chunks to the variable named "html"
html += data;
}).on('end', function() {
// the whole of webpage data has been collected. parsing time!
var title = $(html).find('title').text();
console.log(title);
});
});
jQuery在Node.js中的引用**:
http://quaintous.com/2015/07/31/jqery-node-mystery/ http://www.hacksparrow.com/jquery-with-node-js.html
是的,jQuery可以与Node.js一起使用。
步骤包括jQuery在节点项目:-
NPM jquery——保存 在代码中包含jquery
import jQuery from 'jquery';
const $ = jQuery;
我确实在node.js项目中一直使用jquery,特别是在chrome扩展的项目中。
例如,https://github.com/fxnoob/gesture-control-chrome-extension/blob/master/src/default_plugins/tab.js
模块jsdom是一个很棒的工具。但如果你想评估整个页面,并在服务器端做一些奇怪的事情,我建议在它们自己的上下文中运行它们:
vm.runInContext
所以像require / CommonJS这样的东西不会破坏你的Node进程本身。
你可以在这里找到相关文档。干杯!