2016-07-07 5 views
0

Я минимизировал и объединил все js-файлы в один и включил в html ничего не работает на сайте.AngularJS minified js files not working

Существует так много файлов в js, и я не хочу включать все по одному, поэтому они были модифицированы и объединены в одном.

Есть ли другой способ уменьшить количество HTTP-вызовов для js-файлов.

+0

Можете ли вы рассказать, как вы определяете контроллеры? –

+0

Вы можете попытаться использовать CDN для уменьшения количества вызовов на домен, но минимизация и слияние должны работать нормально, я использую webpack с Angular JS без проблем. – ymas

+0

см. Ссылку plunker http://plnkr.co/edit/NEmPfu18tePMZ8keZp2p?p=info –

ответ

3

При минимизации документов AngularJS важно, чтобы вы следовали документам для инъекций зависимостей, иначе ваш код может сломаться. Вы должны убедиться, что вы используете предпочтительный метод массива пример можно увидеть ниже:

someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) { 
    // ... 
}]); 

Как видно из официальных Угловых документов JS: https://docs.angularjs.org/guide/di.

0

Чтобы следить за ответом @ Дэйл лосось «s, если у вас есть свои контроллеры, как этот

app.controller('DemoCtrl', function(dependency1, dependency2){ 
// controller code 
}); 

изменить его на

app.controller('DemoCtrl', ['dependency1', 'dependency2', function(dependency1, dependency2){ 
// controller code 
}]); 

Причина JS minificators обычно изменить название которая вводится. И Угловая не имеет понятия о том, что такое зависимость. Итак, вы вручную объявляете их, чтобы это не вызвало проблемы после минимизации!

2

Кажется, это причина implicit dependency injection. Согласно документации Angular JS:

Осторожно: если вы планируете минимизировать свой код, ваши имена служб будут переименованы и разорваны ваше приложение.

Используйте вместо этого strict dependency injection. Например:

angular 
    .module("MyModule") 
    .controller("MyCtrl", ["$scope", "$timeout", function ($scope, $timeout) { 
    ... 
    }]); 

Более того, рассмотреть вопрос об использовании ng-annotate, что гораздо проще:

angular 
    .module("MyModule") 
    .controller("MyCtrl", function ($scope, $timeout) { 
    "ngInject"; 
    ... 
    }); 
+0

У меня была зависимость. Я минимизировал и объединил все файлы js в одном. угловые js не определены. –

+0

@ Greatym.com, прокомментируйте или удалите девятую строку в файле 'app/ctrl/autoQuoteCtrl.js'. 'angular.element' не работает так, как вы его реализовали, потому что jqLite используется по умолчанию, а не jQuery. –

 Смежные вопросы

  • Нет связанных вопросов^_^