AngularJS-moduler

Vad รคr en AngularJS-modul?

En modul definierar applikationsfunktionaliteten som tillรคmpas pรฅ hela HTML-sidan med hjรคlp av ng-app-direktivet. Den definierar funktionalitet, sรฅsom tjรคnster, direktiv och filter, pรฅ ett sรคtt som gรถr det enkelt att รฅteranvรคnda det i olika applikationer.

I alla vรฅra tidigare handledningar skulle du ha mรคrkt ng-app-direktivet som anvรคnds fรถr att definiera din huvudsakliga Angular-applikation. Detta รคr ett av nyckelbegreppen fรถr moduler i Angular.JS.

Hur man skapar en modul i AngularJS

Innan vi bรถrjar med vad som รคr en modul, lรฅt oss titta pรฅ ett exempel pรฅ en AngularJS-applikation utan modul och sedan fรถrstรฅ behovet av att ha moduler i din applikation.

Lรฅt oss รถvervรคga att skapa en fil som heter "DemoController.js" och lรคgga till koden nedan i filen

Function Democontroller($scope) {
                                    $scope.a=1;
                                    $scope.b=2;
                                    $scope.c=$scope.b + $scope.a;
                            });

I ovanstรฅende kod har vi skapat en funktion som heter "DemoController" som kommer att fungera som en kontroller i vรฅr applikation.

I den hรคr kontrollern utfรถr vi bara tillรคgget av 2 variabler a och b och tilldelar tillรคgget av dessa variabler till en ny variabel, c, och tilldelar den tillbaka till scope-objektet.

Lรฅt oss nu skapa vรฅr huvudsakliga Sample.html, som kommer att vara vรฅr huvudapplikation. Lรฅt oss infoga kodavsnittet nedan i vรฅr HTML-sida.

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

I koden ovan inkluderar vi vรฅr DemoController och anropar sedan vรคrdet fรถr variabeln $scope.c via ett uttryck.

Men lรคgg mรคrke till vรฅrt ng-app-direktiv, det har ett tomt vรคrde.

  • Detta innebรคr i princip att alla kontroller som anropas inom ramen fรถr ng-app-direktivet kan nรฅs globalt. Det finns ingen grรคns som skiljer flera kontroller frรฅn varandra.
  • Nu i modern programmering รคr det en dรฅlig praxis att ha kontroller som inte รคr kopplade till nรฅgra moduler och gรถra dem globalt tillgรคngliga. Det mรฅste finnas nรฅgon logisk grรคns definierad fรถr styrenheter.

Och det รคr hรคr moduler kommer in. Moduler anvรคnds fรถr att skapa den dรคr separationen av grรคnser och hjรคlpa till att separera styrenheter baserat pรฅ funktionalitet.

Lรฅt oss รคndra koden ovan fรถr att implementera moduler och koppla vรฅr styrenhet till denna modul

var sampleApp = angular.module('sampleApp',[]);
sampleApp.controller('DemoController', function($scope) {
                                    $scope.a=1;
                                    $scope.b=2;
                                    $scope.c=$scope.b + $scope.a;
                         });

Lรฅt oss notera de viktigaste skillnaderna i koden som skrivits ovan

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

    Vi skapar specifikt en AngularJS-modul som heter 'sampleApp'. Detta kommer att utgรถra en logisk grรคns fรถr den funktionalitet som denna modul kommer att innehรฅlla. Sรฅ i vรฅrt exempel ovan har vi en modul som innehรฅller en kontroller som utfรถr rollen som tillรคgg av 2 scope-objekt. Dรคrfรถr kan vi ha en modul med en logisk grรคns som sรคger att denna modul endast kommer att utfรถra funktionaliteten fรถr matematiska berรคkningar fรถr applikationen.

  2. sampleApp.controller('DemoController', function($scope)

    Vi kopplar nu styrenheten till vรฅr AngularJS-modul "SampleApp". Det betyder att om vi inte hรคnvisar till modulen 'sampleApp' i vรฅr huvudsakliga HTML-kod, kommer vi inte att kunna referera till funktionaliteten hos vรฅr kontroller.

Vรฅr huvudsakliga HTML-kod kommer inte att se ut som visas nedan

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

Lรฅt oss notera de viktigaste skillnaderna i koden skriven ovan och vรฅr tidigare kod

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

I vรฅr kroppsetikett,

  • Istรคllet fรถr att ha ett tomt ng-app-direktiv kallar vi nu modulen sampleApp.
  • Genom att anropa den hรคr applikationsmodulen kan vi nu komma รฅt styrenheten 'DemoController' och funktionaliteten som finns i demokontrollern.

Moduler och styrenheter i AngularJS

In Angular.JS, mรถnstret som anvรคnds fรถr utvecklingping Moderna webbapplikationer gรฅr ut pรฅ att skapa flera moduler och kontroller fรถr att logiskt separera flera funktionalitetsnivรฅer.

Normalt lagras moduler separat Javascript filer, som skulle skilja sig frรฅn huvudprogramfilen.

Lรฅt oss titta pรฅ ett exempel pรฅ hur detta kan uppnรฅs.

I exemplet nedan

  • Vi kommer att skapa en fil som heter Utilities.js som kommer att innehรฅlla tvรฅ moduler, en fรถr att utfรถra additionsfunktionen och den andra fรถr att utfรถra subfunktionaliteten.traction.
  • Vi kommer sedan att skapa 2 separata applikationsfiler och komma รฅt Utility-filen frรฅn varje applikationsfil.
  • I en applikationsfil kommer vi รฅt modulen fรถr addition och i den andra kommer vi รฅt modulen fรถr subtraction.

Steg 1) Definiera koden fรถr de flera modulerna och styrenheterna.

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;
});

Lรฅt oss notera nyckelpunkterna i koden som skrivits ovan

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

    Det finns tvรฅ separata Angular-moduler skapade, en som har fรฅtt namnet 'AdditionApp' och den andra har fรฅtt namnet 'Sub'.tractionApp'.

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

    Det finns tvรฅ separata styrenheter definierade fรถr varje modul, en kallas DemoAddController och den andra รคr DemoSub.tract-regulator. Varje regulator har separat logik fรถr addition och subtraction av siffror.

Steg 2) Skapa dina huvudsakliga programfiler. Lรฅt oss skapa en fil som heter ApplicationAddition.html och lรคgga till koden nedan

<!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>

Lรฅt oss notera nyckelpunkterna i koden som skrivits ovan

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

    Vi hรคnvisar till vรฅr Utilities.js-fil i vรฅr huvudprogramfil. Detta tillรฅter oss att referera till alla AngularJS-moduler som definieras i den hรคr filen.

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

    Vi kommer รฅt modulen 'AdditionApp' och DemoAddController genom att anvรคnda ng-app-direktivet och ng-kontroller respektive.

  3. {{c}}

    Eftersom vi refererar till den ovan nรคmnda modulen och styrenheten kan vi referera till variabeln $scope.c via ett uttryck. Uttrycket kommer att vara resultatet av tillรคgget av de tvรฅ omfรฅngsvariablerna a och b som utfรถrdes i 'DemoAddController'-kontrollern

    Pรฅ samma sรคtt kommer vi att gรถra fรถr subtractionsfunktion.

Steg 3) Skapa dina huvudsakliga programfiler. Nu skapar vi en fil som heter "ApplicationSubtraction.htmlโ€ och lรคgg till koden nedan

<!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>

Lรฅt oss notera nyckelpunkterna i koden som skrivits ovan

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

    Vi hรคnvisar till vรฅr Utilities.js-fil i vรฅr huvudprogramfil. Detta gรถr att vi kan referera till alla moduler som definieras i den hรคr filen.

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

    Vi anvรคnder 'Sub'tractionApp-modul och DemoSubtractController med hjรคlp av ng-app-direktivet respektive ng-controller.

  3. {{d}}

    Eftersom vi refererar till ovan nรคmnda modul och kontrollenhet kan vi referera variabeln $scope.d via ett uttryck. Uttrycket kommer att vara resultatet av sub-variabelntraction av de tvรฅ omfattningsvariablerna a och b som utfรถrdes i DemoSubtractKontrollรถr Regulator

Sammanfattning

  • Utan anvรคndning av AngularJS-moduler bรถrjar styrenheter ha ett globalt omfรฅng vilket leder till dรฅlig programmeringspraxis.
  • Moduler anvรคnds fรถr att separera affรคrslogik. Flera moduler kan skapas fรถr att logiskt separeras inom dessa olika moduler.
  • Varje AngularJS-modul kan ha sin egen uppsรคttning styrenheter definierade och tilldelade.
  • Vid definition av moduler och regulatorer definieras de normalt separat JavaScript filer. Dessa JavaSkriptfiler refereras sedan till i huvudprogramfilen.

Sammanfatta detta inlรคgg med: