【问题标题】:Calling function of non amd in requirejsrequirejs中非amd的调用函数
【发布时间】:2015-05-18 17:10:52
【问题描述】:

我已经阅读了这个question 并且我想更清楚地理解这个概念,所以我创建了我的两个文件

lorem.js:

var lorem = {};

lorem.fun1 = function(){
    console.log('aaa');
};

ipsum.js:

var ipsum = {};
ipsum.color = 'a';

ipsum.fun1 = function(){
    lorem.fun1();
};

Ipsum 依赖于 lorem。在 shim 配置中,我做了这样的事情:

// Filename: main.js

// Require.js allows us to configure shortcut alias
// There usage will become more apparent further along in the tutorial.
require.config({
    baseUrl: 'js',
    paths: {
        /*jquery: [
            // 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min' ,
            'libs/jquery/jquery'
        ],
        backbone:[
            'libs/backbone/backbone'
        ],
        underscore:[
            'libs/underscore/underscore'
        ],*/
        ipsum: 'nonamd/ipsum',
        lorem: 'nonamd/lorem'
    },
    shim : {
        /*jquery : {
            exports : 'jQuery'
        },
        underscore : {
            exports : '_'
        },
        backbone : {
            deps : ['jquery', 'underscore'],
            exports : 'Backbone'
        },*/
        ipsum : {
            deps : ['lorem'],
            exports : 'Ipsum'
        }
    }

});

require(['ipsum'],function (Ipsum) {
    console.log(Ipsum);
});

但是,console.log(Ipsum) 在控制台中打印 undefined。我做错了什么?

【问题讨论】:

    标签: javascript requirejs shim


    【解决方案1】:

    您的错误在于 shim 配置。

      ipsum : {
                deps : ['lorem'],
                exports : 'Ipsum'
            }
    

    应该是

      ipsum : {
                deps : ['lorem'],
                exports : 'ipsum'
            }
    

    注意大小写从'Ipsum' 更改为'ipsum'

    ipsum 应该是ipsum.js 中的全局变量。

    在 Javascript 中,变量名是区分大小写的,所以 ipsumIpsum 是不同的。因为你没有定义Ipsum,只定义了ipsum,打印出来就打印undefined

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2017-10-30
      • 2012-04-14
      相关资源
      最近更新 更多