2014-02-10 161 views
15

如果我在多個模塊中使用它,我應該如何requirejquerynode?我應該將它定義爲全局還是我應該在每個需要它的模塊中使用「require('jquery」)?如何使用npm jquery模塊?

嘗試使用該軟件包時出現錯誤。

TypeError: Object function (w) { 
      if (!w.document) { 
       throw new Error("jQuery requires a window with a document"); 
      } 
      return factory(w); 
     } has no method 'isArray' 

它看起來像當前版本中的錯誤,因爲它不應該檢查我是否根據官方文檔在瀏覽器中運行它。這個問題也在another post中提及。它可以與其中一個答案中提到的版本1.8.3一起使用。

回答

13

要在節點中使用jquery,需要安裝兩個單獨的節點包。

  1. jquery的
  2. jsdom創建其中的jquery可以使用虛設窗口對象。

安裝:

npm install jquery 
npm install jsdom 

在代碼:

var jsdom = require("jsdom").jsdom; 
global.$ = require('jquery/dist/jquery')(jsdom().createWindow()); 

或者與jsdom的新版本:

var jsdom = require("jsdom").jsdom; 
jsdom.env("", function(err, window) { 
    if (err) { 
     console.error(err); 
     return; 
    } 
    global.$ = require("jquery")(window); 
}) 

使用全局$將使jQuery對象( $)在您的項目中全球可用。

9

可以如下用來處理像往常一樣:

var $; 
$ = require('jquery'); 
$('.tag').click(function() { 
    return console.log('clicked'); 
}); 
-4

如果您正在使用jQuery的客戶端而言,這是我做到了,我對平均堆棧使用玉模板引擎。

例如;比方說,我有簡單的layout.jade像這樣 enter image description here

我將通過index.jade在單個頁面應用程序上使用所有jQuery功能,我將像這樣加載。

enter image description here

```

extends layout 

block content 
    script(type='text/javascript', src="http://code.jquery.com/jquery-1.9.1.min.js") 

    div#container(style="min-width: 500px; height: 500px; margin: 0 auto") 
    script. 
     if (jQuery) { 
      console.log("jQuery library is loaded!"); 
     } else { 
      console.log("jQuery library is not found!"); 
     } 

     $(function() { 

     }); 


    h1= title 
    p Welcome to #{title} 

```