Javascript requirejs动态调用自定义模块

Javascript requirejs动态调用自定义模块,javascript,requirejs,amd,Javascript,Requirejs,Amd,我正在尝试根据数据属性动态加载自定义模块。它几乎可以完美地工作,但由于某些原因,我的模块被调用了两次,路径不同,我不知道为什么 我的项目结构如下所示: + Assets + js • main.js + libs + modules • mod.env.js • mod.utils.js • mod.session.js + plugins

我正在尝试根据数据属性动态加载自定义模块。它几乎可以完美地工作,但由于某些原因,我的模块被调用了两次,路径不同,我不知道为什么

我的项目结构如下所示:

+ Assets
    + js
        • main.js
        + libs
        + modules
            • mod.env.js
            • mod.utils.js
            • mod.session.js
        + plugins
        + views
            • signup.js
            • login.js
            • home.js
在main.js文件中,我有一些基本配置:

require.config({
    baseUrl: '/Assets/js',

    paths: {
        // Libs
        'jquery'    : 'libs/jquery/jquery-2.0.3.min',

        // Module for the project
        'env':           'modules/atmco.env',
        'utils':         'modules/atmco.utils',
        'session':       'modules/atmco.session'
    }
});
还在main.js文件中,我将模块的条件加载逻辑放在这里:

require(['require', 'jquery','env'],
  function ( require, $, env ) {
      'use strict';

      function init() {
          // Grab the modules/pages on the data attribute of the body
          var modules = $('body').data('modules') || '';
          var pages = $('body').data('page') || '';

          // Initialize the environment stuff for your project
          env.initEnv();

          if ( pages ) {
              require(['./views/' + pages.toLowerCase().split(/\s*,\s*/)[0]]);
          }
      }

      // Initialize the application when the dom is ready
      $(function () {
          init();
      });
  }
);
我的页面具有正确的属性(
),但出于某些原因,requirejs尝试调用两个不同的文件:

  • 自定义模块按预期调用 “/Assets/js/视图/signup.js”

  • 然后它尝试调用不存在的“/Assets/js/signup.js”

最后,我们来看一下如何定义自定义模块,包括自定义名称。这似乎很基本:

define('view/signup',
    ['utils'],
    function ( utils ) {
        console.log('my module' + utils.lang );

        return {
        };
    }
);
如果有人能指出我的错误,这将真正帮助我使用我的应用程序,更好地理解requirejs的工作原理。非常感谢

找到了解决方案:

命名(或实际上命名)模块实际上扰乱了模块定义。因此,我只需要将代码调整为:

define(
    ['utils'],
    function ( utils ) {
        console.log('my module' + utils.lang );

        return {
        };
    }
);
这个问题真的帮我弄明白了:

尝试
require(['views/'+pages.toLowerCase().split(/\s*,\s*/)[0]])而不是
要求(['./views/'+pages.toLowerCase().split(/\s*,\s*/)[0]])