AngularJS-moduler
Hva er en AngularJS-modul?
En modul definerer applikasjonsfunksjonaliteten som brukes pรฅ hele HTML-siden ved รฅ bruke ng-app-direktivet. Den definerer funksjonalitet, som tjenester, direktiver og filtre, pรฅ en mรฅte som gjรธr det enkelt รฅ gjenbruke det i forskjellige applikasjoner.
I alle vรฅre tidligere opplรฆringsprogrammer ville du ha lagt merke til ng-app-direktivet som ble brukt til รฅ definere hovedapplikasjonen din. Dette er et av nรธkkelbegrepene til moduler i Angular.JS.
Hvordan lage en modul i AngularJS
Fรธr vi starter med hva som er en modul, la oss se pรฅ et eksempel pรฅ en AngularJS-applikasjon uten modul og deretter forstรฅ behovet for รฅ ha moduler i applikasjonen din.
La oss vurdere รฅ lage en fil som heter ยซDemoController.jsยป og legge til koden nedenfor i filen
Function Democontroller($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
I koden ovenfor har vi laget en funksjon kalt "DemoController" som skal fungere som en kontroller i applikasjonen vรฅr.
I denne kontrolleren utfรธrer vi bare tillegg av 2 variabler a og b og tildeler tillegget av disse variablene til en ny variabel, c, og tilordner den tilbake til scope-objektet.
La oss nรฅ lage vรฅr hoved Sample.html, som vil vรฆre vรฅr hovedapplikasjon. La oss sette inn kodebiten nedenfor i HTML-siden vรฅr.
<body ng-app="">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
I koden ovenfor inkluderer vi vรฅr DemoController og pรฅkaller deretter verdien til $scope.c-variabelen via et uttrykk.
Men legg merke til vรฅrt ng-app-direktiv, det har en tom verdi.
- Dette betyr i utgangspunktet at alle kontrollere som kalles innenfor rammen av ng-app-direktivet kan nรฅs globalt. Det er ingen grense som skiller flere kontrollere fra hverandre.
- Nรฅ i moderne programmering er dette en dรฅrlig praksis รฅ ha kontrollere som ikke er koblet til noen moduler og gjรธre dem globalt tilgjengelige. Det mรฅ vรฆre en logisk grense definert for kontrollere.
Og det er her moduler kommer inn. Moduler brukes til รฅ skape atskillelse av grenser og hjelpe til med รฅ skille kontrollere basert pรฅ funksjonalitet.
La oss endre koden ovenfor for รฅ implementere moduler og koble kontrolleren vรฅr til denne modulen
var sampleApp = angular.module('sampleApp',[]);
sampleApp.controller('DemoController', function($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
});
La oss merke de viktigste forskjellene i koden skrevet ovenfor
-
var sampleApp = angular.module('sampleApp',[]);Vi lager spesifikt en AngularJS-modul kalt 'sampleApp'. Dette vil danne en logisk grense for funksjonaliteten som denne modulen skal inneholde. Sรฅ i eksemplet ovenfor har vi en modul som inneholder en kontroller som utfรธrer rollen som tillegg av 2 scope-objekter. Derfor kan vi ha en modul med en logisk grense som sier at denne modulen bare vil utfรธre funksjonaliteten til matematiske beregninger for applikasjonen.
-
sampleApp.controller('DemoController', function($scope)Vi kobler nรฅ kontrolleren til vรฅr AngularJS-modul "SampleApp". Dette betyr at hvis vi ikke refererer til modulen 'sampleApp' i hoved-HTML-koden vรฅr, vil vi ikke kunne referere til funksjonaliteten til kontrolleren vรฅr.
Vรฅr hoved-HTML-kode vil ikke se ut som vist nedenfor
<body ng-app="'sampleApp'">
<div ng-controller="DemoController">
<h3> Guru99 Global Event</h3>
{{c}}
La oss merke oss de viktigste forskjellene i koden skrevet ovenfor og vรฅr forrige kode
<body ng-app="'sampleApp'">
I kroppsmerkingen vรฅr,
- I stedet for รฅ ha et tomt ng-app-direktiv, kaller vi nรฅ modulen sampleApp.
- Ved รฅ kalle denne applikasjonsmodulen kan vi nรฅ fรฅ tilgang til kontrolleren 'DemoController' og funksjonaliteten som finnes i demokontrolleren.
Moduler og kontrollere i AngularJS
In Vinklet.JS, mรธnsteret som brukes for รฅ utvikle moderne nettapplikasjoner er รฅ lage flere moduler og kontrollere for รฅ logisk skille flere funksjonsnivรฅer.
Normalt vil moduler lagres separat Javascript filer, som vil vรฆre forskjellig fra hovedprogramfilen.
La oss se pรฅ et eksempel pรฅ hvordan dette kan oppnรฅs.
I eksemplet nedenfor,
- Vi vil lage en fil kalt Utilities.js som vil inneholde 2 moduler, en for รฅ utfรธre funksjonaliteten til addisjon og den andre for รฅ utfรธre funksjonaliteten til subtraksjon.
- Vi skal deretter lage 2 separate applikasjonsfiler og fรฅ tilgang til Utility-filen fra hver applikasjonsfil.
- I den ene sรธknadsfilen fรฅr vi tilgang til modulen for addisjon og i den andre vil vi fรฅ tilgang til modulen for subtraksjon.
Trinn 1) Definer koden for de flere modulene og kontrollerene.
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;
});
La oss legge merke til nรธkkelpunktene i koden skrevet ovenfor
-
var AdditionApp = angular.module('AdditionApp',[]); var SubractionApp = angular.module('SubtractionApp',[]);Det er opprettet 2 separate vinkelmoduler, en som fรฅr navnet 'AdditionApp' og den andre fรฅr navnet 'SubtractionApp'.
-
AdditionApp.controller('DemoAddController', function($scope) SubractionApp.controller('DemoSubtractController', function($scope)Det er definert 2 separate kontrollere for hver modul, den ene kalles DemoAddController og den andre er DemoSubtractController. Hver kontroller har egen logikk for addisjon og subtraksjon av tall.
Trinn 2) Lag hovedapplikasjonsfilene dine. La oss lage en fil kalt ApplicationAddition.html og legge til koden nedenfor
<!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>
La oss legge merke til nรธkkelpunktene i koden skrevet ovenfor
-
<script src="/lib/Utilities.js"></script>
Vi refererer til Utilities.js-filen vรฅr i hovedapplikasjonsfilen. Dette lar oss referere til alle AngularJS-moduler som er definert i denne filen.
-
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
Vi fรฅr tilgang til 'AdditionApp'-modulen og DemoAddController ved รฅ bruke ng-app-direktivet og ng-kontroller henholdsvis.
-
{{c}}Siden vi refererer til den ovennevnte modulen og kontrolleren, kan vi referere til $scope.c-variabelen via et uttrykk. Uttrykket vil vรฆre resultatet av tillegget av de 2 omfangsvariablene a og b som ble utfรธrt i 'DemoAddController'-kontrolleren
Pรฅ samme mรฅte vil vi gjรธre for subtraksjonsfunksjon.
Trinn 3) Lag hovedapplikasjonsfilene dine. La oss lage en fil kalt "ApplicationSubtraction.html" og legge til koden nedenfor
<!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>
La oss legge merke til nรธkkelpunktene i koden skrevet ovenfor
-
<script src="/lib/Utilities.js"></script>
Vi refererer til Utilities.js-filen vรฅr i hovedprogramfilen vรฅr. Dette lar oss referere til alle moduler som er definert i denne filen.
-
<div ng-app = " SubtractionApp " ng-controller=" DemoSubtractController ">
Vi fรฅr tilgang til 'SubtractionApp-modulen og DemoSubtractController ved รฅ bruke henholdsvis ng-app-direktivet og ng-kontrolleren.
-
{{d}}Siden vi refererer til den ovennevnte modulen og kontrolleren, kan vi referere til $scope.d-variabelen via et uttrykk. Uttrykket vil vรฆre resultatet av subtraksjonen av de 2 omfangsvariablene a og b som ble utfรธrt i 'DemoSubtractController' controller
Sammendrag
- Uten bruk av AngularJS-moduler begynner kontrollerene รฅ ha et globalt omfang som fรธrer til dรฅrlig programmeringspraksis.
- Moduler brukes til รฅ skille forretningslogikk. Flere moduler kan opprettes for รฅ ha logisk atskilt innenfor disse forskjellige modulene.
- Hver AngularJS-modul kan ha sitt eget sett med kontrollere definert og tilordnet.
- Ved definering av moduler og kontrollere er de normalt definert separat JavaScript filer. Disse JavaSkriptfiler blir deretter referert til i hovedprogramfilen.
