Mit Angular 6 können Sie in wenigen Befehlen buchstäblich die Basis für die Progressive Web Application (PWA) erstellen und ein Layout für Navigationsseiten, Tabellen und das Dashboard erstellen.

Wir benötigen eine Angular-Cli-Version, die nicht niedriger als 6.0.0 ist. Überprüfen Sie daher die Version des installierten Pakets:
ng --version 
Installieren Sie gegebenenfalls die neueste Version:
 npm i -g @angular/cli 
Wir tun dies alles, da es Unterschiede in der Struktur von Projekten gibt, die von Angular-CLI 6-Versionen erstellt wurden, und von Projekten, die von früheren Versionen erstellt wurden. Es gibt auch Unterschiede in der Funktionalität. Nur einige dieser Funktionen in diesem Artikel.
Daher werden wir sofort ein typisches Projekt mit Routing-Funktionen erstellen, da auch eine Demonstration der Funktionen von Modulen zum verzögerten Laden geplant ist:
 ng new angular-pwa-ci --routing 
Um das Verfolgen von Änderungen, die mit dem Projekt auftreten, bequemer zu gestalten, führen wir das erste Commit durch.
 git init git add . git commit -m "Initial commit" 
Das folgende Team wird unser Projekt in eine Progressive Web Application (PWA) verwandeln.
 ng add @angular/pwa --project "angular-pwa-ci" 
Die Ausgabe der Ergebnisse des Befehls enthält Folgendes:
Spoiler Überschrift Installed packages for tooling via yarn. CREATE ngsw-config.json (392 bytes) CREATE src/assets/icons/icon-128x128.png (1253 bytes) CREATE src/assets/icons/icon-144x144.png (1394 bytes) CREATE src/assets/icons/icon-152x152.png (1427 bytes) CREATE src/assets/icons/icon-192x192.png (1790 bytes) CREATE src/assets/icons/icon-384x384.png (3557 bytes) CREATE src/assets/icons/icon-512x512.png (5008 bytes) CREATE src/assets/icons/icon-72x72.png (792 bytes) CREATE src/assets/icons/icon-96x96.png (958 bytes) CREATE src/manifest.json (1085 bytes) UPDATE angular.json (3571 bytes) UPDATE package.json (1389 bytes) UPDATE src/app/app.module.ts (605 bytes) UPDATE src/index.html (390 bytes) 
 Lassen Sie uns ein weiteres Commit machen.
Und wir werden uns beeilen, um zu sehen, wie unsere Anwendung jetzt die Anforderungen für PWA erfüllt.
Zu diesem Zweck verwenden wir das lighthouse Dienstprogramm, das unsere Anwendung prüft und einen detaillierten Bericht über die Ergebnisse erstellt.
Wenn dieses Dienstprogramm noch nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:
 npm i -g lighthouse 
Dieses Dienstprogramm prüft auch, ob unsere Anwendung Inhalte anzeigt, wenn Javascript im Browser deaktiviert ist. Daher überprüfen wir das Vorhandensein in der Datei src/index.html der Zeile
  <noscript>Please enable JavaScript to continue using this application.</noscript> 
Jetzt werden wir unser Projekt im production erstellen, da die Standardeinstellungen dafür sind, dass Servicemitarbeiter nur im prodaction arbeiten.
 ng build --prod 
Später in diesem Artikel wird das vom Firebase-Dienst bereitgestellte Verfahren zur automatischen Bereitstellung für kostenloses Hosting beschrieben. Für die Entwicklung reicht jedoch ein lokaler Server aus, den wir jetzt schreiben werden. Erstellen Sie die Datei server.js im Projektstamm
Wenn Sie Visual Studio Code als Editor verwenden, empfehle ich die Installation der Angular Essential- Erweiterung, die die Angular v6 Snippets-Erweiterung enthält , mit der Sie Folgendes eingeben können:
 ex-node- 

Stimmen Sie dem vorgeschlagenen Snippet zu und geben Sie den gewünschten Port und Ordner an, in dem sich die anzuzeigenden Dateien befinden. Und alle. Sie können ausführen:
 node server.js 
Unsere Anwendung ist verfügbar unter: http://localhost:8080 und wir können das Audit starten
 lighthouse http://localhost:8080 
Das Dienstprogramm erstellt eine Datei im Stammverzeichnis unseres Projekts in der Form localhost_2018-06-08_23-42-21.report.html . Öffnen Sie es in einem Browser und sehen Sie sich die Prüfergebnisse an. Wir haben nicht 100% erzielt, aber immer noch vorne.
Um den automatischen Speicherauszug unserer Anwendung auf Firebase zu organisieren, benötigen Sie ein Konto unter http://firebase.com .
Danach installieren Sie firebase-tools . Wir werden es lokal installieren, da dieses Paket in Zukunft für die automatische Verarmung verwendet wird.
 npm i -D firebase-tools 
Und um nicht jedes Mal einen langen Pfad zu schreiben node_models/firebase-tools/bin/firebase - wir installieren ihn auch global.
 npm i -g firebase-tools 
Melden Sie sich beim Firebase-Dienst an:
 firebase login 
Dieser Befehl bewirkt, dass der Standardbrowser auf der Seite geöffnet wird, auf der Sie aufgefordert werden, der Anwendung die Berechtigung zu erteilen. Wir sind uns einig. Sie können daran arbeiten.
Das Erstellen eines neuen Projekts ist nur in der Firebase-Konsole möglich. Gehen Sie also zu https://console.firebase.google.com und erstellen Sie ein neues Projekt, das wir angular-pwa-ci .
Der nächste Befehl erstellt die Konfigurationsdateien.
 ./node_modules/firebase-tools/bin/firebase init 
Dieser Befehl öffnet einen Dialog, in dem wir:
- Wählen Sie das angular-pwa-ciProjekt.
- von Diensten werden wir nur hosting;
- Wir werden dist/angular-pwa-ci/Ordner für die Synchronisation angeben.
- Konfigurieren Sie unsere Anwendung als SPA (leiten Sie alle Anforderungen an index.html um).
- lehne es ab, index.html neu zu schreiben.
Jetzt werden wir unsere Anwendung für das Hosting im manuellen Modus auslegen
 ./node_modules/firebase-tools/bin/firebase deploy --only hosting 
Bei der Ausgabe dieses Befehls wird die Adresse angegeben, an der unsere Anwendung verfügbar sein wird. Zum Beispiel https://angular-pwa-ci.firebaseapp.com .
Und jetzt werden wir unseren Antrag noch einmal prüfen.
 lighthouse https://angular-pwa-ci.firebaseapp.com 

Hier ist unsere Anwendung zu 100% PWA geworden.
Faule Lademodule
Lassen Sie uns unsere Anwendung ein wenig dekorieren. Gleichzeitig untersuchen wir ein weiteres Merkmal von Winkel 6.
Fügen Sie Winkel- / Materialunterstützung für unser Projekt hinzu.
 ng add @angular/material@6.2.1 @angular/cdk 
UPD: Wir geben die Version für Winkel / Material an, da die letzte Version 6.3 einen Fehler auslöst.
Erstellen Sie nun die Navigationsseite unserer Anwendung
 ng g @angular/material:material-nav --name=nav -m app 
Es ist Zeit, manuelle Änderungen an unserem Projektcode vorzunehmen.
 // src/app/app.component.html <app-nav></app-nav> 
  // src/app/nav/nav.component.ts @Component({ - selector: 'nav', + selector: 'app-nav', templateUrl: './nav.component.html', styleUrls: ['./nav.component.css'] }) 
Erstellen Sie ein Modul
 ng gm table --routing 
Erstellen Sie im Modul "Erstellte table eine Komponente mit vorgefertigten Markups und Stilen.
 ng g @angular/material:material-nav --name=table --flat=table -m table 
  // src/app/app-routing.module.ts -const routes: Routes = []; +const routes: Routes = [ + { + path: 'table', + loadChildren: './table/table.module#TableModule' + }, + { + path: '', + redirectTo: '', + pathMatch: 'full' + } +]; 
  // src/app/table/table-routing.module.ts -const routes: Routes = []; +const routes: Routes = [ + { + path: '', + component: TableComponent + } +]; 
routerLink Verbindung zu routerLink und fügen Sie router-outlet
  // src/app/app.component.html <mat-toolbar color="primary">Menu</mat-toolbar> <mat-nav-list> - <a mat-list-item href="#">Link 1</a> + <a mat-list-item routerLink="/table">Table</a> <a mat-list-item href="#">Link 2</a> <a mat-list-item href="#">Link 3</a> </mat-nav-list> @@ -25,5 +25,6 @@ </button> <span>Application Title</span> </mat-toolbar> + <router-outlet></router-outlet> </mat-sidenav-content> </mat-sidenav-container> 
Führen Sie danach unsere Anwendung im ng serve Entwicklungsmodus aus. Beachten Sie. Wenn Sie zuvor in diesem Modus waren, müssen Sie ihn neu starten.
Wir können beobachten, dass ein zusätzlicher Block erstellt wurde.
Im Entwicklerfenster auf der Registerkarte "Netzwerk" sehen wir, dass unser Tabellenmodul beim Klicken auf den Link dynamisch geladen wird.

Lassen Sie uns ein weiteres Funktionsmodul und eine weitere Komponente mit Markup für das Dashboard erstellen
 ng gm dashboard --routing ng g @angular/material:material-dashboard --flat=dashboard --name=dashboard -m dashboard 
Aktionen zum Ändern des Codes ähneln dem Tabellenmodul.
Als Ergebnis erhalten wir eine PWA-Anwendung mit zwei dynamisch geladenen Funktionsmodulen.
Es ist Zeit, mit der Implementierung einer automatischen Bereitstellung unserer Anwendung auf Firebase fortzufahren.
CD für Firebase
Wir benötigen ein Konto unter https://travis-ci.org und ein Konto unter https://github.com .
Lassen Sie uns das angular-pwa-ci Repository in Github erstellen und den Code unserer Anwendung darin platzieren
 git remote add https://github.com/< >/angular-pwa-ci.git git push -u origin master 
Danach verbinden wir unser angular-pws-ci Repository angular-pws-ci Dienst. Klicken Sie dazu auf der Seite https://travis-ci.org/profile/ auf die Schaltfläche Synchronisieren, und in der Liste mit dem Repository verbinden wir angular-pwa-ci

Um unsere Anwendung bereitzustellen, benötigen wir einen Schlüssel, führen Sie den Befehl aus
 firebase login:ci 
Die Ausgabe dieses Befehls enthält den Schlüssel. Kopieren Sie den Wert und fügen Sie ihn unter dem Namen FIREBASE_TOKEN zu den Umgebungsvariablen travis-ci hinzu

Es bleibt noch die Datei .travis.yml zu unserem Projekt hinzuzufügen
 language: node_js node_js: - "node" before_script: - npm i -g firebase-tools script: - npm install - npm run build - firebase use --token $FIREBASE_TOKEN angular-pwa-ci - firebase deploy -m "build $TRAVIS_BUILD_ID" --non-interactive --token $FIREBASE_TOKEN cache: directories: - "node_modules" 
Lassen Sie uns eine Verpflichtung eingehen und unsere an Github senden. Infolgedessen wird der Auslöser ausgelöst, wodurch der Job auf Travis-CI gestartet wird. Am Ende wird unser Projekt zum Thema Firebase-Hosting aktualisiert.
Projektquellcode verfügbar
Projektdemo
Sie können mit dem Code spielen