国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

service-worker用法詳解

104828720 / 872人閱讀

摘要:二簡要介紹是一段腳本,在后臺運行。作為一個獨立的線程,不會對頁面造成阻塞。本質(zhì)上充當(dāng)應(yīng)用程序與瀏覽器之間的代理服務(wù)器。可以做到離線使用消息推送后臺自動更新,的出現(xiàn)是正是為了使得也可以具有類似的能力。在我們的例子例,是在,的根目錄是。

一、背景

taro框架轉(zhuǎn)的h5,想在無網(wǎng)絡(luò)狀態(tài)下可以控制展示給用戶的界面,使用客戶端離線緩存可以達到目的,并且可以將靜態(tài)資源進行緩存,從而減少白屏?xí)r間,加快頁面相應(yīng)速度。

二、service worker簡要介紹:

service worker是一段腳本,在后臺運行。作為一個獨立的線程,不會對頁面造成阻塞。本質(zhì)上充當(dāng)Web應(yīng)用程序與瀏覽器之間的代理服務(wù)器。native app可以做到離線使用、消息推送、后臺自動更新,service worker的出現(xiàn)是正是為了使得web app也可以具有類似的能力。在線上必須在 HTTPS 環(huán)境下才能工作,或者本地localhost域名也是可以的。

三、使用方法

第一步選擇npm包,我用的是sw-precache-webpack-plugin這個包,基于webpack的插件,操作簡單使用方便,詳情請看文檔
然后進行基于webpack的配置,下面例子是taro框架h5部分的配置內(nèi)容

h5: {
    publicPath: "/",
    staticDirectory: "static",
    webpackChain(chain, webpack) {
        chain.plugin("sw")
            .use(require("sw-precache-webpack-plugin"), [{
                cacheId: "name",
                filename: "service-worker.js",
                filepath: path.resolve(__dirname, "../src/service-worker.js"),
                // importScripts: [],
                // 需緩存的文件配置, 需動態(tài)緩存的放到runtimeCaching中處理
                staticFileGlobs: [],
                mergeStaticsConfig: true,
                minify: true,
                verbose: true,
                runTimeCaching: [
                    // 頁面動態(tài)文件
                    {
                        urlPattern: /pages/.*/,
                        handler: "networkFirst"
                    },
                    {
                        urlPattern: /api/.*/,
                        handler: "networkFirst"
                    }
                ]
            }]
        );
    },
    module: {
        postcss: {
            autoprefixer: {
                enable: true
            }
        }
    }
}

ok,現(xiàn)在已經(jīng)配置完了,下一步只要在入口文件里注冊service-worker就行啦,我是在HTML里加的,代碼如下:

大功告成,現(xiàn)在可以在本地調(diào)試了,本地如果啟動了webpack-dev-server,則需要:webpack添加配置:

module.exports = {
devServer: {
    setup: function (app) {
        app.get("/service-worker.js", function (req, res) {
            res.set({ "Content-Type": "application/javascript; charset=utf-8" });
            res.send(fs.readFileSync("build/service-worker.js"));
        });
    }
}
}

此時訪問localhost就可以啟用service-worker啦,如果配置了這些內(nèi)容service-worker還沒有注冊成功的話,可能的原因如下:

你沒有在 HTTPS 或localhost下運行你的項目。

service worker文件的地址沒有寫對— 需要相對于 origin , 而不是 app 的根目錄。在我們的例子例, service worker 是在 https://mdn.github.io/sw-test...,app的根目錄是 https://mdn.github.io/sw-test/。應(yīng)該寫成 /sw-test/sw.js 而非 /sw.js.

service worker 在不同的 origin 而不是你的app的,這是不被允許的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/106004.html

相關(guān)文章

  • PWA之 workbox 學(xué)習(xí)

    摘要:另一部分屬于進程,它重新在后臺起了一個進程,它和應(yīng)用的主進程互不影響,可以同時執(zhí)行。其中一般作為應(yīng)用程序瀏覽器和網(wǎng)絡(luò)如果可用之間的代理服務(wù)。他們還將允許訪問推送通知和后臺同步。然后開始在進程中通過事件,來監(jiān)聽請求,并對請求和響應(yīng)進行緩存。 前言:我們的應(yīng)用可以分為兩部分,一部分是屬于主進程的(包括js(同步,異步),以及dom渲染等等),在一個時刻點,只能執(zhí)行一個,要么先去渲染dom,...

    zhangyucha0 評論0 收藏0
  • service worker在移動端H5項目的應(yīng)用

    摘要:和的關(guān)系不是一項技術(shù),也不是一個框架,我們可以把她理解為一種模式,一種通過應(yīng)用一些技術(shù)將在安全性能和體驗等方面帶來漸進式的提升的一種的模式。這里需要注意的是,首次注冊線程的頁面需要再次加載才會受其控制。 1. PWA和Service Worker的關(guān)系 PWA (Progressive Web Apps) 不是一項技術(shù),也不是一個框架,我們可以把她理解為一種模式,一種通過應(yīng)用一些技...

    cucumber 評論0 收藏0
  • service worker在移動端H5項目的應(yīng)用

    摘要:和的關(guān)系不是一項技術(shù),也不是一個框架,我們可以把她理解為一種模式,一種通過應(yīng)用一些技術(shù)將在安全性能和體驗等方面帶來漸進式的提升的一種的模式。這里需要注意的是,首次注冊線程的頁面需要再次加載才會受其控制。 1. PWA和Service Worker的關(guān)系 PWA (Progressive Web Apps) 不是一項技術(shù),也不是一個框架,我們可以把她理解為一種模式,一種通過應(yīng)用一些技...

    Tonny 評論0 收藏0
  • 使用offline-plugin搭配webpack輕松實現(xiàn)PWA

    摘要:配合的項,能夠?qū)崿F(xiàn)緩存外部資源的功能。允許接受來自的消息,默認值為。檢查新版本的的更新信息。這也是我在研究階段直接使用時所發(fā)現(xiàn)的問題。建議僅在生產(chǎn)模式內(nèi)使用。 showImg(https://segmentfault.com/img/bVSVG1?w=1178&h=484); 談起PWA,許多人可能還只停留在了解的層面,比較少在實踐中真正地嘗試過,更多的僅僅是對著網(wǎng)上的教程和例子大概玩...

    shadajin 評論0 收藏0
  • 為 VUE 項目添加 PWA 解決發(fā)布后刷新報錯問題

    摘要:為了解決這個問題,我的解決方案是使用,這樣就可以將緩存到本地,再次發(fā)布后,會使舊的失效,重新請求并緩存。結(jié)語幾分鐘就搞定了,然后把之前的一個基于的后臺模板項目也升級了,如果有相同需求的可以參考下。 為什么要給 VUE 項目添加 PWA 為什么要添加?因為不管是部署在 IIS,還是 nginx,每次應(yīng)用部署后,再次訪問因為舊的 js 已經(jīng)不存在,所以頁面訪問的時候會整個報錯,報錯的結(jié)果就...

    lifefriend_007 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<