是否有可能在服务器端使用Node.js使用jQuery选择器/DOM操作?


当前回答

不。将浏览器环境移植到节点需要付出很大的努力。

我目前正在研究的另一种用于单元测试的方法是创建jQuery的“Mock”版本,在调用选择器时提供回调。

这样你就可以在没有DOM的情况下对jQuery插件进行单元测试。您仍然需要在真正的浏览器中进行测试,以查看代码是否可以正常工作,但如果您发现了特定于浏览器的问题,您也可以在单元测试中轻松地“模拟”这些问题。

一旦它准备好了,我会把一些东西推送到github.com/felixge。

其他回答

2016年,事情就简单多了。使用控制台将jquery安装到node.js:

npm install jquery

将它绑定到node.js代码中的变量$(例如-我习惯了它):

var $ = require("jquery");

做的东西:

$.ajax({
    url: 'gimme_json.php',
    dataType: 'json',
    method: 'GET',
    data: { "now" : true }
});

也适用于gulp,因为它基于node.js。

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

您必须使用新的JSDOM API来获取窗口。

const jsdom = require("jsdom");
const { window } = new jsdom.JSDOM(`...`);
var $ = require("jquery")(window);

从jsdom v10开始,.env()函数已弃用。在尝试了很多需要jquery的东西之后,我这样做了:

Var jsdom = require('jsdom'); const {JSDOM} = JSDOM; const {window} = new JSDOM(); const {document} = (new JSDOM(")).window; 全球。文档=文档; var $ = jQuery = require(' jQuery ')(window);

希望这对你或任何面临这类问题的人有所帮助。

你可以使用Electron,它允许混合browserjs和nodejs。

之前,我尝试在nodejs中使用canvas2d,但最后我放弃了。它不被nodejs默认支持,并且很难安装它(很多很多…dependeces)。 直到我使用电子,我可以很容易地使用所有我以前的browserjs代码,甚至WebGL,并传递结果值(例如。结果base64图像数据)到nodejs代码。