2013-03-07 61 views
2

我正在使用require.js加載通常工作正常的我的模塊。儘管如此,我還有兩個額外的問題:使用require.js加載原型增強

1)如果您有一個模塊類似輔助類,併爲現有原型定義了其他方法(如String.isNullOrEmpty),那麼如何包含它們?您希望避免使用對模塊的引用。

2)需要更改以使用jQuery。我明白,需要jQuery需要,但我也需要通過$

謝謝!

回答

10

1)如果有一個模塊,它像一個輔助類,並定義現有原型 附加方法(如 String.isNullOrEmpty),如何你會包括他們嗎?您希望使用對模塊的引用來避免 。

如果您需要延長的原型,然後就是不作爲你的最後一個參數返回一個值,並用它來require

// helpers/string.js 
define(function() { 
    String.prototype.isNullOrEmpty = function() { 
     // 
    } 
}); 

// main.js 
require(['moduleA', 'helpers/string'], function(moduleA) { 

}); 

2)有什麼需要改變使用jQuery,太。我明白, jQuery需要被要求,但我也需要傳遞$?

jQuery的唯一的要求是,你配置的路徑正確

require.config({ 
    paths: { 
     jquery: 'path/to/jquery' 
    } 
}); 

require(['jquery', 'moduleB'], function($, moduleB) { 
    // Use $.whatever 
}); 

在我看來這是不需要使用the version of RequireJS that has jQuery built into it,因爲這主要是使用jQuery的時候不支持AMD。

現在它確實保持它的獨立性,允許您輕鬆地交換另一個庫(想想Zepto)。

0

2/jQuery的它真的很簡單:

require(["jquery", "jquery.alpha", "jquery.beta"], function($) { 
    //the jquery.alpha.js and jquery.beta.js plugins have been loaded. 
    $(function() { 
     $('body').alpha().beta(); 
    }); 
}); 

更多信息需要網站:http://requirejs.org/docs/jquery.html#get

1在我的開發者對於這樣的擴展我做到了,在沒有需要的模塊代碼全局文件/。 ...我包括在我的要求......不完美的應用程序,但它的做工精細

global.js

myglobalvar =""; 
(...other global stuff...) 

myapp.js

// Filename: app.js 
define([ 
    (...) 
    'metrix.globals' 
], function(.....){ 
myApp = { 
(...) 
+0

嗨讓邁克爾,讓我們假設我想將我的html文件分成三個不同的文件:1爲html,1爲jquery(事件處理),1爲javascript部分。你會推薦這個嗎? – AntonSack 2013-03-25 13:46:39

+0

如果你只有3個文件(每個文件中的一個),我認爲這將是有效的,而不是必需的做事的最佳方式,但「有效的方式」;) – 2013-04-09 07:20:38