Angular6. PWA. Faule Lademodule. Automatische Bereitstellung in Firebase

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-ci Projekt.
  • 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

Source: https://habr.com/ru/post/de413679/


All Articles