В этой серии мы будем использовать AngularJS и Firebase для создания простого веб-приложения с нуля. Это будет простое приложение для ведения блогов, где пользователь может войти или зарегистрироваться и опубликовать запись в блоге.
В этом руководстве предполагается, что у вас есть базовые знания по AngularJS, но при этом не должно быть трудностей в выборе тем. Если вы боретесь с ошибками или ошибками, которые не можете исправить, попробуйте один из экспертных исправителей ошибок в Envato Studio.
Введение в AngularJS
AngularJS — одна из самых популярных платформ JavaScript MVC. Это структурная структура для создания динамических веб-приложений за счет расширения возможностей HTML. Такие функции, как привязка данных и внедрение зависимостей, облегчают разработку приложений с меньшим количеством кода.
HTML отлично подходит для объявления статических документов, но он прерывается, когда мы пытаемся использовать его для объявления динамических представлений в веб-приложениях. AngularJS позволяет расширить словарный запас HTML для вашего приложения. Получающаяся среда чрезвычайно выразительна, удобочитаема и быстро развивается.
Введение в Firebase
Представьте себе создание веб-приложения, не беспокоясь о серверной части. Firebase позволяет синхронизировать данные в реальном времени с нашим приложением, не заботясь о серверной части. Все, что нам нужно сделать, это сделать несколько вызовов API.
Firebase — это мощный API для хранения и синхронизации данных в режиме реального времени. Объединение возможностей двухсторонней привязки данных AngularJS с Firebase приводит к трехсторонней синхронизации, что довольно круто.
Начало работы с AngularJS
Проект angular-seed
— это образец для начала создания веб-приложений с использованием AngularJS. Загрузите или клонируйте проект angular-seed
из репозитория.
1
|
$ git clone https://github.com/angular/angular-seed.git
|
Перейдите в каталог проекта и установите необходимые зависимости.
1
2
|
$ cd angular-seed
$ npm install ## Install the dependencies
|
Запустите сервер узла:
1
|
$ npm start ## Start the server
|
Укажите в браузере http://localhost:8000/app/index.html
и вы увидите, что приложение по умолчанию работает.
Перейдите в каталог app
внутри angular-seed
. Здесь находится код приложения. Внутри папки app
вы найдете app.js
который является ядром приложения. Мы объявим все модули и маршруты уровня приложения внутри этого файла. По умолчанию у проекта angular-seed
есть два вида: view1
и view2
. Удалите папки view1
и view2
из папки приложения.
Давайте начнем с нуля. Откройте app.js
и удалите существующий код. В app.js
мы будем определять маршруты наших приложений, например, как обрабатывать запросы вроде /home
. Для определения маршрутов нам понадобится модуль AngularJS с именем ngRoute . Чтобы использовать ngRoute
нам сначала нужно добавить его или добавить в наше приложение. Мы будем использовать angular.module для добавления модуля ngRoute
в наше приложение, как показано ниже:
1
2
3
|
angular.module(‘myApp’, [
‘ngRoute’
])
|
Модуль ngRoute
имеет компонент с именем $ routeProvider, который полезен для настройки маршрутов. Мы $routeProvider
в метод config
angular.module
и определим наши маршруты в его функции обратного вызова, как показано ниже:
1
2
3
4
5
6
7
8
|
‘use strict’;
angular.module(‘myApp’, [
‘ngRoute’
]).
config([‘$routeProvider’, function($routeProvider) {
// Routes will be here
}]);
|
Затем откройте index.html
и удалите ссылки на сценарии для view1
и view2
. Удалите все из тела index.html
кроме ссылок на сценарии и div, показанного ниже с помощью директивы ngView .
1
|
<div ng-view></div>
|
ngView
— это директива, которая помогает визуализировать представление, прикрепленное определенным маршрутом, к основному макету index.html
. Таким образом, каждый раз, когда изменяется маршрут, содержание показанного выше div изменяется.
Теперь давайте создадим новое представление для входа пользователя. Внутри каталога app
создайте новую папку с именем home
. Внутри home
создайте два файла с home.html
и home.js
Откройте home.html
и home.html
следующий HTML-код:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<!DOCTYPE html>
<html lang=»en» ng-app=»myApp»>
<head>
<meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″>
<link rel=»icon» href=»http://getbootstrap.com/favicon.ico»>
<title>AngularJS & Firebase Web App</title>
<link href=»http://getbootstrap.com/dist/css/bootstrap.min.css» rel=»stylesheet»>
<link href=»http://getbootstrap.com/examples/signin/signin.css» rel=»stylesheet»>
<link href=»justified-nav.css» rel=»stylesheet»>
</head>
<body>
<div class=»container»>
<div class=»jumbotron» style=»padding-bottom:0px;»>
<h2>AngularJS & Firebase App!</h2>
</div>
<form class=»form-signin» role=»form»>
<input type=»email» class=»form-control» placeholder=»Email address» required=»» autofocus=»»>
<input type=»password» class=»form-control» placeholder=»Password» required=»»>
<label class=»checkbox»>
<a href=»#»> Sign Up</>
</label>
<button class=»btn btn-lg btn-primary btn-block» type=»submit»>Sign in</button>
</form>
</div>
</body></html>
|
Как видно из приведенного выше кода, мы будем использовать Bootstrap для создания представлений нашего приложения.
Внутри home.js
мы объявим маршруты доступа приложения к домашнему виду. $routeProvider
есть метод, который называется when
, который мы будем использовать для создания маршрута для нашего домашнего представления. При определении нового маршрута мы установим templateUrl
который будет отображаться в index.html
. Наряду с этим, мы также установим controller
для вновь созданного $scope
домашнего вида. Контроллер — это логика, которая контролирует конкретное представление. Вот как это должно выглядеть:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
‘use strict’;
angular.module(‘myApp.home’, [‘ngRoute’])
// Declared route
.config([‘$routeProvider’, function($routeProvider) {
$routeProvider.when(‘/home’, {
templateUrl: ‘home/home.html’,
controller: ‘HomeCtrl’
});
}])
// Home controller
.controller(‘HomeCtrl’, [function() {
}]);
|
Теперь откройте app.js
и app.js
домашний модуль myApp.home
в приложение. Также объявите маршрут по умолчанию нашего приложения, используя метод $routeProvider.otherwise
для домашнего просмотра.
01
02
03
04
05
06
07
08
09
10
11
12
13
|
‘use strict’;
angular.module(‘myApp’, [
‘ngRoute’,
‘myApp.home’ // Newly added home module
]).
config([‘$routeProvider’, function($routeProvider) {
// Set defualt view of our app to home
$routeProvider.otherwise({
redirectTo: ‘/home’
});
}]);
|
Далее, чтобы отобразить домашнюю страницу, нам нужно включить home.js
в основной файл шаблона HTML приложения. Откройте index.html
и index.html
следующее:
1
|
<script src=»home/home.js»></script>
|
Перезапустите сервер и укажите в браузере http: // localhost: 8000 / app / index.html, и вы должны увидеть экран входа в систему:
Начало работы с Firebase
Чтобы начать, нам нужно зарегистрировать бесплатный аккаунт на Firebase . При успешной регистрации мы получим такой экран:
Запишите URL созданного приложения и нажмите кнопку « Manage App
. Мы будем использовать этот URL-адрес Firebase для взаимодействия с базой данных Firebase.
Мы будем использовать Firebase для аутентификации нашего приложения по электронной почте и паролю. Чтобы заставить его работать, нам нужно включить его из Firebase. На панели инструментов щелкните вкладку « Вход и авторизация » в меню слева. На этом экране на вкладке « Электронная почта и пароль » установите флажок « Включить проверку подлинности электронной почты и пароля», как показано ниже:
Добавьте нового пользователя с адресом электронной почты и паролем, с которыми мы будем аутентифицироваться после реализации функции входа.
Реализация функциональности входа в систему
Чтобы начать использовать Firebase, включите следующие сценарии в app/index.html:
1
2
3
|
<script src=»https://cdn.firebase.com/js/client/1.0.18/firebase.js»></script>
<script src=»https://cdn.firebase.com/libs/angularfire/0.8.0/angularfire.min.js»></script>
<script src=»https://cdn.firebase.com/js/simple-login/1.6.2/firebase-simple-login.js»></script>
|
Далее нам нужно home.js
модуль home.js
в home.js
Добавьте модуль home.js
в home.js
как показано ниже:
1
|
angular.module(‘myApp.home’, [‘ngRoute’,’firebase’])
|
Теперь мы готовы взаимодействовать с Firebase. Откройте home.js
и внутри HomeCtrl
создайте новую функцию SignIn
для аутентификации пользователя. Мы будем использовать $scope
для создания новой функции. $scope
— это объект, который ссылается на модель приложения, а также действует как связующее звено между контроллером приложения и представлением. Следовательно, мы SignIn
объект $scope
в функцию SignIn
чтобы объектная модель из поля зрения была доступна внутри функции SignIn
.
1
2
3
4
5
6
|
$scope.SignIn = function($scope) {
var username = $scope.user.email;
var password = $scope.user.password;
// Auth Logic will be here
}
|
Затем внутри HomeCtrl
создайте экземпляр Firebase, используя URL-адрес Firebase, как показано ниже:
1
|
var firebaseObj = new Firebase(«https://blistering-heat-2473.firebaseio.com»);
|
Модуль $firebaseSimpleLogin
используется для аутентификации в Firebase с использованием идентификатора электронной почты и пароля. Чтобы использовать его, нам нужно HomeCtrl
модуль $firebaseSimpleLogin
HomeCtrl
в HomeCtrl
как показано ниже:
1
|
.controller(‘HomeCtrl’, [‘$scope’,’$firebaseSimpleLogin’,function($scope,$firebaseSimpleLogin) {
|
Используя firebaseObj
создайте экземпляр $firebaseSimpleLogin
как показано ниже:
1
|
var loginObj = $firebaseSimpleLogin(firebaseObj);
|
Теперь, используя $ login API, мы аутентифицируем идентификатор электронной почты и пароль для Firebase. loginObj.$login
принимает в качестве параметров адрес электронной почты и пароль. При успешной аутентификации мы получаем успешный обратный вызов, а при неудачной аутентификации мы получаем обратный вызов с ошибкой.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
$scope.SignIn = function(event) {
event.preventDefault();
var username = $scope.user.email;
var password = $scope.user.password;
loginObj.$login(‘password’, {
email: username,
password: password
})
.then(function(user) {
// Success callback
console.log(‘Authentication successful’);
}, function(error) {
// Failure callback
console.log(‘Authentication failure’);
});
}
|
Теперь, чтобы весь приведенный выше код контроллера работал, нам нужно прикрепить контроллер к представлению. AngularJS предоставляет директиву ngController для присоединения контроллера к представлению. Откройте home.html
и добавьте директиву ngController
к элементу body
чтобы присоединить его к HomeCtrl
.
Нам нужно, чтобы значения электронной почты и пароля были доступны внутри SignIn
контроллера SignIn
. AngularJS предоставляет директиву ngModel, чтобы связать ее значение с $scope
чтобы она была доступна внутри функции SignIn
. Включите директиву ngModel
к элементам input
электронной почты и пароля, как показано:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
<body ng-controller=»HomeCtrl»>
<div class=»container»>
<div class=»jumbotron» style=»padding-bottom:0px;»>
<h2>AngularJS & Firebase App!</h2>
</div>
<form class=»form-signin» role=»form»>
<input ng-model=»user.email» type=»email» class=»form-control» placeholder=»Email address» required=»» autofocus=»»>
<input ng-model=»user.password» type=»password» class=»form-control» placeholder=»Password» required=»»>
<label class=»checkbox»>
<a href=»#»> Sign Up</>
</label>
<button type=»button» class=»btn btn-lg btn-primary btn-block»>SignIn</button>
</form>
</div>
</body>
|
Наконец, добавьте директиву ngClick к кнопке входа, чтобы вызвать функцию SignIn
:
1
|
<button type=»button» ng-click=»SignIn($event)» class=»btn btn-lg btn-primary btn-block»>SignIn</button>
|
Сохраните все изменения и перезапустите сервер. Укажите в браузере адрес http: // localhost: 8000 / app / index.html # / home и попробуйте войти в систему, используя идентификатор электронной почты [email protected]
и пароль jay
. При успешной аутентификации пользователя вы должны увидеть сообщение Authentication successful
в консоли браузера.
Вывод
В этом руководстве мы рассмотрели, как приступить к созданию веб-приложения AngularJS. Мы реализовали функцию входа в систему и успешно аутентифицировали пользователя по базе данных Firebase.
Во второй части этого учебника мы перейдем на следующий уровень, реализовав проверки, функции регистрации и некоторые другие функции. Код из приведенного выше учебника доступен на GitHub .
Дайте нам знать ваши мысли в комментариях ниже.
Кроме того, обязательно ознакомьтесь с широким спектром ресурсов AngularJS на Envato Market. Здесь есть все — от директив таблиц CRUD до систем продажи билетов и многое другое.