AngularJS-modules
⚡ Slimme samenvatting
Modules in AngularJS fungeren als containers die controllers, services, directives en filters groeperen achter één logische grens, zodat de ng-app directive alleen de functionaliteit laadt die een enkele pagina daadwerkelijk nodig heeft tijdens de uitvoering.

Wat is een AngularJS-module?
Een module definieert de applicatiefunctionaliteit die op de gehele HTML-pagina wordt toegepast met behulp van de ng-app-richtlijn. Het definieert functionaliteit, zoals services, richtlijnenen filters, op een manier die het gemakkelijk maakt om ze in verschillende toepassingen te hergebruiken.
De bovenstaande illustratie vat die grens samen.
In al onze eerdere tutorialsJe hebt vast wel gemerkt dat de `ng-app` directive wordt gebruikt om je hoofdapplicatie in Angular te definiëren. Dit is een van de belangrijkste concepten van modules in AngularJS.
⚠️ Versie-opmerking: De ondersteuning voor AngularJS is in januari 2022 beëindigd. Modern Angular Het maakt gebruik van @NgModule, en standalone componenten zijn de standaardinstelling. De onderstaande code is verouderd.
Hoe u een module maakt in AngularJS
Voordat we ingaan op wat een module is, laten we eerst eens kijken naar een voorbeeld van een module. AngularJS-applicatie zonder module en begrijp vervolgens waarom modules nodig zijn in je applicatie.
Laten we eens een bestand aanmaken met de naam "DemoController.js" en de onderstaande code aan dat bestand toevoegen.
function DemoController($scope) {
$scope.a=1;
$scope.b=2;
$scope.c=$scope.b + $scope.a;
}
In de bovenstaande code hebben we een functie gemaakt met de naam “DemoController” die als controller binnen onze applicatie gaat fungeren.
In deze controller tellen we twee variabelen a en b bij elkaar op, kennen we de som van deze variabelen toe aan een nieuwe variabele c en kennen we deze vervolgens weer toe aan de controller. omvang voorwerp.
Laten we nu onze hoofdtoepassing Sample.html maken, die onze hoofdtoepassing zal zijn. Laten we het onderstaande codefragment in onze HTML-pagina invoegen.
<body ng-app=""> <div ng-controller="DemoController"> <h3> Guru99 Global Event</h3> {{c}}
In de bovenstaande code nemen we onze DemoController op en roepen vervolgens de waarde van de variabele $scope.c aan via een expressie.
Maar let op onze ng-app-richtlijn, deze heeft een blanco waarde.
- Dit betekent in principe dat alle controllers die worden opgeroepen in het kader van de ng-app-richtlijn wereldwijd toegankelijk zijn. Er is geen grens die meerdere controllers van elkaar scheidt.
- In de moderne programmering is het een slechte gewoonte om controllers niet aan modules te koppelen en ze wereldwijd toegankelijk te maken. Er moet een logische grens zijn gedefinieerd voor controllers.
En dit is waar modules in beeld komen. Modules worden gebruikt om die scheiding van grenzen te creëren en te helpen bij het scheiden van controllers op basis van functionaliteit.
Laten we de bovenstaande code wijzigen om modules te implementeren en onze controller aan deze module te koppelen
var sampleApp = angular.module('sampleApp',[]); sampleApp.controller('DemoController', function($scope) { $scope.a=1; $scope.b=2; $scope.c=$scope.b + $scope.a; });
Laten we de belangrijkste verschillen in de hierboven geschreven code noteren
-
var sampleApp = angular.module('sampleApp',[]);
We maken specifiek een AngularJS-module genaamd 'sampleApp'. Dit zal een logische grens vormen voor de functionaliteit die deze module zal bevatten. In ons bovenstaande voorbeeld hebben we dus een module die een controller bevat die de rol vervult van het toevoegen van 2 scope-objecten. Daarom kunnen we één module hebben met een logische grens die zegt dat deze module alleen de functionaliteit van wiskundige berekeningen voor de toepassing zal uitvoeren.
-
sampleApp.controller('DemoController', function($scope)
We koppelen de controller nu aan onze AngularJS-module "sampleApp". Dit betekent dat als we de module 'sampleApp' niet in onze hoofd-HTML-code opnemen, we de functionaliteit van onze controller niet kunnen gebruiken.
Setter versus getter: hoekige.module maakt alleen een module aan wanneer de afhankelijkheid Er wordt een array doorgegeven; zonder deze array haalt de aanroep een bestaande module op.
Onze belangrijkste HTML-code ziet er nu als volgt uit:
<body ng-app="sampleApp"> <div ng-controller="DemoController"> <h3> Guru99 Global Event</h3> {{c}}
Laten we eens kijken naar de belangrijkste verschillen in de hierboven geschreven code en onze vorige code
<body ng-app="sampleApp">
In onze bodytag,
- In plaats van een lege ng-app-richtlijn te hebben, roepen we nu de module sampleApp aan.
- Door deze applicatiemodule aan te roepen, hebben we nu toegang tot de controller 'DemoController' en de functionaliteit die aanwezig is in de democontroller.
Modules en controllers in AngularJS
In angularjs, het patroon dat gebruikt wordt voor ontwikkelingping Moderne webapplicaties maken gebruik van meerdere modules en controllers om verschillende functionaliteitsniveaus logisch van elkaar te scheiden.
Normaal gesproken worden modules afzonderlijk opgeslagen JavaScript bestanden, die anders zouden zijn dan het hoofdtoepassingsbestand.
Laten we eens kijken naar een voorbeeld van hoe dit kan worden bereikt.
In het onderstaande voorbeeld
- We maken een bestand genaamd Utilities.js aan dat twee modules bevat: één voor de optelfunctionaliteit en de andere voor de aftrekfunctionaliteit.tractie.
- We gaan dan twee afzonderlijke applicatiebestanden maken en vanuit elk applicatiebestand toegang krijgen tot het Utility-bestand.
- In het ene applicatiebestand gebruiken we de module voor optellen en in het andere de module voor aftrekken.tractie.
Stap 1) Definieer de code voor de meerdere modules en controllers.
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; });
Laten we de belangrijkste punten in de hierboven geschreven code noteren
-
var AdditionApp = angular.module('AdditionApp',[]); var SubractionApp = angular.module('SubtractionApp',[]);
Er zijn twee aparte AngularJS-modules aangemaakt, één met de naam 'AdditionApp' en de andere met de naam 'Sub'.tractionApp'.
-
AdditionApp.controller('DemoAddController', function($scope) SubractionApp.controller('DemoSubtractController', function($scope)
Er zijn twee aparte controllers gedefinieerd voor elke module: de DemoAddController en de DemoSub.tractController. Elke controller heeft aparte logica voor optellen en aftrekken.tracvan getallen.
Stap 2) Maak uw belangrijkste applicatiebestanden. Laten we een bestand maken met de naam ApplicationAddition.html en de onderstaande code toevoegen
<!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>
Laten we de belangrijkste punten in de hierboven geschreven code noteren
-
<script src="/lib/Utilities.js"></script>We verwijzen naar ons Utilities.js-bestand in ons hoofdtoepassingsbestand. Hierdoor kunnen we verwijzen naar alle AngularJS-modules die in dit bestand zijn gedefinieerd.
-
<div ng-app = "AdditionApp" ng-controller="DemoAddController">
We hebben toegang tot de module 'AdditionApp' en DemoAddController met behulp van de ng-app-richtlijn en de ng-controller respectievelijk.
-
{{c}}Omdat we verwijzen naar de bovengenoemde module en controller, kunnen we via een expressie naar de variabele $scope.c verwijzen. De expressie zal het resultaat zijn van de toevoeging van de 2 scopevariabelen a en b, die werd uitgevoerd in de 'DemoAddController'-controller
Op dezelfde manier zullen we dat doen voor abonnementen.tractie-functie.
Stap 3) Maak de belangrijkste applicatiebestanden aan. Laten we een bestand maken met de naam "ApplicationSub".traction.html” en voeg de onderstaande code toe.
<!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>
Laten we de belangrijkste punten in de hierboven geschreven code noteren
-
<script src="/lib/Utilities.js"></script>We verwijzen naar ons Utilities.js-bestand in ons hoofdtoepassingsbestand. Hierdoor kunnen we verwijzen naar alle modules die in dit bestand zijn gedefinieerd.
-
<div ng-app = " SubtractionApp " ng-controller=" DemoSubtractController ">
We hebben toegang tot de 'Sub'.tractionApp'-module en DemoSubtractController door respectievelijk de ng-app-richtlijn en de ng-controller te gebruiken.
-
{{d}}Omdat we verwijzen naar de bovengenoemde module en controller, kunnen we de variabele $scope.d via een expressie benaderen. De expressie is het resultaat van de subroutine.tracde 2 bereikvariabelen a en b die werden uitgevoerd in de 'DemoSub'tractController' Controller
