AngularJS modulok
Mi az AngularJS modul?
Egy modul hatรกrozza meg az alkalmazรกsfunkciรณkat, amelyek az ng-app direktรญva segรญtsรฉgรฉvel a teljes HTML-oldalra vonatkoznak. Olyan funkciรณkat hatรกroz meg, mint a szolgรกltatรกsok, direktรญvรกk รฉs szลฑrลk, oly mรณdon, hogy kรถnnyen รบjrafelhasznรกlhatรณ legyen a kรผlรถnbรถzล alkalmazรกsokban.
Minden korรกbbi oktatรณanyagunkban รฉszrevette volna az ng-app direktรญvรกt, amelyet a fล Angular alkalmazรกs meghatรกrozรกsรกhoz hasznรกlnak. Ez az Angular.JS moduljainak egyik kulcsfogalma.
Modul lรฉtrehozรกsa AngularJS-ben
Mielลtt elkezdenรฉnk azzal, hogy mi a modul, nรฉzzรผnk meg egy pรฉldรกt egy modul nรฉlkรผli AngularJS alkalmazรกsra, majd รฉrtsรผk meg, hogy szรผksรฉg van modulokra az alkalmazรกsban.
Vegyรผk fontolรณra egy fรกjl lรฉtrehozรกsรกt โDemoController.jsโ รฉs adja hozzรก az alรกbbi kรณdot a fรกjlhoz
Function Democontroller($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
A fenti kรณdban lรฉtrehoztunk egy โDemoControllerโ nevลฑ funkciรณt, amely vezรฉrlลkรฉnt fog mลฑkรถdni az alkalmazรกsunkon belรผl.
Ebben a vezรฉrlลben csak 2 a รฉs b vรกltozรณ hozzรกadรกsรกt hajtjuk vรฉgre, รฉs ezeknek a vรกltozรณknak a hozzรกadรกsรกt egy รบj vรกltozรณhoz, a c-hez rendeljรผk, รฉs visszarendeljรผk a hatรณkรถr objektumhoz.
Most hozzuk lรฉtre a fล Sample.html-รผnket, amely a fล alkalmazรกsunk lesz. Illesszรผk be az alรกbbi kรณdrรฉszletet HTML oldalunkba.
<body ng-app="">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
A fenti kรณdba beletesszรผk a DemoControllerรผnket, majd egy kifejezรฉsen keresztรผl meghรญvjuk a $scope.c vรกltozรณ รฉrtรฉkรฉt.
De figyelje meg az ng-app direktรญvรกnkat, รผres รฉrtรฉke van.
- Ez alapvetลen azt jelenti, hogy az ng-app direktรญva keretรฉben meghรญvott รถsszes vezรฉrlล globรกlisan elรฉrhetล. Nincs hatรกr, amely elvรกlasztanรก a tรถbb vezรฉrlลt egymรกstรณl.
- A mai programozรกsban ez egy rossz gyakorlat, ha a vezรฉrlลket nem csatlakoztatjรกk egyetlen modulhoz sem, รฉs globรกlisan hozzรกfรฉrhetลvรฉ teszik ลket. Meg kell hatรกrozni valamilyen logikai hatรกrt a vezรฉrlลk szรกmรกra.
รs itt jรถnnek be a modulok. A modulok a hatรกrok szรฉtvรกlasztรกsรกra szolgรกlnak, รฉs segรญtik a vezรฉrlลk funkcionalitรกs alapjรกn tรถrtรฉnล szรฉtvรกlasztรกsรกt.
Vรกltoztassuk meg a fenti kรณdot a modulok megvalรณsรญtรกsรกhoz, รฉs csatlakoztassuk a vezรฉrlลnket ehhez a modulhoz
var sampleApp = angular.module('sampleApp',[]);
sampleApp.controller('DemoController', function($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
Jegyezzรผk meg a fลbb kรผlรถnbsรฉgeket a fent leรญrt kรณdban
-
var sampleApp = angular.module('sampleApp',[]);Kifejezetten egy โsampleAppโ nevลฑ AngularJS modult hozunk lรฉtre. Ez logikai hatรกrt fog kรฉpezni a modul รกltal tartalmazott funkciรณk szรกmรกra. Tehรกt a fenti pรฉldรกnkban van egy modulunk, amely egy vezรฉrlลt tartalmaz, amely 2 hatรณkรถrobjektum hozzรกadรกsรกnak szerepรฉt tรถlti be. Ennรฉlfogva rendelkezhetรผnk egy olyan modullal, amelynek logikai hatรกra azt mondja, hogy ez a modul csak az alkalmazรกs matematikai szรกmรญtรกsainak funkciรณjรกt fogja vรฉgrehajtani.
-
sampleApp.controller('DemoController', function($scope)Most csatlakoztatjuk a vezรฉrlลt az AngularJS โSampleAppโ modulunkhoz. Ez azt jelenti, hogy ha nem hivatkozunk a โsampleAppโ modulra a fล HTML-kรณdunkban, akkor nem tudunk hivatkozni a vezรฉrlลnk funkciรณira.
A fล HTML kรณdunk nem az alรกbbiak szerint fog kinรฉzni
<body ng-app="'sampleApp'">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
Jegyezzรผk meg a legfontosabb kรผlรถnbsรฉgeket a fent รญrt kรณdban รฉs a korรกbbi kรณdunkban
<body ng-app="'sampleApp'">
A testcรญmkรฉnkben,
- Az รผres ng-app direktรญva helyett most sampleApp-nak hรญvjuk a modult.
- Ennek az alkalmazรกsmodulnak a meghรญvรกsรกval elรฉrhetjรผk a โDemoControllerโ vezรฉrlลt รฉs a demo vezรฉrlลben talรกlhatรณ funkciรณkat.
Modulok รฉs vezรฉrlลk az AngularJS-ben
In Szรถgletes.JS, a fejlesztรฉshez hasznรกlt mintaping A modern webes alkalmazรกsok lรฉnyege, hogy tรถbb modult รฉs vezรฉrlลt hoznak lรฉtre a funkcionalitรกs tรถbb szintjรฉnek logikai elkรผlรถnรญtรฉsรฉre.
รltalรกban a modulokat kรผlรถn tรกroljรกk Javascript fรกjlokat, amelyek eltรฉrnek a fล alkalmazรกsfรกjltรณl.
Nรฉzzรผnk egy pรฉldรกt arra, hogyan lehet ezt elรฉrni.
Az alรกbbi pรฉldรกban
- Lรฉtrehozunk egy Utilities.js nevลฑ fรกjlt, amely 2 modult tartalmaz, az egyik az รถsszeadรกs, a mรกsik a rรฉszmลฑveletek funkciรณit fogja vรฉgrehajtani.tracCIร.
- Ezutรกn 2 kรผlรถnรกllรณ alkalmazรกsfรกjlt fogunk lรฉtrehozni, รฉs mindegyik alkalmazรกsfรกjlbรณl hozzรกfรฉrรผnk a segรฉdprogramfรกjlhoz.
- Az egyik alkalmazรกsfรกjlban az รถsszeadรกshoz, a mรกsikban pedig az almodulhoz fogunk hozzรกfรฉrni.tracCIร.
Step 1) Hatรกrozza meg a kรณdot a tรถbb modulhoz รฉs vezรฉrlลhรถz.
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;
});
Jegyezzรผk meg a fent leรญrt kรณd legfontosabb pontjait
-
var AdditionApp = angular.module('AdditionApp',[]); var SubractionApp = angular.module('SubtractionApp',[]);Kรฉt kรผlรถnรกllรณ Angular modul jรถn lรฉtre, az egyik az โAdditionAppโ, a mรกsik pedig a โSubโ nevet kapja.tractionApp'.
-
AdditionApp.controller('DemoAddController', function($scope) SubractionApp.controller('DemoSubtractController', function($scope)Minden modulhoz 2 kรผlรถn vezรฉrlล van definiรกlva, az egyik a DemoAddController, a mรกsik pedig a DemoSub.tractVezรฉrlล. Minden vezรฉrlล kรผlรถn logikรกval rendelkezik az รถsszeadรกshoz รฉs a rรฉszleges mลฑveletekhez.tracszรกmok ciรณja.
Step 2) Hozza lรฉtre a fล alkalmazรกsfรกjljait. Hozzon lรฉtre egy ApplicationAddition.html nevลฑ fรกjlt, รฉs adja hozzรก az alรกbbi kรณdot
<!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>
Jegyezzรผk meg a fent leรญrt kรณd legfontosabb pontjait
-
<script src="/lib/Utilities.js"></script>
A fล alkalmazรกsfรกjlunkban az Utilities.js fรกjlra hivatkozunk. Ez lehetลvรฉ teszi szรกmunkra, hogy hivatkozzunk az ebben a fรกjlban definiรกlt AngularJS modulokra.
-
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
Az โAdditionAppโ modulhoz รฉs a DemoAddControllerhez az ng-app direktรญva รฉs a ng-vezรฉrlล illetลleg.
-
{{c}}Mivel a fent emlรญtett modulra รฉs vezรฉrlลre hivatkozunk, a $scope.c vรกltozรณra egy kifejezรฉsen keresztรผl hivatkozhatunk. A kifejezรฉs a 2 a รฉs b hatรณkรถr-vรกltozรณ hozzรกadรกsรกnak eredmรฉnye lesz, amelyet a 'DemoAddController' vezรฉrlลben hajtottak vรฉgre.
Ugyanรญgy fogjuk csinรกlni a sub esetรฉben istracciรณs fรผggvรฉny.
Step 3) Hozd lรฉtre a fล alkalmazรกsfรกjljaidat. Hozz lรฉtre egy โApplicationSubโ nevลฑ fรกjlt.traction.htmlโ fรกjlt, รฉs adja hozzรก az alรกbbi kรณdot
<!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>
Jegyezzรผk meg a fent leรญrt kรณd legfontosabb pontjait
-
<script src="/lib/Utilities.js"></script>
A fล alkalmazรกsfรกjlunkban az Utilities.js fรกjlra hivatkozunk. Ez lehetลvรฉ teszi szรกmunkra, hogy hivatkozhatunk az ebben a fรกjlban definiรกlt modulokra.
-
<div ng-app = " SubtractionApp " ng-controller=" DemoSubtractController ">
Hozzรกfรฉrรผnk a 'Sub'-hoztractionApp modul รฉs DemoSubtractController az ng-app direktรญva, illetve az ng-controller hasznรกlatรกval.
-
{{d}}Mivel a fent emlรญtett modulra รฉs vezรฉrlลre hivatkozunk, a $scope.d vรกltozรณra egy kifejezรฉsen keresztรผl tudunk hivatkozni. A kifejezรฉs a sub eredmรฉnye lesz.traca kรฉt hatรณkรถrลฑ vรกltozรณ, a รฉs b meghatรกrozรกsa, amelyet a 'DemofelirattractVezรฉrlล ellenลr
รsszegzรฉskรฉnt
- Az AngularJS modulok hasznรกlata nรฉlkรผl a vezรฉrlลk globรกlis hatรณkรถrrel rendelkeznek, ami rossz programozรกsi gyakorlatokhoz vezet.
- A modulok az รผzleti logika elkรผlรถnรญtรฉsรฉre szolgรกlnak. Tรถbb modul is lรฉtrehozhatรณ, amelyek logikailag elvรกlaszthatรณk ezeken a kรผlรถnbรถzล modulokon belรผl.
- Minden AngularJS modulnak sajรกt vezรฉrlลkรฉszlete lehet definiรกlva รฉs hozzรกrendelve.
- A modulok รฉs vezรฉrlลk meghatรกrozรกsakor รกltalรกban kรผlรถn definiรกljรกk ลket JavaForgatรณkรถnyv fรกjlokat. Ezek JavaEzutรกn a szkriptfรกjlokra hivatkoznak a fล alkalmazรกsfรกjlban.
