Ondrej Chrastina
Вы когда-нибудь задавались вопросом, как система управления контентом без головы вписывается в прогрессивные веб-приложения?
Я недавно читал мой коллега Брайн ‘s история о прогрессивных веб-приложениях. В статье говорится о реализации A Прогрессивное веб-приложение (PWA), в котором перечислены интересные места, хранящиеся в безголовом CMS.
Вы можете установить это приложение на вашем устройстве. Он использует сервисный работник для кэширования приложения и данные о процентах интереса. Приложение было написано на простом JavaScript.
Приписав хорошую долю кода JavaScript, я хотел расширить концепцию, используя более сложные рамки.
Я сузил свой выбор до трех больших игроков – реагировать, Vue и угловой. Я решил использовать угловой, потому что он уже поддерживает работников обслуживания, и я хотел использовать TeampScript Отказ
Каждый этап этого урока будет сопровождаться ссылкой на фиксацию GitHub. Таким образом, вы всегда сможете увидеть, как выглядит код.
Чтобы запустить приложение, просто скачайте или клонируйте Commit и запустите Установка NPM и NG служат -O Отказ Весь код хранится в Одна из ветвей Отказ
Давайте доберемся до этого!
Предварительные условия
- node.js V8 +.
- Угловые CLI v.1.7.4 Установлено как глобальная зависимость через управляющий пакет NPM:
NPM установить -G @ angular/cli
Начиная
Прежде всего, генерируют новый проект. Вы можете легко генерировать весь код котельной, используя удивительные угловые инструменты CLI. Просто перейдите к папке и генерируйте готовый к запуску кода:
ng new cloud-sample-angular-pwa-aps
Конфигурация котельной настройки
Есть несколько шагов, чтобы настроить бойную табличку.
Сгенерированный код использует обычные CSS по умолчанию. Но, вы можете легче сделать вашу жизнь с SCSS. Для достижения этого выполните следующие действия:
- Установить
Defaults.stylextЗначение отCSSкSCSSв/.angular-cli.jsonконфигурационный файл - Переименовать
styles.cssкstyles.cscss. - Переименовать
/src/app.component.css.к/src/app.component.csssи отражать это переименование вapp.component.ts.В документе компонента Atribute’sСтилерлсстоимость имущества.
Создайте некоторое начальное контент для приложения
- Глобальные стили: /src/styles.scss.
- Компонент: /src/app/app.component.html и /src/app/app.component.scss.
Давайте посмотрим!
Просто запустите эту команду:
ng serve -o
Загрузить данные
Давайте наконец будем использовать силу угловой. В этом разделе мы определим Инъекция клиент, который позволяет приложению получить Кентако облако данные. Я буду использовать тот же источник данных, что и Брайан, используемый в своей статье.
Прежде всего, установите Kentico Cloud Доставка SDK через следующую команду:
npm install -P kentico-cloud-delivery-typescript-sdk
Затем создайте поставщик клиента, который будет использоваться в инъекции зависимости.
Создайте новый файл в /src/app папка и назвать ее Доставка-клиент. Проводите .ts Отказ Это провайдер Модуль должен экспортировать объект, определяющий завод, используемый для создания нашего клиента. В приведенном ниже коде вы можете увидеть идентификатор проекта в облаке Kentico, где хранятся данные.
import { DeliveryClient, DeliveryClientConfig } from 'kentico-cloud-delivery-typescript-sdk';
export const DeliveryClientFactory = (): DeliveryClient => {
const projectId = '975bf280-fd91-488c-994c-2f04416e5ee3';
return new DeliveryClient(
new DeliveryClientConfig(projectId, [])
);
};
export const DeliveryClientProvider = {
provide: DeliveryClient,
useFactory: DeliveryClientFactory,
deps: []
};Далее редактируйте app.module.ts Отказ Это место, где вы утверждаете, какие модули загружены.
...
import { DeliveryClientProvider } from './delivery-client.provider';
...
@NgModule({
...
providers: [DeliveryClientProvider]
...
})Теперь мы готовы использовать клиент в компоненте приложения.
Мы настроим app.component.ts использовать Отзывчик Это автоматически впрыскивается как параметр к конструктору. Мы также подписываем компонент для наблюдаемого клиента И мы определим соответствующее действие наблюдателя.
import { Component, OnInit, OnDestroy } from '@angular/core';
import { DeliveryClient, ContentItem } from 'kentico-cloud-delivery-typescript-sdk';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit, OnDestroy {
dataSubscription: Subscription;
pointsOfInterest: ContentItem[];
constructor(private deliveryClient: DeliveryClient) { }
ngOnInit() {
this.dataSubscription = this.deliveryClient
.items()
.type('point_of_interest')
.get()
.subscribe(response => {
this.pointsOfInterest = response.items;
});
}
ngOnDestroy(): void {
this.dataSubscription.unsubscribe();
}
} Последний шаг – отображение данных из CMS, используя угловые NGFOR Директива по поводу итерации через предметы и оказывать их.
Pack and Go
{{poi.title.value}}
Open the map
Разрешить добавлять значок ярлыка
Теперь мы сделаем приложение, способное добавить его значок на рабочий стол или запуск экрана устройства.
Этот шаг довольно легкий. Это требует, чтобы мы создали файл JSON, содержащие метаданные о приложении и связывают его из голова ярлык. Файл манифеста должен указывать на несколько URL значков в различных размерах.
Мы также должны перечислить Mainesest.json Файл в объявлении активов в .angular-cli.json конфигурационный файл.
{
...
apps: {
assets : [
...,
"manifest.json"
],
...
},
...
}Но, что более важно, ссылка на Mainesest.json Файл из index.html Отказ
Наконец, мы создадим сам проявление вместе со всеми значками. Посмотрите на ссылку ниже, чтобы увидеть результат.
Настройте работника обслуживания
Концепция сервисного работника – это то, что делает PWA-приложения революционными.
Работники обслуживания работают как прокси между клиентом и Интернетом. В зависимости от фактической конфигурации сервисный работник может предварительно кэшировать скелет приложения (называемый «приложение Shell») во время первой нагрузки. Это означает, что последующие запросы быстро раскладывают. Сервисский работник также может молча кешировать все остальные данные приложения.
Прежде всего, требуется установить модуль сервисного работника в приложение.
npm install -P @angular/service-worker
Теперь включите обслуживающий рабочий в угловых в .angular-cli.json конфигурационный файл.
{
...
apps: {
"serviceWorker": true,
...
},
...
}Теперь давайте импортируем модуль сервисного работника в наше приложение, используя app.module.ts файл.
...
import { ServiceWorkerModule } from '@angular/service-worker';
...
@NgModule({
...
imports: [
...
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
],
...
})
˛...Последнее, что настроить стратегии кэширования для оболочки приложения и данные. Сначала нам нужно создать ngsw-config.json Файл конфигурации под /SRC папка.
Для оболочки приложения мы будем использовать настройку по умолчанию, описанный в Документация Отказ Эта конфигурация будет предчувствовать index.html. , favicon.ico , а приложение Shell, в том числе связанные CSS и JavaScript. Файлы в /ресурсы Папка лениво загружена.
Запросы на данные от Centico Cloud будут использовать другую стратегию кэширования. Мы определим конечную точку API как новый Группа данных и установите кэширование для использования свежесть Стратегия. В ссылке Commit ниже вы можете увидеть все содержимое файла конфигурации.
Теперь мы готовы установить приложение на устройстве. Например, в Chrome в Android вы можете сделать это, нажав эллипсовый глиф и выбирая «Добавить на главный экран».
Хорошо, мы закончили. Несмотря на быстрое и простую реализацию, приложение довольно мощное и быстрое. И мы свободны продлевать его различными способами, такие как импортирование дизайна материала или значки шрифта.
PWA API также позволят нам использовать классные собственные функции, такие как:
- Читать датчики устройства
- Дисплей Push-уведомления
- и используйте камеры устройства.
Наше приложение также может ощущать, когда устройство Переходы из онлайн в автономный и наоборот Отказ Мы могли бы также использовать Автоматически сгенерированные, сильно напечатанные модели элементов контента от CMS.
Как видите, создание PWA в угловом угловании легко, но позволяет нам увеличить приложение намного дальше.
Оригинал: “https://www.freecodecamp.org/news/how-to-create-a-progressive-web-app-featuring-angular-and-headless-cms-b8ee4f7a5ea3/”