AngularJS - Виды: Путеводитель для начинающих

Здравствуйте, будущие программисты! Сегодня мы окунемся в захватывающий мир видов AngularJS. Не волнуйтесь, если вы еще ни разу не писали строку кода - я буду вашим доброжелательным проводником в этом путешествии, как и для countless студентов за годы моей преподавательской деятельности. Так что возьмите чашку кофе (или чая, если это ваше дело), и давайте начнем!

AngularJS - Views

Что такое Вид в AngularJS?

Прежде чем мы углубимся в Details, давайте поймем, что такое Вид в AngularJS. Представьте Вид как "лицо" вашего приложения - это то, что видит и с чем взаимодействует пользователь. В AngularJS, Вид является по сути HTML шаблоном, который отображает данные и реагирует на действия пользователя.

Теперь давайте рассмотрим инструменты, которые AngularJS предоставляет нам для работы с Видами.

Директива ng-view: Ваше окно в динамическое содержимое

Что такое ng-view?

Директива ng-view resembles_specialное окно в вашем приложении AngularJS. Это место, где ваше приложение отображает различное содержимое в зависимости от текущего маршрута (или URL) без перезагрузки всей страницы. Круто, правда?

Как использовать ng-view

Использование ng-view просто, как добавление его к элементу в вашем HTML. Вот пример:

<div ng-view></div>

Вот и все! Этот div теперь будет действовать как контейнер, где AngularJS будет загружать различные виды в зависимости от текущего маршрута.

Реальный пример

Давайте представим, что мы создаем простой веб-сайт для книжного магазина. Мы можем иметь главную страницу, которая выглядит так:

<!DOCTYPE html>
<html ng-app="bookstoreApp">
<head>
<title>Мой классный книжный магазин</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular-route.js"></script>
</head>
<body>
<h1>Добро пожаловать в мой классный книжный магазин</h1>
<div ng-view></div>
<script src="app.js"></script>
</body>
</html>

В этом примере, <div ng-view></div> будет местом, где будут отображаться различные страницы нашего книжного магазина (например, список книг, индивидуальные данные книги и т.д.).

Директива ng-template: Ваш чертеж для Видов

Что такое ng-template?

Если ng-view - это окно, то ng-template - это как чертеж для того, что идет в это окно. Он позволяет вам определять повторно используемые шаблоны, которые AngularJS может использовать для заполнения ваших видов.

Как использовать ng-template

Вы используете ng-template, давая ему ID, который вы можете затем сослаться в вашей конфигурации маршрутов. Вот простой пример:

<script type="text/ng-template" id="book-list.html">
<h2>Наши книги</h2>
<ul>
<li ng-repeat="book in books">{{book.title}}</li>
</ul>
</script>

Этот шаблон определяет список книг, который мы можем отобразить в нашем виде.

Сервис $routeProvider: Ваш диспетчер трафика

Что такое $routeProvider?

Сервис $routeProvider resembles_диспетчер трафика для вашего приложения. Он решает, какой вид отображать в зависимости от текущего URL.

Как использовать $routeProvider

Вы обычно настраиваете $routeProvider на этапе конфигурации вашего приложения. Вот пример:

var app = angular.module('bookstoreApp', ['ngRoute']);

app.config(function($routeProvider) {
$routeProvider
.when('/', {
template: '<h2>Добро пожаловать в наш книжный магазин!</h2>'
})
.when('/books', {
templateUrl: 'book-list.html',
controller: 'BookListController'
})
.otherwise({
redirectTo: '/'
});
});

В этой конфигурации:

  • Когда URL просто '/', он отображает欢迎消息.
  • Когда URL '/books', он использует шаблон 'book-list.html' и контроллер 'BookListController'.
  • Для любого другого URL, он перенаправляет на '/'.

Полный пример

Давайте объединим все в более полный пример нашего книжного приложения:

<!DOCTYPE html>
<html ng-app="bookstoreApp">
<head>
<title>Мой классный книжный магазин</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular-route.js"></script>
</head>
<body>
<h1>Добро пожаловать в мой классный книжный магазин</h1>
<nav>
<a href="#!">Главная</a>
<a href="#!books">Книги</a>
</nav>
<div ng-view></div>

<script type="text/ng-template" id="book-list.html">
<h2>Наши книги</h2>
<ul>
<li ng-repeat="book in books">{{book.title}} by {{book.author}}</li>
</ul>
</script>

<script>
var app = angular.module('bookstoreApp', ['ngRoute']);

app.config(function($routeProvider) {
$routeProvider
.when('/', {
template: '<h2>Добро пожаловать в наш книжный магазин!</h2><p>Проверьте нашу потрясающую коллекцию книг.</p>'
})
.when('/books', {
templateUrl: 'book-list.html',
controller: 'BookListController'
})
.otherwise({
redirectTo: '/'
});
});

app.controller('BookListController', function($scope) {
$scope.books = [
{title: 'Убить пересмешника', author: 'Harper Lee'},
{title: '1984', author: 'George Orwell'},
{title: 'Великий Гэтсби', author: 'F. Scott Fitzgerald'}
];
});
</script>
</body>
</html>

Что здесь происходит?

  1. Мы создаем базовую HTML структуру с ссылками для навигации между видами.
  2. Мы определяем шаблон для нашего списка книг с помощью ng-template.
  3. Мы настраиваем наши маршруты с помощью $routeProvider.
  4. Мы создаем контроллер для предоставления данных для нашего списка книг.

Когда вы запустите это приложение и кликните на ссылку "Книги", вы увидите список книг в ng-view div. Магия, правда?

Заключение

И вот мы и добрались до этого,folks! Мы сделали первые шаги в мир видов AngularJS. Мы узнали о ng-view, ng-template, и $routeProvider, и как они работают вместе для создания динамических одностраничных приложений.

Помните, учиться программировать - это как учиться ездить на велосипеде - сначала это может казаться неуверенным, но с практикой вы быстро научитесь. Продолжайте экспериментировать, продолжайте учиться и, что самое главное, получайте удовольствие!

Директива/Сервис Назначение Пример использования
ng-view Определяет, где отображать текущий вид <div ng-view></div>
ng-template Определяет повторно используемые шаблоны <script type="text/ng-template" id="template-name.html">...</script>
$routeProvider Конфигурирует маршруты для приложения $routeProvider.when('/path', { templateUrl: 'template.html', controller: 'ControllerName' });

Счастливого кодирования, будущие мастера AngularJS!

Credits: Image by storyset