在客户端使用Object.keys($.fn)
(或Object.keys(jQuery.fn)
)可以很好地将jQuery函数作为数组。
如何使用jquery
package from npm
获取相同的数组?
我试过了:
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方法的数组(比如在客户端上),避免在代码中对其进行硬编码
这可能吗?
答案 0 :(得分:0)
尝试使用https://github.com/tmpvar/jsdom,它提供了DOM的部分实现,特别是在节点中使用,甚至允许您在模拟窗口中动态加载jquery。像这样:
var jsdom = require("jsdom");
jsdom.env(
'<p></p>',
["http://code.jquery.com/jquery.js"],
function (err, window) {
console.log(Object.keys(window.$.fn));
}
);
答案 1 :(得分:0)
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来创建一个窗口。 现在应该工作。