繁体   English   中英

如何在Node.js上获取jQuery方法?

[英]How to get the jQuery methods on Node.js?

在客户端使用Object.keys($.fn) (或Object.keys(jQuery.fn) )可以很好地获取jQuery函数数组。

如何使用npmjquery来获取相同的数组?

我试过了:

  • require("jquery").fn => undefined (因为我们必须通过提供窗口对象来对其进行初始化)
  • 我试图像这样初始化jQuery函数:

     var $ = require("jquery")({ // Simulate the document object document: { createElement: function () { return { parentNode: { removeChild: function () { } } } } } }); 

    这样运行我会收到此错误:

     /home/...node_modules/jquery/dist/jquery.js:897 var div = document.createElement("div"); ^ TypeError: Cannot read property 'createElement' of undefined 

因此,基本上,我并不是真的想在Node.js中使用 jQuery,而只是想获取jQuery方法的数组(就像在客户端上一样),而避免在代码中对其进行硬编码。

这可能吗?

尝试使用https://github.com/tmpvar/jsdom ,它提供了DOM的部分实现,尤其是在node中使用,甚至允许您在模拟窗口内动态加载jquery。 像这样:

var jsdom = require("jsdom");

jsdom.env(
  '<p></p>',
  ["http://code.jquery.com/jquery.js"],
  function (err, window) {
    console.log(Object.keys(window.$.fn));
  }
);

Jquery中有静态方法和实例方法,可能您想两者兼有,并使用Object.assign()克隆它们。

您应该尝试遍历两个对象,例如:

var jsdom=require('jsdom').jsdom;
var document = jsdom("hello world");
var window = document.defaultView;

var jQuery=require('jquery')(window);


var clonedInstanceMethods = {};
for (var instancemethod in jQuery.prototype){
    Object.assign(clonedInstanceMethods,jQuery.prototype[instancemethod])
}

console.log(clonedInstanceMethods);

现在用静态方法做同样的事情…… 你明白了。

我们使用jsdom创建一个窗口。 应该现在工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM