如何在其他文件中调用RequireJS函数?如何分开RequireJS文件?

时间:2013-09-19 21:28:26

标签: javascript requirejs amd

如何将一个巨大的js文件放在一堆“定义”中,如何从其他文件中调用各种“定义”函数?

我一直在复制这些例子,但仍无法让它发挥作用:

这是我到目前为止所做的:

main.js

require.config({
    baseUrl: '',
    paths: {
       jquery: '../libraries/jquery-1.10.2.min',
       simControlView: '../javascripts/simControlView'
    }
});

require(['jquery','loadPage'], function( $,loadPage) 
{ 
        loadPage();
});

define('loadPage', ['jquery'], function($)
{
    var simControlView = require(['./simControlView']);
    return function()
    {
         simControlView.showSimControlView(); //having problem here

    };
});

simControlView.js

define(['jquery'], function ($) {
    return {
        showSimControlView: function () {
            console.log("Hi!!");
        }
    }
});

这是我得到的错误:

  

未捕获的TypeError :对象函数d(e,c,h){var   G,K; f.enableBuildCallback&安培;及(C&安培;&安培; H(c)中)及;&安培;(C .__ requireJsBuild!= 0);如果( “串” === typeof运算   e){if(H(c))返回v(A(“requireargs”,“无效的要求   致电“),h); if(a&& s(N,e))返回Ne; if(j.get)返回   j.get(I,E,A,d); G = N(E,A,1,0!); G = g.id;!?返回S(R,G)V(A( “notloaded” '的模块   名称“'+ g +'”尚未加载上下文:'+ b +(a?“”:“。使用   要求([])“))):R [G]} K(); i.nextTick(函数(){K(); K = Q(N(NULL,一)); k.skipMap = f.skipMap; k.init(E,C,H,{启用:0}); C()});返回   d} 没有方法'showSimControlView'

看到我做错了什么?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

尝试将所有依赖项移至您传递给define()的依赖项列表。

此外,订购可能很重要。即模块的define()可能需要在需要它的require()之前(谈论'loadPage'模块)。

此外,如果您的paths配置调用模块'simControlView',则需要将其称为'simControlView',而不是'./simControlView'

E.g:

define('loadPage', ['jquery', 'simControlView'], function($, simControlView) {
    return function() {
         simControlView.showSimControlView();
    };
});

require(['jquery', 'loadPage'], function($, loadPage) {
    loadPage();
});