Angular 2 + Firebase Введение

Это сообщение было впервые опубликовано на CodingTheSmartWay.com.

Онлайн-курс №1: Angular 2 с TypeScript для начинающих
Онлайн-курс №2: Angular 2 - Полное руководство
Онлайн-курс №3: Angular 2 - С нуля

Вступление

Firebase - это платформа для мобильных и веб-приложений, поддерживающая разработчиков с помощью различных инструментов и сервисов для создания высококачественных приложений. Центральной особенностью Firebase является база данных в реальном времени. Используя Firebase API, базу данных в реальном времени можно использовать для хранения и синхронизации данных между несколькими клиентами и платформами. Веб-сайт Firebase доступен по адресу: https://firebase.google.com/.

Firebase идеально подходит для приложения Angular 2. База данных в реальном времени может использоваться как серверная часть для вашего веб-приложения и мобильного приложения. Вместе со скоростью и производительностью, которые Angular 2 предоставляет для внешнего интерфейса, функция синхронизации данных в реальном времени может еще больше улучшить взаимодействие с пользователем.

Для интеграции сервисов Firebase с приложением Angular 2 можно использовать библиотеку AngularFire2. . Это официальная библиотека для Firebase и Angular 2. Далее вы узнаете, как настроить базу данных Firebase в реальном времени и выполнить привязку к данным в реальном времени в приложении Angular 2 с помощью библиотеки AngularFire2, шаг за шагом.

Настройка Firebase

Чтобы настроить Firebase, вам сначала нужно перейти на https://firebase.google.com/, создать учетную запись и войти в консоль Firebase. Консоль Firebase дает вам доступ ко всем службам Firebase и параметрам конфигурации. Во-первых, нам нужно создать новый проект Firebase:

После создания проекта вы можете нажать на плитку проекта, и вы будете перенаправлены в консоль проекта Firebase:

Консоль проекта - это центральное место для настроек конфигурации Firebase. В меню слева вы можете получить доступ к различным службам Firebase. Щелкните ссылку База данных, чтобы получить доступ к просмотру базы данных в реальном времени:

По умолчанию открыта вкладка Данные. Здесь вы можете увидеть URL-адрес данных и содержимого в реальном времени. Вы можете использовать онлайн-редактор для добавления контента в базу данных:

Как видите, данные в базе данных реального времени организованы в виде иерархического дерева, которое содержит узлы и пары ключ-значение. Это похоже на структуру данных JSON. Под корневым узлом добавьте подузел items. В разделе элементы создайте несколько пар "ключ-значение", как показано на снимке экрана. Позже мы будем использовать эти элементы данных в нашем примере приложения.

Наконец, нам нужно отредактировать правила безопасности базы данных, чтобы мы могли позже получить доступ к данным без аутентификации в нашем примере приложения Angular 2. Перейдите на вкладку Правила и отредактируйте данные правила безопасности, чтобы они соответствовали следующему:

{
"rules": {
".read": true,
".write": true
}
}

Теперь доступ для чтения и записи к базе данных возможен без аутентификации.

Настройка проекта с помощью Angular 2 CLI

Теперь, когда доступна база данных Firebase, следующим шагом будет запуск примера приложения Angular 2. Мы делаем это с помощью Angular 2 CLI. Если вы еще не установили интерфейс командной строки, вам сначала нужно выполнить следующую команду, чтобы команда ng стала доступной в вашей системе:

$ npm install -g angular-cli

После того, как Angular 2 доступен интерфейс командной строки, мы можем запустить новый проект Angular 2, выполнив следующую команду

$ ng new angular2fb

Это создает папку проекта angular2fb и внутри этой папки вы найдете следующую исходную структуру проекта:

.
├── README.md
├── angular-cli.json
├── e2e
├── karma.conf.js
├── node_modules
├── package.json
├── protractor.conf.js
├── src
└── tslint.json

Подпапка src содержит основные части реализации:

.
├── app
│ ├── app-routing.module.ts
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.spec.ts
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── index.ts
│ └── shared
│ └── index.ts
├── assets
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
├── tsconfig.json
└── typings.d.ts

Чтобы проверить, что проект был запущен правильно, теперь вы можете запустить веб-сервер с помощью команды ng следующим образом:

$ ng serve

После этого приложение должно быть доступно по адресу http: // localhost: 4200 в вашем браузере.

Установка Firebare и AngularFire 2

Теперь нам нужно добавить Firebase и библиотеку AngularFire 2 в качестве зависимостей в наш проект:

$ npm install angularfire2 firebase --save

При использовании флага --save обе зависимости автоматически добавляются в файл package.json.

Подготовка вашего приложения для Firebase

Конфигурация Firebase

Конфигурация Firebase состоит из четырех пар ключ-значение. Необходимо предоставить следующую информацию:

  • apiKey
  • authDomain
  • databaseURL
  • StorageBucket

Самый простой способ получить все четыре элемента информации о конфигурации - перейти в консоль Firebase, открыть представление проекта и использовать ссылку Добавить Firebase в свое веб-приложение. Из открывшегося всплывающего окна вы можете скопировать фрагмент кода, содержащий настройки конфигурации для вашего конкретного проекта Firebase.

Возьмите настройки и вставьте их в новый файл environment / firebase.config. ts в следующем виде:

export const firebaseConfig = {
  apiKey: '<your-key>',
  authDomain: '<your-project-authdomain>',
  databaseURL: '<your-database-URL>',
  storageBucket: '<your-storage-bucket>'
};

Также добавьте следующие две строки кода в конец файла typings.d.ts в корневой папке проекта Angular 2:

declare var require: any;
declare var module: any;

и добавьте свойство types в объект конфигурации compilerOptions в tsconfig.json.

 
 {
   "compilerOptions": {
    [...],
    "types": [
      "firebase"
    ]
  }
}

Импорт AngularFireModule

Чтобы использовать библиотеку Angular Fire 2, нам нужно сначала импортировать AngularFireModule. Добавьте следующий оператор импорта в свой app.module.ts:

import { AngularFireModule } from 'angularfire2';

Используйте метод фабрики модулей initializeApp из AngularFireModule, чтобы создать модуль Angular Fire 2, основанный на нашей конкретной конфигурации Firebase:

@NgModule({
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(firebaseConfig)
  ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})export class AppModule {}

Внедрить AngularFire в свой компонент

Служба AngularFire является частью AngularFireModule и теперь может быть внедрена в ваши компоненты. Переключитесь на app.component.ts и сначала добавьте следующий оператор импорта:

import { AngularFire, FirebaseListObservable } from 'angularfire2';

Во-вторых, добавьте в этот компонент AngularFire:

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})
export class AppComponent {
  constructor(af: AngularFire) {
  }
}

Используйте AngularFire для получения доступа к данным Firebase - привязка к списку Firebase

С помощью службы AngularFire, внедренной в наш компонент, мы теперь можем получить доступ к данным Firebase с помощью этой службы. Сначала нам нужно объявить объект типа FirebaseListObservable ‹any []›. С помощью этого наблюдаемого мы можем привязаться к списку Firebase и получить массив данных, как вы можете видеть в следующем примере:

import { Component } from '@angular/core';import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})export class AppComponent {
  items: FirebaseListObservable<any[]>;
  constructor(af: AngularFire) {
    this.items = af.database.list('/items');
  }
}

Для привязки к списку мы используем метод database.list () из службы AngularFire. Нам нужно передать имя конечной точки списка в виде строки для вызова метода. Используя строку ‘/ items’, мы привязываемся к списку элементов. Результирующий объект FirebaseListObservable ‹any []› сохраняется в переменной items того же типа.

Чтобы распечатать данные, полученные через наблюдаемое, мы можем использовать следующий код шаблона:

<ul>
  <li class="text" *ngFor="let item of items | async">
    {{item.$value}}
  </li>
</ul>

Здесь мы используем асинхронный канал для подписки на Observable, доступный в элементах. Использование этого канала гарантирует, что мы получим последнее значение, которое было отправлено. Результат можно увидеть в следующем:

Чтобы испытать поведение базы данных в реальном времени, теперь вы можете вернуться в консоль Firebase, открыть представление базы данных и добавить еще один элемент данных:

Выходные данные нашего примера приложения обновляются немедленно, без необходимости перезагружать страницу:

Видеоурок

Этот видеоурок содержит шаги, описанные в тексте выше:

Это сообщение было впервые опубликовано на CodingTheSmartWay.com.