据我所知,没有模块的经典注册,我们可以在其中注入依赖项:
var myModule = angular.module('myModule', [otherModule]);
然而,在directorys的根目录中有文件module-name.client.module.js
'use strict';
// Use Applicaion configuration module to register a new module
ApplicationConfiguration.registerModule('module-name');
我可以在这里注入我的模块*.registerModule('module-name', [someModule]);
,或者我应该在angular.module('articles').config(...)
中注明?
但在config
我只能注入providers
,而不能factories
答案 0 :(得分:1)
就我使用angular而言,加载自定义模块和外部库的最佳做法 是将angularjs与requirejs结合起来。
它分3步完成。
首先,在主html文件中加载一个构建系统基础的js文件(require.config): 您可以在此处获得所有参数:https://github.com/jrburke/r.js/blob/master/build/example.build.js
示例: 在你的html文件中:
<script src="path/to/require.js" data-main="path/to/yourBuildFile"></script>
在yourBuildFile文件中:
require.config({
// you can define suitable names for all your external js library
paths:{
// don't put a ".js" at the end of the file
'angular' : 'path/angular',
'underscore' : 'path/underscore-min',
'...': '...',
},
// and other useful things
});
其次,在同一个文件或另一个文件中(参见上面链接中的参数deps),引导您的应用: 如下所述:https://docs.angularjs.org/guide/bootstrap
示例:
// AMD module injection, more info here : http://requirejs.org/docs/whyamd.html
define([ // inject all the external library you need + the definition of your app
'angular',
'require',
'yourpath/yourApp' // don't bother here, it's explained in third point
], function(angular){
// link your app to the document file programatically
angular.bootstrap(document, ['nameOfYourApp']);
});
第三,你定义你的应用程序(在&#34; yourpath / yourApp&#34;)
示例:
define([
'angular',
// put all path to your directives + controllers + services
], function(angular){ // only specify parameters the library you use in the function
// you create your sublime app :)
angular.module('nameOfYourApp', [
// put all the name of your modules injected above
]);
});
以上示例适用于单页面应用程序。 您可以在此处找到多页应用程序的其他示例 http://requirejs.org/docs/start.html