Moduly AngularJS

Co je modul AngularJS?

Modul definuje funkฤnost aplikace, kterรก se aplikuje na celou HTML strรกnku pomocรญ direktivy ng-app. Definuje funkce, jako jsou sluลพby, direktivy 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 jste si vลกimli direktivy ng-app pouลพรญvanรฉ k definovรกnรญ vaลกรญ hlavnรญ aplikace Angular. Toto je jeden z klรญฤovรฝch konceptลฏ modulลฏ v Angular.JS.

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 pak 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 kontrolรฉr.

V tomto ovladaฤi prรกvฤ› provรกdรญme pล™idรกnรญ 2 promฤ›nnรฝch aab a pล™iล™adรญme pล™idรกnรญ tฤ›chto promฤ›nnรฝch k novรฉ promฤ›nnรฉ c a pล™iล™adรญme ji zpฤ›t k objektu scope.

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.

<body ng-app="">
      <div ng-controller="DemoController">
      <h3> Guru99 Global Event</h3>
      {{c}}

Ve vรฝลกe uvedenรฉm kรณdu jsme zahrnuli nรกลก DemoController a potรฉ pomocรญ vรฝrazu vyvolali hodnotu promฤ›nnรฉ $scope.c.

Vลกimnฤ›te si ale naลกรญ direktivy ng-app, mรก prรกzdnou hodnotu.

  • To v podstatฤ› znamenรก, ลพe ke vลกem kontrolรฉrลฏm, kterรฉ jsou volรกny v kontextu direktivy ng-app, lze pล™istupovat globรกlnฤ›. Neexistuje ลพรกdnรก hranice, kterรก by oddฤ›lovala vรญce ovladaฤลฏ od sebe.
  • V modernรญm programovรกnรญ je to ลกpatnรก praxe, kdyลพ nejsou ovladaฤe pล™ipojeny k ลพรกdnรฝm modulลฏm a jsou globรกlnฤ› pล™รญstupnรฉ. Pro ovladaฤe musรญ bรฝt definovรกna nฤ›jakรก logickรก hranice.

A zde pล™ichรกzejรญ na ล™adu moduly. Moduly se pouลพรญvajรญ k vytvoล™enรญ tohoto oddฤ›lenรญ hranic a pomรกhajรญ pล™i oddฤ›lenรญ ล™รญdicรญch jednotek na zรกkladฤ› funkฤnosti.

Zmฤ›ลˆme vรฝลกe uvedenรฝ kรณd pro implementaci modulลฏ a pล™ipojte k tomuto modulu nรกลก ovladaฤ

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ลฏ ve vรฝลกe napsanรฉm kรณdu

  1. var sampleApp = angular.module('sampleApp',[]);

    Konkrรฉtnฤ› vytvรกล™รญme modul AngularJS s nรกzvem 'sampleApp'. To bude tvoล™it logickou hranici pro funkcionalitu, kterou bude tento modul obsahovat. Takลพe v naลกem vรฝลกe uvedenรฉm pล™รญkladu mรกme modul, kterรฝ obsahuje ovladaฤ, kterรฝ plnรญ roli pล™idรกnรญ 2 objektลฏ rozsahu. Mลฏลพeme tedy mรญt jeden modul s logickou hranicรญ, kterรก ล™รญkรก, ลพe tento modul bude provรกdฤ›t pouze funkcionalitu matematickรฝch vรฝpoฤtลฏ pro aplikaci.

  2. 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 HTML kรณdu, nebudeme moci odkazovat na funkฤnost naลกeho ovladaฤe.

Nรกลก hlavnรญ HTML kรณd nebude vypadat jako nรญลพe

<body ng-app="'sampleApp'">
                           <div ng-controller="DemoController">
                           <h3> Guru99 Global Event</h3>
                		   {{c}}

Vลกimnฤ›me si klรญฤovรฝch rozdรญlลฏ ve vรฝลกe napsanรฉm kรณdu a naลกem pล™edchozรญm kรณdu

<body ng-app="'sampleApp'">

V naลกem tฤ›lesnรฉm ลกtรญtku,

  • Mรญsto prรกzdnรฉ direktivy ng-app nynรญ volรกme modul sampleApp.
  • Zavolรกnรญm tohoto aplikaฤnรญho modulu mลฏลพeme nynรญ pล™istupovat k ล™รญdicรญ jednotce โ€žDemoControllerโ€œ a funkcรญm pล™รญtomnรฝm v demo ล™รญdicรญ jednotce.

Moduly a ล™adiฤe v AngularJS

In Angular.JS, vzor pouลพitรฝ pro vรฝvojping Modernรญ webovรฉ aplikace vytvรกล™ejรญ vรญce modulลฏ a kontrolerลฏ, kterรฉ logicky oddฤ›lujรญ rลฏznรฉ รบrovnฤ› funkcionality.

Normรกlnฤ› budou moduly uloลพeny oddฤ›lenฤ› Javascript soubory, kterรฉ by se liลกily od hlavnรญho souboru aplikace.

Podรญvejme se na pล™รญklad, 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 sฤรญtรกnรญ a druhรฝ pro odฤรญtรกnรญ.tracvรกnรญ.
  • Potรฉ vytvoล™รญme 2 samostatnรฉ aplikaฤnรญ soubory a z kaลพdรฉho aplikaฤnรญho souboru pล™istoupรญme k souboru Utility.
  • V jednom souboru aplikace budeme pล™istupovat k modulu pro sฤรญtรกnรญ a v druhรฉm budeme pล™istupovat k modulu pro podล™azenรญ.tracvรกnรญ.

Krok 1) Definujte kรณd pro vรญce modulลฏ a ovladaฤลฏ.

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รฝลกe napsanรฉho kรณdu

  1.  var AdditionApp = angular.module('AdditionApp',[]);
     var SubractionApp = angular.module('SubtractionApp',[]);

    Jsou vytvoล™eny 2 samostatnรฉ Angular moduly, jeden s nรกzvem 'AdditionApp' a druhรฝ s nรกzvem 'Sub'.tractionApp'.

  2. AdditionApp.controller('DemoAddController', function($scope)
    SubractionApp.controller('DemoSubtractController', function($scope)

    Pro kaลพdรฝ modul jsou definovรกny 2 samostatnรฉ kontrolery, jeden se nazรฝvรก DemoAddController a druhรฝ DemoSub.tractController. Kaลพdรฝ Controller mรก samostatnou logiku pro sฤรญtรกnรญ a podฤรญtรกnรญtracce ฤรญsel.

Krok 2) Vytvoล™te hlavnรญ soubory aplikace. Vytvoล™me soubor s nรกzvem ApplicationAddition.html a pล™idejte nรญลพe uvedenรฝ kรณd

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Addition</title>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <script src="lib/utilities.js"></script>
</head>
<body>
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
    Addition :{{c}}

</div>
</body>
</html>

Vลกimnฤ›me si klรญฤovรฝch bodลฏ vรฝลกe napsanรฉho kรณdu

  1. <script src="/lib/Utilities.js"></script>

    Odkazujeme na nรกลก soubor Utilities.js v hlavnรญm souboru aplikace. To nรกm umoลพลˆuje odkazovat na jakรฉkoli moduly AngularJS definovanรฉ v tomto souboru.

  2. <div ng-app = "AdditionApp" ng-controller="DemoAddController">

    K modulu 'AdditionApp' a DemoAddController pล™istupujeme pomocรญ direktivy ng-app a ng-kontrolรฉr resp.

  3. {{c}}

    Protoลพe odkazujeme na vรฝลกe zmรญnฤ›nรฝ modul a kontrolรฉr, jsme schopni odkazovat na promฤ›nnou $scope.c pomocรญ vรฝrazu. Vรฝraz bude vรฝsledkem pล™idรกnรญ 2 promฤ›nnรฝch rozsahu aab, kterรฉ bylo provedeno v ovladaฤi 'DemoAddController'

    Stejnรฝm zpลฏsobem to udฤ›lรกme pro subtracfunkce.

Krok 3) Vytvoล™te hlavnรญ soubory aplikace. Vytvoล™me soubor s nรกzvem โ€žApplicationSubโ€œtraction.htmlโ€œ a pล™idejte nรญลพe uvedenรฝ kรณd

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Addition</title>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <script src="lib/utilities.js"></script>
</head>
<body>
<div ng-app = "SubtractionApp" ng-controller="DemoSubtractController">
    Subtraction :{{d}}
  
</div>
</body>
</html>

Vลกimnฤ›me si klรญฤovรฝch bodลฏ vรฝลกe napsanรฉho kรณdu

  1. <script src="/lib/Utilities.js"></script>

    Odkazujeme na nรกลก soubor Utilities.js v hlavnรญm souboru aplikace. To nรกm umoลพลˆuje odkazovat na vลกechny moduly definovanรฉ v tomto souboru.

  2. <div ng-app = " SubtractionApp " ng-controller=" DemoSubtractController ">

    Pล™istupujeme k โ€žSubโ€œtracModul tionApp a DemoSubtractController pomocรญ direktivy ng-app a ng-controller.

  3. {{d}}

    Protoลพe odkazujeme na vรฝลกe zmรญnฤ›nรฝ modul a kontroler, mลฏลพeme odkazovat na promฤ›nnou $scope.d pomocรญ vรฝrazu. Vรฝraz bude vรฝsledkem podprogramutracovรกnรญ 2 promฤ›nnรฝch rozsahu a a b, kterรฉ bylo provedeno v DemoSubtractController kontrolor

Shrnutรญ

  • Bez pouลพitรญ modulลฏ AngularJS zaฤรญnajรญ mรญt ล™adiฤe 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ลฏ tak, aby byly v rรกmci tฤ›chto rลฏznรฝch modulลฏ logicky oddฤ›leny.
  • Kaลพdรฝ modul AngularJS mลฏลพe mรญt definovanou a pล™iล™azenou vlastnรญ sadu ovladaฤลฏ.
  • Pล™i definovรกnรญ modulลฏ a ล™รญdicรญch jednotek se obvykle definujรญ samostatnฤ› JavaScรฉnรกล™ soubory. Tyto JavaSoubory skriptลฏ jsou pak odkazovรกny v hlavnรญm souboru aplikace.

Shrลˆte tento pล™รญspฤ›vek takto: