我可以将jQuery与Node.js一起使用吗?

JavaScript

老丝番长

2020-03-12

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

第988篇《我可以将jQuery与Node.js一起使用吗?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

9个回答
逆天前端宝儿 2020.03.12

另一种方法是使用Underscore.js它应该提供您可能希望从JQuery的服务器端获得的东西。

米亚番长 2020.03.12

从来没听说过。DOM是客户端的东西(jQuery不会解析HTML,而是DOM)。

以下是一些当前的Node.js项目:

https://github.com/ry/node/wikihttps://github.com/nodejs/node

而且SimonW的djangode非常酷...

Near逆天 2020.03.12

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

以前,我尝试在nodejs中使用canvas2d,但最终我放弃了。默认情况下,nodejs不支持它,并且安装起来太困难了(很多... dependeces)。在使用Electron之前,我可以轻松地使用所有以前的browserjs代码,甚至是WebGL,并将结果值(例如,结果base64图像数据)传递给nodejs代码。

L番长 2020.03.12

否。将浏览器环境移植到节点将是一项巨大的工作。

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

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

准备好显示后,我将其推送到github.com/felixge。

伽罗理查德 2020.03.12

jsdom模块是一个很棒的工具。但是,如果您要评估整个页面并在服务器端对它们进行一些时髦的设计,建议您在各自的上下文中运行它们:

vm.runInContext

因此,诸如require/ CommonJS现场之类的事情不会破坏Node进程本身。

您可以在此处找到文档干杯!

十三小哥Jim 2020.03.12

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

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

我相信现在的答案是肯定的。
https://github.com/tmpvar/jsdom

var navigator = { userAgent: "node-js" };  
var jQuery = require("./node-jquery").jQueryInit(window, navigator);
阳光村村 2020.03.12

现在,您可以使用jsdom只需在示例目录中查看其jquery示例即可。

GreenSamA 2020.03.12

在撰写本文时,还保留了Cheerio

专为服务器设计的核心jQuery的快速,灵活和精益实现。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android