[英]How to get the jQuery methods on Node.js?
在客户端使用Object.keys($.fn)
(或Object.keys(jQuery.fn)
)可以很好地获取jQuery函数数组。
我试过了:
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.