[英]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.