而不是拥有一个包含一堆“定义”的巨型js文件,我如何从其他文件中调用我的各种“定义”功能?

我一直在复制这些示例,但仍然无法使其正常工作:


example-multipage
example-multipage-shim
example-jquery-shim


这是我到目前为止的内容:

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); if(“ string” === typeof
  e){if(H(c))return v(A(“ requireargs”,“无效的要求
  call“),h); if(a && s(N,e))return Ne; if(j.get)return
  j.get(i,e,a,d); g = n(e,a,!1,!0); g = g.id; return!s(r,g)?v(A(“ notloaded” ,'模块
  尚未为上下文加载名称“'+ g +'”:'+ b +(a?“”:“。
  require([]]“))):r [g]} K(); i.nextTick(function(){K(); k = q(n(null,a)); k.skipMap = f.skipMap ; k.init(e,c,h,{enabled:!0}); C()});返回
  d}没有方法'showSimControlView'


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

最佳答案

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

同样,排序可能很重要。即模块的define()可能需要排在需要它的require()之前(谈论'loadPage'模块)。

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

例如。:

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

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

10-05 18:38