Ich bin dabei, eine Architektur einer ziemlich komplexen Anwendung basierend auf eckigen skizzieren. Also habe ich mit dem Angular-Seed-Projekt angefangen und es scheint ein guter Ausgangspunkt zu sein. Was mich stört ist, dass eckige Apps von Natur aus alles im Voraus laden. Mit Script Loadern scheint es keinen sauberen Weg zu geben.lazy Laden von Komponenten in eckig mit browserify
Ich kam aus einem backbone.js Hintergrund und da war es ruhig gerade, um die require.js für das faule Laden basierend auf den Router-Callbacks zu verwenden. In Winkel Routen sind so etwas wie die folgende Bedeutung haben:
// Declare app level module which depends on views, and components
angular.module('myApp', [
'ngRoute'
]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when({templateURL:'../tmpl.html',controller:'view1Ctrl'})
.when({templateURL:'../tmpl.html',controller:'view1Ctrl'})
.otherwise({redirectTo: '/view1'});
}]);
jetzt hier, $routeProvider.when({templateURL:'../tmpl.html',controller:'view1Ctrl'})
Ich mag träge würde den Controller und die Vorlage laden. Ich war so etwas wie zu verwenden versucht:
$routeProvider.when({templateURL:'../tmpl.html',controller:require('view1Ctrl'})
mit browserify aber dann ist es scheint nicht sauber zu sein und nicht einmal mit erfordern. Ich weiß, dass diese Frage mehrmals auf SO gestellt wurde, aber ich habe keine eindeutige Antwort darauf gefunden.
Meine Präferenz hier ist die Verwendung der browserify, wie es die beliebten cjs-Module im Browser unterstützt.
Wie Sie gesagt haben, aufgrund der Natur von Angularjs es "nicht-hacky Weg" zu tun, das ist. Sie müssen '$ controllerProvider.register',' $ provider.factory' und '$ compileProvider.directive' an irgendeiner Stelle im Run-Status verwenden. Aber es ist ein Hack. :( –
Auch ich denke, das ist verwandt: http://stackoverflow.com/questions/21742495/lazy-loading-of-angular-component-scripts-when-changing-states –