Próbuję nauczyć się Elasticsearch i AngularJS, tworząc prostą aplikację do wyszukiwania.
Wiem, że najlepszą praktyką w Angular jest modularyzacja całego kodu, ale ...
Przeszedłem przez samouczek i mam przykładowy kod i wygląda dobrze, po prostu nie jest podzielony na moduły, wygląda to tak:
var searchApp = angular.module("searchApp", ["elasticsearch", "ngSanitize", "ui.bootstrap"]);
searchApp.controller("typeahead", ["ui.bootstrap", function(ui.bootstrap){
//add $http get
}]);//added
searchApp.controller("SearchResultsList", ["$scope", "searchService", "filterService", "$sce", function($scope, searchService, filterService, $sce) {
po tym cały kod.
Czy warto spróbować rozbić go na moduły (kontrolery, usługi, filtry i app.js z konfiguracją i trasami?
Wszelkie porady, zalecenia są bardzo mile widziane.
Odpowiedzi:
0 dla odpowiedzi № 1Zgodnie z najlepszymi praktykami i dokumentacją AngularJs, kontrolerzy nie powinni mieć logiki biznesowej. Myślę, że lepiej jest zmodularyzować aplikację.
Jak wiesz:
Użyj kontrolerów, aby:
- Ustaw stan początkowy obiektu $ scope.
- Dodaj zachowanie do obiektu $ scope.
Nie używaj kontrolerów do:
- Manipuluj DOM - Kontrolery powinny zawierać tylkologika biznesowa. Umieszczenie dowolnej logiki prezentacji w kontrolerach znacząco wpływa na jej testowalność. Angular ma powiązanie danych dla większości przypadków i dyrektyw w celu zamknięcia ręcznej manipulacji DOM.
- Formatuj dane wejściowe - zamiast tego użyj formantów kątowych.
- Wyjście filtra - zamiast tego użyj filtrów kątowych.
- Udostępnij kod lub stan między kontrolerami - zamiast tego użyj usług kątowych.
- Zarządzaj cyklem życia innego komponentu