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

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

逆天前端宝儿2020/03/12 14:29:48

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

米亚番长2020/03/12 14:29:48

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

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

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

而且SimonW的djangode非常酷...

Near逆天2020/03/12 14:29:48

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

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

L番长2020/03/12 14:29:47

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

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

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

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

伽罗理查德2020/03/12 14:29:46

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

vm.runInContext

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

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

十三小哥Jim2020/03/12 14:29:46

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

const jsdom = require("jsdom");
const { window } = new jsdom.JSDOM(`...`);
var $ = require("jquery")(window);
L猴子2020/03/12 14:29:46

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

var navigator = { userAgent: "node-js" };  
var jQuery = require("./node-jquery").jQueryInit(window, navigator);
阳光村村2020/03/12 14:29:46

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

GreenSamA2020/03/12 14:29:46

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

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