RequireJS + Angular:未定义的应用程序.回调不触发

RequireJS + Angular: Undefined app. Callback doesn't shoot

本文关键字:回调 应用程序 Angular 未定义 RequireJS      更新时间:2023-09-26

我得到了main.js,用这个简单的代码:

'use strickt';
require.config({
  paths: {
    'angular'        : 'libs/angular'          ,
    'angular-router' : 'libs/angular-route'    ,
  },
  shim : {
    'angular' : {
      exports : 'angular'
    },
    'angular-router' : {
      deps: ['angular']
    }
  }
});
require(['app'], function (mainApp) {
  console.log(mainApp);
});

如您所见,我尝试在需要回调的情况下获取应用程序。但我得到的只是不确定的。这是我在应用程序.js文件内部得到的:

define('mainApp', ['angular', 'angular-route'], function (angular) {
  var app = angular.module('mainApp', ['ngRoute']);
  console.log('should be fired from app.js');
  return app;
});

所以问题来了:函数参数 'mainApp' 在 main.js 中未定义回调似乎是合乎逻辑的,因为 app.js 内部的 console.log() 不会触发。有人可以告诉我它有什么问题吗?

只需删除app.js文件中的模块名称(或将其更改为"app")。您的应用程序.js文件将如下所示:

define(['angular', 'angular-route'], function (angular) {
  var app = angular.module('mainApp', ['ngRoute']);
  console.log('should be fired from app.js');
  return app;
});

http://requirejs.org/docs/api.html#modulename

您可以自己显式命名模块,但它会使模块 便携性较差 - 如果将文件移动到另一个目录,您将 需要更改名称。通常最好避免在名称中编码 对于模块,只需让优化工具在模块中燃烧 名字。优化工具需要添加名称,以便超过 一个模块可以捆绑在一个文件中,以便更快地加载 浏览器。