亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Angular PWA使用的Demo示例

2019-11-19 12:11:19
字體:
來源:轉載
供稿:網友

什么是PWA

PWA(Progressive Web App)利用TLS,webapp manifests和service workers使應用程序能夠安裝并離線使用。 換句話說,PWA就像手機上的原生應用程序,但它是使用諸如HTML5,JavaScript和CSS3之類的網絡技術構建的。 如果構建正確,PWA與原生應用程序無法區分。

PWA 的主要特點包括下面三點:

  • 可靠 - 即使在不穩定的網絡環境下,也能瞬間加載并展現
  • 體驗 - 快速響應,并且有平滑的動畫響應用戶的操作
  • 粘性 - 像設備上的原生應用,具有沉浸式的用戶體驗,用戶可以添加到桌面

PWA 本身強調漸進式,并不要求一次性達到安全、性能和體驗上的所有要求,開發者可以通過 PWA Checklist 查看現有的特征。

創建項目

Step 1.創建項目

我們使用Angular CLI來創建PWA程序,首先我們安裝。

npm install -g @angular/clinpm install -g @angular/service-worker

首先我們需要確定angular/cli版本在1.6.0或以上。

最新版本6.0.0將無效,應該后續會修復。

.angular-cli.json文件被更名為angular.json

如果是全新項目

可以使用angular/cli幫你創建一個Angular Service Worker項目:

ng new PWCat --service-worker

就這樣,cli會幫你安裝@angular/service-worker,在.angular-cli.json中啟用serviceWorker,為app注冊serviceWorker和生成默認配置的ngsw-config.json。

生成的文件中,注意檢查一下app.module,ts,其中serviceWorkerModule注冊的時候應該是這樣:

imports: [  // other modules...  ServiceWorkerModule.register('/ngsw-worker.js', {enabled: environment.production}) ],

在Angular 6.0.0中ng new PWCat --service-worker已經被廢棄,使用下面的命令為項目添加pwa

ng add @angular/pwa

執行后的結果

CREATE ngsw-config.json (392 bytes)
UPDATE angular.json (3464 bytes)
UPDATE package.json (1446 bytes)
UPDATE src/app/app.module.ts (851 bytes)

如果是已有項目

對于老版本,也就是Angular 6.0.0以前:

安裝@angular/service-worker:

npm install @angular/service-worker --save

在項目目錄下面新增ngsw-config.json文件:

// src/ngsw-config.json{ "index": "/index.html", "assetGroups": [{  "name": "app",  "installMode": "prefetch",  "resources": {   "files": [    "/favicon.ico",    "/index.html"   ],   "versionedFiles": [    "/*.bundle.css",    "/*.bundle.js",    "/*.chunk.js"   ]  } }, {  "name": "assets",  "installMode": "lazy",  "updateMode": "prefetch",  "resources": {   "files": [    "/assets/**"   ]  } }]}

在.angular-cli.json中啟用service worker:

// .angular-cli.json...{  "apps": [{   ...,   "serviceWorker": true }]}

然后在app.module.ts中注冊Service Worker :

// src/app.module.ts...import { ServiceWorkerModule } from '@angular/service-worker';import { environment } from '../environments/environment';@NgModule({ ... imports: [  ... ,  ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production }) ],})...

這樣項目中就引入Service Worker。

對于新版本6.0.0

使用下面命令創建。

ng add @angular/pwa

將會創建:
- manifest
- service worker

Step 2. 添加Angular Material模塊

安裝material和cdk

npm install --save @angular/material @angular/cdk

安裝主題

/* src/styles.css */@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

安裝normalize.css,作用是優化html樣式

npm install --save normalize.css

然后在 styles.css中添加:

/* src/styles.css */@import '~normalize.css/normalize.css';@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

添加Material Module

// src/app/app.module.tsimport { BrowserModule } from '@angular/platform-browser';import { NgModule } from '@angular/core';import { MatToolbarModule } from '@angular/material';import { AppComponent } from './app.component';@NgModule({ declarations: [ AppComponent ], imports: [  BrowserModule,  MatToolbarModule ], providers: [], bootstrap: [ AppComponent ]})export class AppModule { }

修改app.component.ts和app.component.html

// src/app/app.component.ts...export class AppComponent { title = 'Progressive Web Cat';}
<!-- src/app/app.component.html --><mat-toolbar color="primary"> {{ title }}</mat-toolbar>

Step 3.創建一個圖片模塊

生成模塊

ng generate component img-card

將其添加到app.module.ts

// src/app/app.module.ts...import { AppComponent } from './app.component';import { ImgCardComponent } from './img-card/img-card.component';@NgModule({ declarations: [  AppComponent,  ImgCardComponent ], ...

將img-card模塊添加到app.component.html中:

<!-- src/app/app.component.html --><mat-toolbar color="primary"> {{title}}</mat-toolbar><app-img-card></app-img-card>

修改app.module.ts

...@NgModule({... imports: [  BrowserModule,  MatToolbarModule,  MatCardModule,  MatButtonModule ],...})

修改img-card.component.ts

添加一個全局的CatImage類

// src/app/img-card/img-card.component.ts...class CatImage { message: string; api: string; fontsize: number;}...

修改ImgCardComponent

// src/app/img-card/img-card.component.ts...export class ImgCardComponent implements OnInit { private image: CatImage = {  message: 'Progressive Web Cat',  api: 'https://cataas.com/cat/says/',  fontsize: 40 }; public src: string; ngOnInit() {  this.generateSrc(); } generateSrc(): void {  this.src = this.image.api + this.image.message +     '?size=' + this.image.fontsize +    '&ts=' + Date.now(); }...

修改img-card.component.html

// src/app/img-card/img-card.component.html<mat-card> <mat-card-actions>  <button    color="primary"    (click)="generateSrc()"   mat-button    mat-raised-button>   Give me another cat  </button> </mat-card-actions> <img   src="{{ src }}"   alt="Cute cat"  mat-card-image></mat-card>

修改img-card.component.css

// src/app/img-card/img-card.component.css.mat-card { width: 400px; margin: 2rem auto;}.mat-card .mat-card-actions { padding-top: 0;}.mat-card .mat-button { margin: 0 auto; display: block;}

Step 4.離線狀態

修改ImgCardComponent

...disabled = false;ngOnInit() {  if (navigator.onLine) {   this.generateSrc();  } else {   this.disabled = true;   this.src = 'assets/offline.jepg';  }}...

修改`img-card.component.html

<mat-card> <mat-card-actions>  <button    color="primary"    (click)="generateSrc()"   mat-button   disabled="disabled"   mat-raised-button>   Give me another cat  </button> </mat-card-actions> <img   src="{{ src }}"   alt="Cute cat"  mat-card-image></mat-card>

然后構建部署:

ng build --prod

部署

由于https的限制,我們暫時部署到github上。

創建Github倉庫

上傳項目

git add .git commit -m "Upload project to github"git remote add origin git@github.com:{username}/{repo name}.gitgit push --set-upstream origin master

編譯

PWCat是倉庫名稱

ng build --prod --base-href "/PWCat/"

新建github pages分支

git checkout -b "gh-pages"git push --set-upstream origin gh-pagesgit checkout master

部署到github

npm i -g angular-cli-ghpagesngh "編譯的文件夾"

然后在github項目的settings里面GitHub Pages選項里設置GitHub Pages 分支為gh-pages

此時就可以使用網址https://93alliance.github.io/PWCat/訪問了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂av电影| 在线播放日韩精品| 久久久久久噜噜噜久久久精品| 欧美黑人巨大精品一区二区| 亚洲欧美一区二区三区四区| 最好看的2019年中文视频| 久久久久久久久久久免费精品| 亚洲男人天堂网| 精品久久久久久久久国产字幕| 国产精品视频精品视频| 欧美激情精品久久久久| 亚洲在线观看视频网站| 成人午夜一级二级三级| 成人有码在线视频| 欧美日韩在线观看视频小说| 久久久久久尹人网香蕉| 欧美精品www在线观看| 欧美综合在线第二页| 91干在线观看| 国产美女被下药99| 久久久久久久成人| 欧美成人一二三| 久热精品在线视频| 韩国三级日本三级少妇99| 欧美日本高清一区| 日韩午夜在线视频| 亚洲自拍偷拍在线| 亚洲国产91精品在线观看| 久久精品亚洲一区| 日本久久亚洲电影| 国模精品系列视频| 992tv成人免费影院| 亚洲国产精品中文| 欧美视频13p| 在线丨暗呦小u女国产精品| 日韩中文第一页| 中文字幕欧美日韩在线| 97精品国产97久久久久久| 亚洲精品一区中文| 亚洲变态欧美另类捆绑| 亚洲精品v欧美精品v日韩精品| 亚洲小视频在线观看| 久久精品视频网站| 欧美日韩国产中字| 在线成人免费网站| 日韩欧美在线播放| 亚洲综合色激情五月| 国产欧美在线观看| 午夜免费在线观看精品视频| 日韩激情在线视频| www日韩中文字幕在线看| 91色视频在线导航| 中文国产亚洲喷潮| 国产亚洲免费的视频看| 在线电影av不卡网址| 午夜精品三级视频福利| 亚洲一区二区三区在线免费观看| 精品国产精品三级精品av网址| 日韩hd视频在线观看| 亚洲人成77777在线观看网| 国产精品欧美一区二区三区奶水| 不卡在线观看电视剧完整版| 亚洲精品720p| 亚洲欧美激情在线视频| 黑人与娇小精品av专区| 欧美成人中文字幕| 亚洲精品v欧美精品v日韩精品| 成人在线精品视频| 91国产高清在线| 国产精品自产拍在线观| 日韩成人小视频| 国产精品色视频| 成人做爰www免费看视频网站| 亚洲一级片在线看| 黑人与娇小精品av专区| 日韩中文字幕不卡视频| 欧美日韩另类字幕中文| 国产精品女人久久久久久| 91在线无精精品一区二区| 欧美激情啊啊啊| 欧美电影院免费观看| 欧美激情综合色| 亚洲欧美日韩中文视频| 日韩一区二区福利| 精品国产精品自拍| 97精品欧美一区二区三区| 中文字幕亚洲一区二区三区五十路| 日韩av在线网址| 成人在线视频网站| 久久久久久亚洲| 国产精品激情自拍| 亚洲性线免费观看视频成熟| 日本最新高清不卡中文字幕| 欧美精品第一页在线播放| 国产一区二区三区毛片| 国产中文欧美精品| 亚洲精品乱码久久久久久按摩观| 国内精品一区二区三区四区| 色多多国产成人永久免费网站| 亚洲精品一区二区三区不| 亚洲精品福利在线观看| 黄色一区二区在线| 国产精品视频一区二区高潮| 国产精品偷伦视频免费观看国产| 亚洲免费高清视频| 久久精品视频播放| 亚洲人成在线观看网站高清| 91麻豆国产语对白在线观看| 国产女人精品视频| 日韩在线观看你懂的| 国产日韩在线亚洲字幕中文| 夜夜嗨av色一区二区不卡| 国产精品入口免费视| 亚洲аv电影天堂网| 在线精品国产成人综合| 国产精品极品美女粉嫩高清在线| 日韩av电影院| 午夜精品久久久久久久久久久久久| 亚洲欧美成人在线| 久久激情视频免费观看| 亚洲天堂成人在线| 日韩在线视频二区| 欧美亚洲激情视频| 欧美大片在线看免费观看| 国产视频自拍一区| 欧美成人免费播放| 日韩在线免费视频观看| 亚洲精品一区二区三区婷婷月| 亚洲视频999| 国产精品成熟老女人| 成人免费高清完整版在线观看| 成人免费大片黄在线播放| 国产精品久久久久久久久借妻| 国产精品日韩在线播放| 欧美精品亚州精品| 国产剧情日韩欧美| 日韩最新中文字幕电影免费看| 日韩中文字幕免费看| 中文字幕免费精品一区高清| 成人免费网站在线看| 国产精品久久久久高潮| 亚洲国产日韩欧美在线图片| 久久免费少妇高潮久久精品99| 欧美在线视频播放| 国产区亚洲区欧美区| 少妇激情综合网| 成人黄色网免费| 精品久久久久久国产91| 精品久久久国产精品999| 亚洲aⅴ日韩av电影在线观看| 成人av在线天堂| 欧美理论在线观看| 欧美又大粗又爽又黄大片视频| 国产精品国语对白| 久久人人爽人人爽人人片av高清| 国产精品永久在线| 国产精品久久久久久久av电影| 69视频在线免费观看| 91精品视频专区| 最新69国产成人精品视频免费| 国产成人精品在线视频| 亚洲精品在线观看www| 在线成人一区二区| 日韩小视频网址|