我正在嘗試構建一個漸進式 Web 應用,并支持離線使用。
根據 MDN,使 PWA 脫機作業的方法是將所需資源添加到服務作業者的快取中。這需要服務作業者的代碼知道每個輸出檔案。理想情況下,這不應該被編碼,而應該由webpack生成,因為它知道自己生成了哪些檔案。
我正在為實際生成這個串列而苦惱。根據我的搜索,有兩個插件可以生成一個包含檔案串列的json檔案 - webpack-assets-manifest 和 webpack-manifest-plugin。我可以將這些檔案與單獨的目標結合起來,生成一個包含頁面檔案的清單。但我無法匯入清單,因為 webpack 在完成所有作業之前并沒有真正寫入清單。
我怎樣才能匯入一個入口點生成的檔案串列,并在另一個入口點/模塊中使用它們呢?
webpack.config.js:
const path = require('path')。
const WebpackAssetsManifest = require('webpack-assets-manifest')。
const frontend = {
mode: "development"。
entry: {
page:"./src/page/page.tsx"。
},
devtool: 'inline-source-map',
output: {
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /.html?$|.png$/,
type: "asset/resource"。
generator: {
filename: "[name][ext]"。
},
},
{
test: /.tsx?$/,
loader: "ts-loader",
exclude: /node_modules/,
},
{
test: /.json$/,
type: "asset/resource",
exclude: /node_modules/。
}
],
},
resolve: {
extensions: [".html", ".tsx", ".ts", ".js"] 。
},
plugins: [
new WebpackAssetsManifest( {
output: "page-files.json"。
writeToDisk: true,
}),
]
};
const serviceworker = {
mode: "開發"。
entry: {
服務員。"./src/serviceworker/serviceworker.ts"。
},
devtool: 'inline-source-map',
output: {
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /.html?$|.png$/,
type: "asset/resource"。
generator: {
filename: "[name][ext]"。
},
},
{
test: /.tsx?$/,
loader: "ts-loader",
exclude: /node_modules/,
},
{
test: /.json$/,
resourceQuery: /link/,
type: "asset/resource"。
exclude: /node_modules/。
},
{
test: /.json$/,
resourceQuery: /str/,
type: "asset/source"。
exclude: /node_modules/。
}
],
},
resolve: {
extensions: [".html", ".tsx", ".ts", ".js"] 。
},
};
module.exports = [frontend, serviceworker];
serviceworker.ts:
import files from "././dist/page-files.json?str" ;
console.log(files)。
錯誤是:
Module not found: Error。Can't resolve '././dist/page-files.json? str' in '<REDACTED>/src/serviceworker'
(當我再次構建它時,它將找到之前構建的檔案)
uj5u.com熱心網友回復:
與其依賴預先存在的webpack插件來生成資產,我認為你需要為這個用例撰寫自己的插件。如果您希望該插件將清單寫入本身需要捆綁/編譯的條目,那么在該插件中創建一個child compilation將是實作這一目的的方法。
不幸的是,這不是一個簡單的任務,但你可以參考workbox-webpack-plugin的源代碼,它或多或少地做了你描述的事情,作為啟發。
另外...你可以直接使用InjectManifest,如果這符合你的使用情況。雖然它是Workbox系列庫的一部分,但InjectManifest實際上只做兩件事:通過子編譯處理你作為swSrc傳入的入口檔案,并在該swSrc檔案的任何地方用一個{url: '...', revision: '...'}條目,這些條目是根據主配置中的資產生成的,并通過任何include/exclude引數進行過濾。
因此,如果你不打算使用Workbox,你可以從你自己的代碼中使用那個self.__WB_MANIFEST值。
// service-worker.ts
const manifest = self.__WB_MANIFEST || [];
self.addEventListener('install', (event) => /span> {
//你快取清單內容的代碼在這里。
});
//webpack.config.js
const {InjectManifest}= require('workbox-webpack-plugin') 。
module.exports = {
//...其他webpack配置...。
plugins: [
new InjectManifest( {
swSrc: 'src/service-worker.ts'。
swDest: 'service-worker.js',
// ... exclude/include config here...。
}),
],
};
uj5u.com熱心網友回復:
這種行為背后的原因是webpack并行地運行這2個配置。通過強迫webpack按順序運行,我們可以解決這個問題。
要進行串行處理,在你的webpack配置末尾添加 這里是webpack的檔案,https://webpack.js.org/configuration/configuration-types/#parallelism
標籤:module.exports.parallelism = 1;/code>。
module.exports=【frontend, serviceworker】。
module.exports.parallelism = 1;
本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......
uj5u.com 2020-09-09 22:07:49 more最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......
uj5u.com 2020-09-09 22:08:02 moreMagicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......
uj5u.com 2020-09-09 22:08:05 more如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......
uj5u.com 2020-09-09 22:08:50 more今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......
uj5u.com 2020-09-09 22:10:00 more帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......
uj5u.com 2020-09-09 22:11:13 more微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......
uj5u.com 2020-09-09 22:15:18 more帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......
uj5u.com 2020-09-09 22:15:23 more一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......
uj5u.com 2020-09-09 22:15:48 more<a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...
uj5u.com 2023-04-19 09:17:20 moreC#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......
uj5u.com 2023-04-19 09:16:49 more<a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...
uj5u.com 2023-04-18 08:39:04 more一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......
uj5u.com 2023-04-18 08:33:10 more<a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...
uj5u.com 2023-03-30 17:21:52 more<a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...
uj5u.com 2023-03-28 10:15:33 more<a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...
uj5u.com 2023-03-28 10:13:31 more<a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...
uj5u.com 2023-03-27 14:46:55 more<a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...
uj5u.com 2023-03-27 14:46:35 more<a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...
uj5u.com 2023-03-27 14:46:16 more