Co je modul AngularJS?
Modul definuje funkčnost aplikace, která je použita na celou stránku HTML pomocí direktivy ng-app. Definuje funkce, jako jsou služby, směrnice a filtry, způsobem, který usnadňuje jejich opětovné použití v různých aplikacích.
Ve všech našich dřívějších výukových programech byste si všimli direktivy ng-app použité k definování vaší hlavní úhlové aplikace. Toto je jeden z klíčových konceptů modulů v Angular.JS.
V tomto výukovém programu se naučíte
- Jak vytvořit modul v AngularJS
- Moduly a řadiče
Jak vytvořit modul v AngularJS
Než začneme s tím, co je modul, podívejme se na příklad aplikace AngularJS bez modulu a poté pochopíme potřebu mít moduly ve vaší aplikaci.
Zvažme vytvoření souboru s názvem „DemoController.js“ a přidání níže uvedeného kódu do souboru
Function Democontroller($scope) {$scope.a=1;$scope.b=2;$scope.c=$scope.b + $scope.a;});
Ve výše uvedeném kódu jsme vytvořili funkci nazvanou „DemoController“, která bude v naší aplikaci fungovat jako řadič.
V tomto řadiči provádíme pouze přidání 2 proměnných a a b a přiřazení přidání těchto proměnných nové proměnné c a jejich přiřazení zpět k objektu oboru.
Nyní vytvořme náš hlavní Sample.html, který bude naší hlavní aplikací. Vložme níže uvedený fragment kódu na naši stránku HTML.
Globální událost Guru99
{{C}}Ve výše uvedeném kódu zahrneme náš DemoController a poté pomocí výrazu vyvoláme hodnotu proměnné $ scope.c.
Ale všimněte si naší směrnice ng-app, má prázdnou hodnotu.
- To v zásadě znamená, že ke všem řadičům, které jsou volány v kontextu směrnice ng-app, lze přistupovat globálně. Neexistuje hranice, která by oddělovala více řadičů od sebe navzájem.
- Nyní v moderním programování je špatnou praxí mít řadiče nepřipojené k žádným modulům a zpřístupňovat je globálně. Pro řadiče musí být definována nějaká logická hranice.
A tady přicházejí moduly. Moduly se používají k vytvoření tohoto oddělení hranic a pomoci při oddělení řadičů na základě funkčnosti.
Pojďme změnit výše uvedený kód, abychom implementovali moduly a připojili náš ovladač k tomuto modulu
var sampleApp = angular.module('sampleApp',[]);sampleApp.controller('DemoController', function($scope) {$scope.a=1;$scope.b=2;$scope.c=$scope.b + $scope.a;});Všimněme si klíčových rozdílů v kódu napsaném výše
var sampleApp = angular.module('sampleApp',[]);Konkrétně vytváříme modul AngularJS s názvem 'sampleApp'. Tím se vytvoří logická hranice pro funkčnost, kterou bude tento modul obsahovat. Takže v našem výše uvedeném příkladu máme modul, který obsahuje řadič, který provádí roli přidání 2 objektů rozsahu. Proto můžeme mít jeden modul s logickou hranicí, který říká, že tento modul bude pro aplikaci provádět pouze funkce matematických výpočtů.
sampleApp.controller('DemoController', function($scope)Nyní připojujeme ovladač k našemu modulu AngularJS "SampleApp". To znamená, že pokud nebudeme odkazovat na modul „sampleApp“ v našem hlavním kódu HTML, nebudeme moci odkazovat na funkčnost našeho řadiče.
Náš hlavní kód HTML nebude vypadat, jak je znázorněno níže
Guru99 Global Event
{{c}}Všimněte si klíčových rozdílů v kódu napsaném výše a v našem předchozím kódu
V naší tělové značce
- Místo toho, abychom měli prázdnou direktivu ng-app, nyní voláme modul sampleApp.
- Voláním tohoto aplikačního modulu můžeme nyní přistupovat k řadiči 'DemoController' a funkcím přítomným v demo řadiči.
Moduly a řadiče
V Angular.JS je vzorem používaným pro vývoj moderních webových aplikací vytváření více modulů a řadičů k logickému oddělení více úrovní funkčnosti.
Za normálních okolností budou moduly uloženy v samostatných souborech Javascript, které by se lišily od hlavního souboru aplikace.
Podívejme se na příklad toho, jak toho lze dosáhnout.
V níže uvedeném příkladu
- Vytvoříme soubor s názvem Utilities.js, který bude obsahovat 2 moduly, jeden pro provádění funkce sčítání a druhý pro provádění funkce odčítání.
- Poté vytvoříme 2 samostatné soubory aplikací a z každého souboru aplikace přistoupíme k souboru Utility.
- V jednom souboru aplikace přistoupíme k modulu pro přidání a ve druhém budeme přistupovat k modulu pro odečítání.
Krok 1) Definujte kód pro více modulů a řadičů.
var AdditionApp = angular.module('AdditionApp',[]);AdditionApp.controller('DemoAddController', function($scope) {$scope.a=5;$scope.b=6;$scope.c=$scope.a + $scope.b;});var SubractionApp = angular.module('SubtractionApp',[]);SubractionApp.controller('DemoSubtractController', function($scope) {$scope.a=8;$scope.b=6;$scope.d=$scope.a - $scope.b;});Všimněme si klíčových bodů v kódu napsaném výše
var AdditionApp = angular.module('AdditionApp',[]);var SubractionApp = angular.module('SubtractionApp',[]);Jsou vytvořeny 2 samostatné úhlové moduly, jeden s názvem „AdditionApp“ a druhý s názvem „SubtractionApp“.
AdditionApp.controller('DemoAddController', function($scope)SubractionApp.controller('DemoSubtractController', function($scope)Pro každý modul jsou definovány 2 samostatné řadiče, jeden se nazývá DemoAddController a druhý je DemoSubtractController. Každý řadič má samostatnou logiku pro sčítání a odčítání čísel.
Krok 2) Vytvořte hlavní soubory aplikace. Vytvořme soubor s názvem ApplicationAddition.html a přidáme následující kód
Addition Addition :{{c}}Všimněme si klíčových bodů v kódu napsaném výše
Odkazujeme na náš soubor Utilities.js v našem hlavním souboru aplikace. To nám umožňuje odkazovat na všechny moduly AngularJS definované v tomto souboru.
Přistupujeme k modulu 'AdditionApp' a DemoAddController pomocí direktivy ng-app a ng-controller.
{{c}}Protože odkazujeme na výše zmíněný modul a řadič, jsme schopni odkazovat na proměnnou $ scope.c pomocí výrazu. Výraz bude výsledkem přidání 2 proměnných rozsahu a a b, které bylo provedeno v řadiči 'DemoAddController'
Stejným způsobem to uděláme pro funkci odčítání.
Krok 3) Vytvořte hlavní soubory aplikace. Vytvořme soubor s názvem „ApplicationSubtraction.html“ a přidáme následující kód
Addition Subtraction :{{d}}Všimněme si klíčových bodů v kódu napsaném výše
Odkazujeme na náš soubor Utilities.js v našem hlavním souboru aplikace. To nám umožňuje odkazovat na všechny moduly definované v tomto souboru.
Přistupujeme k modulu 'SubtractionApp a DemoSubtractController pomocí směrnice ng-app a ng-controller.
{{d}}Protože odkazujeme na výše zmíněný modul a řadič, jsme schopni odkazovat na proměnnou $ scope.d pomocí výrazu. Výraz bude výsledkem odečtení 2 proměnných rozsahu a a b, které bylo provedeno v řadiči „DemoSubtractController“
souhrn
- Bez použití modulů AngularJS začnou řadiče mít globální rozsah, což vede ke špatným programovacím praktikám.
- Moduly se používají k oddělení obchodní logiky. Lze vytvořit více modulů, které budou logicky odděleny v rámci těchto různých modulů.
- Každý modul AngularJS může mít definovanou a přiřazenou vlastní sadu ovladačů.
- Při definování modulů a řadičů jsou obvykle definovány v samostatných souborech JavaScriptu. Na tyto soubory JavaScriptu se poté odkazuje v hlavním souboru aplikace.