Vue項(xiàng)目PWA化

此文主要針對(duì)是由vue構(gòu)建的項(xiàng)目基礎(chǔ)上進(jìn)行PWA化。

PWA化主要解決了兩大問(wèn)題: 1)使web app有沉浸式體驗(yàn)嘱巾,也就是更靠近原生體驗(yàn)授嘀。如:去掉瀏覽器的地址欄和底部工具欄物咳;在桌面上生成圖標(biāo),方便再次進(jìn)入蹄皱。 2)提供獨(dú)立于瀏覽器的緩存览闰,并且可以接收服務(wù)器的推送芯肤。如:在沒有網(wǎng)絡(luò),或者網(wǎng)絡(luò)狀態(tài)較差的時(shí)候压鉴,仍可訪問(wèn)緩存在本地的數(shù)據(jù).


步驟:

1. 通過(guò)vue-cli腳手架進(jìn)行安裝pwa插件

vue add pwa 

此時(shí)會(huì)生成manifest.json和registerServiceWorker.js兩個(gè)文件崖咨。
2. 配置manifest.json文件.(manifest.json文件主要是配置圖標(biāo),app名稱油吭,顯示方式等)參考MDN手冊(cè)

{ 
    "name": "wc--movies",// 導(dǎo)航顯示的名字 
    "short_name": "wc", // app的名字 
    "start_url": ".", 
    "icon": [
      {
        // app圖標(biāo)击蹲,會(huì)根據(jù)不一樣的系統(tǒng)進(jìn)行適配 
        "src": "/public/img/icons/android-chrome-128x128.png", 
        "sizes": "128x128", 
        "type": "image/png" 
    }, 
    { 
        "src": "/public/img/icons/android-chrome-192x192.png", 
        // 大小
        "sizes": "192x192",
        // 格式  
        "type": "image/png"
    }], 
    //導(dǎo)航界面的背景顏色 
    "background_color": "white",
    //手機(jī)最上方顯示運(yùn)營(yíng)商及電量、時(shí)間等這一欄的顏色 
    "theme_color": "white",
    //頁(yè)面顯示效果為沒有地址欄和底部狀態(tài)欄 
    "display": "standalone" 
} 

3. 在index.html中引入manifest.json

<link rel="manifest" href="/manifest.json">

4. registerServiceWorker.js文件(registerServiceWorker.js主要是注冊(cè)Service Worker婉宰。SW可以用于消息推送歌豺,緩存管理、后臺(tái)同步心包、攔截和處理網(wǎng)絡(luò)請(qǐng)求等类咧。注意:使用SW需要https及瀏覽器兼容)

import { register } from 'register-service-worker'

if (process.env.NODE_ENV === 'production') {
 register(`${process.env.BASE_URL}service-worker.js`, {
   ready () {
     console.log(
       'App is being served from cache by a service worker.\n' +
       'For more details, visit https://goo.gl/AFskqB'
     )
   },
   registered () {
     console.log('Service worker has been registered.')
   },
   cached () {
     console.log('Content has been cached for offline use.')
   },
   updatefound () {
     console.log('New content is downloading.')
   },
   updated () {
     console.log('New content is available; please refresh.')
   },
   offline () {
     console.log('No internet connection found. App is running in offline mode.')
   },
   error (error) {
     console.error('Error during service worker registration:', error)
   }
 })
}

5)配置vue.config.js文件,控制Service Worker行為。設(shè)置緩存邏輯谴咸、文件名字等轮听。參考@vue/cli-plugin-pwaworkbox參考

pwa: {
    workboxPluginMode: 'GenerateSW', // 也可以定義為‘InjectManifest’模式。但是需自己寫SW.js文件進(jìn)行配置
    workboxOptions: {
        importWorkboxFrom: 'cdn', //從''cdn"導(dǎo)入workbox,也可以‘local’
        skipWaiting: true, // 安裝完SW不等待直接接管網(wǎng)站
        clientsClaim: true,
        navigateFallback: '/index.html', 
        exclude: [/\.(?:png|jpg|jpeg|svg)$/], //在預(yù)緩存中排除圖片
        // 定義運(yùn)行時(shí)緩存
        runtimeCaching: [
            {
                urlPattern: new RegExp('^https://cdn'),
                handler: 'NetworkFirst',
                options: {
                    networkTimeoutSeconds: 20,
                    cacheName: 'cdn-cache',
                    cacheableResponse: {
                        statuses: [200]
                    }
                }
            }
        ]
    }
}

注意:蘋果的safari,如果僅是上邊那樣設(shè)置可能還并不能兼容岭佳,但其支持通過(guò)meta/link進(jìn)行設(shè)置血巍。可設(shè)置如下:
// app名稱
<meta name="apple-mobile-web-app-title" content="WCmovies">
// 是否隱藏地址欄等
<meta name="apple-mobile-web-app-capable" content="yes">
// 修改狀態(tài)欄顏色
<meta name="apple-mobile-web-app-status-bar-style" content="black">
// 指定桌面icon
<link rel="apple-touch-icon" href="./favicon.ico">

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末珊随,一起剝皮案震驚了整個(gè)濱河市述寡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叶洞,老刑警劉巖鲫凶,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衩辟,居然都是意外死亡螟炫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門艺晴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)昼钻,“玉大人,你說(shuō)我怎么就攤上這事封寞∪黄溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵狈究,是天一觀的道長(zhǎng)碗淌。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么亿眠? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任碎罚,我火速辦了婚禮,結(jié)果婚禮上缕探,老公的妹妹穿的比我還像新娘魂莫。我一直安慰自己,他們只是感情好爹耗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谜喊,像睡著了一般潭兽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斗遏,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天山卦,我揣著相機(jī)與錄音,去河邊找鬼诵次。 笑死账蓉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逾一。 我是一名探鬼主播铸本,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼遵堵!你這毒婦竟也來(lái)了箱玷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陌宿,失蹤者是張志新(化名)和其女友劉穎锡足,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壳坪,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舶得,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爽蝴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沐批。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霜瘪,靈堂內(nèi)的尸體忽然破棺而出珠插,到底是詐尸還是另有隱情,我是刑警寧澤颖对,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布捻撑,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏顾患。R本人自食惡果不足惜番捂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望江解。 院中可真熱鬧设预,春花似錦、人聲如沸犁河。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桨螺。三九已至宾符,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灭翔,已是汗流浹背魏烫。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肝箱,地道東北人哄褒。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像煌张,于是被迫代替她去往敵國(guó)和親呐赡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • pwa Progressive Web App, 簡(jiǎn)稱 PWA唱矛,是提升 Web App 的體驗(yàn)的一種新方法罚舱,能給用...
    AAA前端閱讀 777評(píng)論 0 1
  • PWA初次體驗(yàn) ? 前言:本示例不用安裝任何東西 部分資源來(lái)自網(wǎng)絡(luò)資源及PWA官網(wǎng),不要把PWA想象的太復(fù)雜绎谦,跟著...
    張小米i閱讀 895評(píng)論 0 3
  • 關(guān)于PWA PWA(Progressive Web App), 即漸進(jìn)式web應(yīng)用管闷。PWA本質(zhì)上是web應(yīng)用,目的...
    GavinHsueh閱讀 736評(píng)論 0 1
  • 最近有很多關(guān)于 Progressive Web Apps(PWAs)的消息,很多人都在問(wèn)這是不是(移動(dòng))web 的...
    MrDream閱讀 20,247評(píng)論 3 29
  • 天邊 那里一定有前世的夢(mèng) 攫取倔強(qiáng)的一生 不要害怕黑暗就要來(lái)臨 那升起的第一粒星 會(huì)照亮卑微的前程 溢滿船艙的星輝...
    平眉閱讀 241評(píng)論 2 2