使用require.js加载原型增强功能

时间:2013-03-07 09:32:30

标签: javascript module requirejs

我正在使用require.js来加载我的模块,这些模块通常可以正常工作。不过,我确实有两个额外的问题:

1)如果你有一个类似帮助类的模块并为现有原型定义了其他方法(例如String.isNullOrEmpty),你会如何包含它们?您希望避免使用对模块的引用。

2)使用jQuery还需要改变什么。我知道需要jQuery,但是我还需要传递$吗?

谢谢!

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分: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 /在我的devs中进行此类扩展我在一个没有需要模块代码的全局文件中做到了....我将它包含在我的应用程序中,需要...不完美,但它工作正常

<强> global.js

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

<强> myapp.js

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