没有RequireJS的AngularJs延迟加载

时间:2014-03-31 10:45:41

标签: angularjs module requirejs lazy-loading angularjs-module

在大型应用程序中,我们如何在不需要加载index.html的情况下延迟加载模块,控制器和服务。这里我指的是在相关模板html中加载整个js而不是在index.html中。 (可能是具有模块,多个控制器,服务,给定功能的指令或具有多个控制器或服务的单个js文件的不同js)

我不想使用RequireJs。但是,我正在寻找角度本身的解决方案。

angular.module( 'my-second-module', ['ui.router'])

.config(function config($stateProvider) {
    $stateProvider
        .state('mainscreen', {
            url: "/mainscreen",
            templateUrl: "app/MyMain.tpl.html"
        })
        .state('mainscreen.sub', {
            url: "/sub",
            controller: 'subCtrl',
            templateUrl: "app/sub.tpl.html"
        })
})
.controller( 'subCtrl', function contractCtrl
    ($scope,$http,$route,$location) {
})
.controller( 'subTwoCtrl', function newContractCtrl($scope,someService,$http,$templateCache) {
.filter('myTypeFilter',function(){
    return function (input,value){       
        return 'Normal';
   };
})
.service('newService', function () {
    var selectedContract = [];
    var hotelObject=[{}];
    return {
        notes:function () {
        },
        addNote:function (noteTitle) {
        }
    };
})
.directive('autocomplete', function($parse) {
return function(scope, element, attrs) {
    var setSelection = $parse(attrs.selection).assign;
    scope.$watch(attrs.autocomplete, function(value) {
        element.autocomplete({
            source: value,
            select: function(event, ui) {
                setSelection(scope, ui.item.value);
                scope.$apply();
            }
        });
    });
};
})
.factory('restService', function(commonService) {
return {
    setReturnMessage: function(res) {
};
})
});

2 个答案:

答案 0 :(得分:0)

在做了一些研究后发现,AngularJs正计划在2.0版本中实现上述概念。但是,我不确定该版本什么时候发布,而且要发布这个版本还有很长的路要走。

此外,经过更多研究后发现,有一个名为Browserify的框架将成为RequireJS的下一个替代品。我相信我们可以将它用于模块化。但是,我没有用AngularJs对它进行过实验。似乎是一个很好的工具。

这也在ng-conf中讨论过。 Angular with Browserify

PS。如果有人使用Angular和Browserify进行测试,我们欢迎您分享您的经验。

答案 1 :(得分:0)

一旦Angular团队发布了角度v2.0,它应该会容易得多,但同时你可以使用我的模块来延迟加载任何东西:ocLazyLoad

如果您对此有任何疑问,请不要犹豫。