【问题标题】:Should I instantiate a submodule in large angular apps我应该在大型角度应用程序中实例化子模块吗
【发布时间】:2015-01-04 09:27:51
【问题描述】:

我正在构建一个由各种模块组成的大型 Angular 应用程序

- app
  -- member
    --- newMember
    --- memberDashboard
  -- linguistics
  -- etc
     --- etc etc

在 html 中,我正在实例化单个模块,因为我相信与引导整个 app 相比,性能会有所提高。

<div ng-app="linguistics">
    <div ui-view autoscroll="true"></div>
</div>

但是,这意味着我必须在模块配置中重复自己。即:

angular.module('linguistics', [
    'ui.router',
    'ui.bootstrap',
    'googlechart',
    'babelServices',
    'babelFilters'
]).config(function($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider) {
    $locationProvider.html5Mode(true);
}).config(function($provide) {
    return $provide.decorator('$uiViewScroll', function($delegate, $window) {
        return function(uiViewElement) {
            //eventually do something more intelligent with the uiViewElement
            return $window.scrollTo(0, 0);
        };
    });
});

html5Mode、scrollTo 等将跨模块重复。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript angularjs module


    【解决方案1】:

    我会添加一个配置模块,它将处理设置 html5Mode、scrollTo 等繁重的工作。

    angular.module('configuration', ['ui.router'])
      .config(function ($locationProvider, $provide) {
        $locationProvider.html5Mode(true);
    
        // For angular 1.3
        $locationProvider.html5Mode({
          enabled: true,
          requireBase: /* true/false */
        });
    
        $provide.decorator('$uiViewScroll', function ($delegate, $window) {
          return function (uiViewElement) {
            return $window.scrollTo(0, 0);
          }
        });
      });
    

    然后在您的后续模块中:

    angular.module('linguistics', ['configuration']);
    

    【讨论】:

    • 好主意。谢谢!我尚未接受您的回答,因为与其中一个组成模块相比,我一直在等待有关加载顶级模块的相对性能的任何信息。
    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多