全局使用requirejs使用jquery,backbone,underscore?

时间:2016-01-13 07:02:53

标签: javascript jquery requirejs

我尝试使用以下代码来使用require js

包含我的自定义js文件
require.config({
    waitSeconds: 0,
    paths: {
       underscore: 'underscore/underscore',
       backbone: "backbone/backbone-min",
        jquery: "jquery/jquery-min",
        customhandler: "jquery/customhandler"
    },
    shim: {
         underscore: {
           deps: ['underscore'],
           exports: '_'
        }
    }
});

创建了单独的文件customhandler.js,里面我想使用backbone,jquery,underscore

define(['jquery','underscore','backbone'], function($,_,Backbone) {
    //using jquery
    var oldAjax = $.ajax;

    $.ajax = function(options) {
        console.log(options)
         // Do your magic.
         return oldAjax.apply($, arguments);

    }
    //need to use backbone,underscore here
});

但我仍然无法将其加载到我的应用程序中。请告知。

2 个答案:

答案 0 :(得分:0)

jQuery已经与AMD兼容,所以看起来你不能以这种方式来补充这种依赖。

从官方文件: http://requirejs.org/docs/api.html#config-shim

  

请记住:仅对非AMD脚本使用shim配置...

作为一种原始的解决方法,您可以返回另一个类似的对象:

return { ajax : $.ajax };

如果需要,可以更聪明。

答案 1 :(得分:0)

调用define的模块不需要使用shim。如果您对调用shim的模块使用define,则会得到未定义的行为。因此,这可能是您遇到问题的原因:删除jqueryajaxhandler的垫片。