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


当前回答

在写这篇文章的时候,也有保持的Cheerio。

快速,灵活,精益的实现核心jQuery设计 特别是针对服务器。

其他回答

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

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

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

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

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

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

我手动简单地做了,没有任何额外的包或代码。

npm i jquery

然后我复制jquery.min.js文件从node_modules/jquery/dist目录到public/js

<script type='text/javascript' src='/js/jquery.min.js'></script>
<script>
  $(document).ready(function() { console.log( "ready!" ); });
</script>

它会起作用的。测试它

注意,复制/粘贴文件并不是最理想的事情,你可以将文件启用为静态文件,这样expressJS就可以读取它了。但对我来说,把它复制到静态公共目录更容易。

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

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

首先,安装它

npm install jquery -S

安装后,您可以如下所示使用它

import $ from 'jquery';
window.jQuery = window.$ = $;
$(selector).hide();

你可以查看我写的完整教程:https://medium.com/fbdevclagos/how-to-use-jquery-on-node-df731bd6abc7