簡體   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