/ / Как да направим RequireJS App Modular, т.е. изтегляне на файлове в движение, а не веднага - javascript, angularjs, производителност, Requjs

Как да направите модул App RequireJS, т.е. изтегляне на файлове в движение, не наведнъж - javascript, angularjs, изпълнение, requirejs

Работя върху огромно уеб приложение (AngularJS иRequireJS), в който има много JS файлове. (Толкова много контролери, филтри, услуги и толкова много плъгини на трети страни). Проблемът, с който се сблъсквам, е, че моето приложение отнема твърде много време, за да изтегля всички файлове (наведнъж) всеки път, когато обновя приложението си. Можем ли да използваме каквато и да е стратегия, чрез която конфигурираме изискването си JS по начин, че да се изтеглят само необходимите файлове вместо Всички файлове?

В момента моето Изискване JS е конфигурирано по този начин:

reqire.config({
paths: {
angular: "../../",
jquery: "../../", .......
}, shim: {
bootstrap: {
deps: ["jquery"]
}.........................
});

Отговори:

0 за отговор № 1

Можете също така да погледнете ocLazyLoad за вашите мързеливи нужди за зареждане - връзка

Една от стратегиите е да се изисква зареждането на приставкив обаждането на Resolve на ui-router. Това ще зареди необходимите зависимости за изглед / състояние, преди да се опита да премине към него и е обещано да гарантира, че всичко се зарежда в правилния ред.

.state("myState", {
url: "/myState",
template: "<div ui-view class="fade-in"></div>",
resolve: {
deps: ["$ocLazyLoad",
function( $ocLazyLoad ){
return $ocLazyLoad.load(["scripts/controllers/myController.js"]);
}]
}
})

Можете също така да го използвате за зареждане на няколко файла, ако това се наложи.

.state("ui.map.google", {
url: "/google",
templateUrl: "views/ui/map/google.html",
controller: "GoogleMapCtrl",
resolve: {
deps: ["$ocLazyLoad",
function( $ocLazyLoad ){
return $ocLazyLoad.load( [
{
files: ["vendor/jquery/load-google-maps.js",
"scripts/controllers/googlemap.js"]
},
{
name:"ui.map",
files:["vendor/modules/angular-ui-map/ui-map.js"]
}
]).then(
function(){
return loadGoogleMaps();
}
)
}]
}
})

Не е нужно да правите нищо специално в контролера, за да направите тази работа, и приставката ocLazyLoad е много конфигурируема (можете да настроите манифести / пакети и т.н.).