2013-03-07 40 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