如何使用angular-ui-router将路由配置拆分为多个文件?

Ala*_*an2 5 angularjs angular-ui-router

目前我有这样一个文件:

app.config([
    '$locationProvider',
    '$sceDelegateProvider',
    '$sceProvider',
    '$stateProvider',
    ($locationProvider,
     $sceDelegateProvider,
     $sceProvider,
     $stateProvider) => {

        $locationProvider.html5Mode(true);
        $sceProvider.enabled(false);

        var home = {
            name: 'home',
            //template: '<div data-ui-view></div>',
            url: '/home/'
        };

        var homeAccess = {
            name: 'home.access',
            url: 'access',
            views: {
                'home@': {
                    templateUrl: 'app/access/partials/webapi.html'
                }
            },
            onExit: ['accessService', (acs: IAccessService) => {
                acs.clear();
            }]
        };



    $stateProvider
        .state(homeAccess)
        .state(home);
}])
Run Code Online (Sandbox Code Playgroud)

问题是,我有这么多州,现在已经发展到超过1,200行.

是否可以将app.config拆分为多个文件,如果是这样,我该怎么做?

Rod*_*rez 6

您可以查看此内容,了解如何在Angular Best Practices目录结构中构建代码 .您可以使用状态创建不同的文件,并在每个功能文件夹中将它们分开.如果您不想按文件夹分隔它们,只需将它们放在单独的文件中即可.在每个文件中,您只需导出您注册为配置的功能.

这是本地路线(home-route.js):

function stateConfig ($locationProvider, $sceDelegateProvider, $sceProvider, $stateProvider) {
        $locationProvider.html5Mode(true);
        $sceProvider.enabled(false);

        var home = {
            name: 'home',
            template: 'Home',
            url: '/home'
        };



    $stateProvider
        .state(home);
}

module.exports = stateConfig;
Run Code Online (Sandbox Code Playgroud)

这将是访问路由(home-access-route.js):

    function stateConfig ($locationProvider, $sceDelegateProvider, $sceProvider, $stateProvider) {
        $locationProvider.html5Mode(true);
        $sceProvider.enabled(false);

        var homeAccess = {
            name: 'home.access',
            url: '/access',
            template: 'Access',
            parent: 'home'
        };



    $stateProvider
        .state(homeAccess)
}

module.exports = stateConfig;
Run Code Online (Sandbox Code Playgroud)

然后在您的模块/应用程序的index.js文件中,您将执行以下操作:

var TestsRoute  = require('./home-route.js');
var HomeAccessRoute  = require('./home-access-route.js');

var app = angular.module('HomeAccess', []);

app.config(['$locationProvider', '$sceDelegateProvider', '$sceProvider', '$stateProvider', HomeRoute]);    
app.config(['$locationProvider', '$sceDelegateProvider', '$sceProvider', '$stateProvider', HomeAccessRoute]);

module.exports = app.name
Run Code Online (Sandbox Code Playgroud)

因此,在初始化应用程序的位置,您将拥有已创建的所有单独模块,并将它们注册为应用程序的依赖项