Модулі AngularJS

Що таке модуль AngularJS?

Модуль визначає функціональність програми, яка застосовується до всієї HTML-сторінки за допомогою директиви ng-app. Він визначає функціональні можливості, такі як служби, директиви та фільтри, таким чином, що полегшує повторне використання в різних програмах.

У всіх наших попередніх уроках ви могли помітити директиву ng-app, яка використовується для визначення основної програми Angular. Це одна з ключових концепцій модулів в Angular.JS.

Як створити модуль в AngularJS

Перш ніж ми почнемо з того, що таке модуль, давайте подивимося на приклад програми AngularJS без модуля, а потім зрозуміємо необхідність мати модулі у вашій програмі.

Розглянемо створення файлу під назвою «DemoController.js» і додавання наведеного нижче коду до файлу

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

У наведеному вище коді ми створили функцію під назвою «DemoController», яка буде діяти як контролер у нашій програмі.

У цьому контролері ми просто виконуємо додавання 2 змінних a і b і призначаємо додавання цих змінних новій змінній c і призначаємо її назад об’єкту області видимості.

Тепер давайте створимо наш основний Sample.html, який буде нашою основною програмою. Давайте вставимо наведений нижче фрагмент коду на нашу сторінку HTML.

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

У наведеному вище коді ми включаємо наш DemoController, а потім викликаємо значення змінної $scope.c за допомогою виразу.

Але зверніть увагу на нашу директиву ng-app, вона має порожнє значення.

  • Це фактично означає, що всі контролери, які викликаються в контексті директиви ng-app, можуть бути доступні глобально. Немає межі, яка б відокремлювала декілька контролерів один від одного.
  • Зараз у сучасному програмуванні це погана практика, коли контролери не приєднані до жодних модулів і роблять їх глобально доступними. Має бути певна логічна межа, визначена для контролерів.

І тут на допомогу приходять модулі. Модулі використовуються для створення цього поділу меж і допомагають у розділенні контролерів на основі функціональності.

Давайте змінимо код вище, щоб реалізувати модулі та прикріпити наш контролер до цього модуля

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

Давайте звернемо увагу на ключові відмінності в коді, написаному вище

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

    Ми спеціально створюємо модуль AngularJS під назвою «sampleApp». Це сформує логічну межу для функціональності, яку міститиме цей модуль. Отже, у нашому прикладі вище ми маємо модуль, який містить контролер, який виконує роль додавання 2 об’єктів області видимості. Отже, ми можемо мати один модуль із логічною межею, яка говорить, що цей модуль виконуватиме лише функції математичних обчислень для програми.

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

    Зараз ми приєднуємо контролер до нашого модуля AngularJS «SampleApp». Це означає, що якщо ми не посилаємось на модуль «sampleApp» у нашому основному HTML-коді, ми не зможемо посилатися на функціональність нашого контролера.

Наш основний HTML-код виглядатиме не так, як показано нижче

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

Давайте звернемо увагу на ключові відмінності між написаним вище кодом і нашим попереднім кодом

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

У нашому тезі body,

  • Замість того, щоб мати порожню директиву ng-app, ми тепер викликаємо модуль sampleApp.
  • Викликавши цей прикладний модуль, ми тепер можемо отримати доступ до контролера «DemoController» і функціональних можливостей демонстраційного контролера.

Модулі та контролери в AngularJS

In Angular.JS, шаблон, який використовується для розробки сучасних веб-додатків, полягає у створенні кількох модулів і контролерів для логічного розділення кількох рівнів функціональності.

Зазвичай модулі зберігаються окремо Javascript файли, які відрізнятимуться від основного файлу програми.

Давайте розглянемо приклад того, як цього можна досягти.

У наведеному нижче прикладі,

  • Ми створимо файл під назвою Utilities.js, який буде містити 2 модулі, один для виконання функцій додавання, а інший для виконання функцій віднімання.
  • Потім ми збираємося створити 2 окремі файли програми та отримати доступ до файлу Utility з кожного файлу програми.
  • В одному файлі програми ми матимемо доступ до модуля для додавання, а в іншому – до модуля для віднімання.

Крок 1) Визначте код для кількох модулів і контролерів.

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

Давайте звернемо увагу на ключові моменти коду, написаного вище

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

    Створено 2 окремі модулі Angular, одному з яких дано назву AdditionApp, а другому — SubtractionApp.

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

    Для кожного модуля визначено 2 окремі контролери, один називається DemoAddController, а інший – DemoSubtractController. Кожен контролер має окрему логіку додавання та віднімання чисел.

Крок 2) Створіть основні файли програми. Давайте створимо файл під назвою ApplicationAddition.html і додамо наведений нижче код

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

Давайте звернемо увагу на ключові моменти коду, написаного вище

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

    Ми посилаємося на файл Utilities.js у головному файлі програми. Це дозволяє нам посилатися на будь-які модулі AngularJS, визначені в цьому файлі.

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

    Ми отримуємо доступ до модуля AdditionApp і DemoAddController за допомогою директиви ng-app і ng-контролер відповідно.

  3. {{c}}

    Оскільки ми посилаємося на вищезгаданий модуль і контролер, ми можемо посилатися на змінну $scope.c через вираз. Вираз буде результатом додавання 2 змінних області видимості a і b, яке було виконано в контролері «DemoAddController».

    Так само ми зробимо для функції віднімання.

Крок 3) Створіть основні файли програми. Давайте створимо файл під назвою “ApplicationSubtraction.html” і додамо наведений нижче код

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

Давайте звернемо увагу на ключові моменти коду, написаного вище

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

    Ми посилаємося на файл Utilities.js у головному файлі програми. Це дозволяє посилатися на будь-які модулі, визначені в цьому файлі.

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

    Ми отримуємо доступ до модуля SubtractionApp і DemoSubtractController за допомогою директиви ng-app і ng-controller відповідно.

  3. {{d}}

    Оскільки ми посилаємося на вищезгаданий модуль і контролер, ми можемо посилатися на змінну $scope.d через вираз. Вираз буде результатом віднімання 2 змінних області видимості a і b, яке було виконано в 'DemoSubtractController' контролер

Підсумки

  • Без використання модулів AngularJS контролери починають мати глобальну область видимості, що призводить до неправильної практики програмування.
  • Модулі використовуються для розділення бізнес-логіки. Можна створити кілька модулів, які логічно розділяються в цих різних модулях.
  • Для кожного модуля AngularJS може бути визначений і призначений власний набір контролерів.
  • Під час визначення модулів і контролерів вони зазвичай визначаються окремо JavaScript файли. Ці JavaФайли сценаріїв потім посилаються в основному файлі програми.

Підсумуйте цей пост за допомогою: