在meanjs中注入自定义模块的最佳实践

时间:2014-12-21 14:51:51

标签: angularjs meanjs

据我所知,没有模块的经典注册,我们可以在其中注入依赖项:

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

1 个答案:

答案 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