lõi-box-core

Workbox được xây dựng theo mô-đun, cho phép nhà phát triển chọn các phần họ muốn sử dụng mà không buộc họ phải tải mọi nội dung xuống trong một tệp duy nhất.

Tuy nhiên, có sự chồng chéo giữa các mô-đun, ví dụ: mỗi mô-đun sẽ cần tương tác với bảng điều khiển, gửi các lỗi có ý nghĩa và tận dụng mạng hoặc bộ nhớ đệm. Để tránh việc mỗi mô-đun triển khai cùng một logic, workbox-core chứa mã chung này mà mỗi mô-đun sẽ dựa vào.

Mô-đun này cung cấp một số chức năng cho nhà phát triển, nhưng ngoài cấp độ nhật ký và lưu vào bộ nhớ đệm, workbox-core cung cấp logic nội bộ cho từng mô-đun, thay vì cho nhà phát triển cuối.

Xem và thay đổi tên bộ nhớ đệm mặc định

Workbox xác định bộ nhớ đệm thông qua cacheNames:

import {cacheNames} from 'workbox-core';

console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);

Các tên bộ nhớ đệm này được tạo ở định dạng tiền tố, tên và hậu tố, trong đó tên sẽ thay đổi dựa trên việc sử dụng bộ nhớ đệm.

<prefix>-<cache-id>-<suffix>

Bạn có thể thay đổi các tên mặc định này bằng cách thay đổi tất cả hoặc một số giá trị đã truyền đến setCacheNameDetails().

import {cacheNames, setCacheNameDetails} from 'workbox-core';

setCacheNameDetails({
  prefix: 'my-app',
  suffix: 'v1',
  precache: 'install-time',
  runtime: 'run-time',
  googleAnalytics: 'ga',
});

// Will print 'my-app-install-time-v1'
console.log(cacheNames.precache);

// Will print 'my-app-run-time-v1'
console.log(cacheNames.runtime);

// Will print 'my-app-ga-v1'
console.log(cacheNames.googleAnalytics);

Trường hợp sử dụng chính cho tiền tố và hậu tố là nếu bạn sử dụng Workbox cho nhiều dự án và sử dụng cùng một cổng máy chủ cục bộ cho từng dự án, việc đặt tiền tố tuỳ chỉnh cho từng mô-đun sẽ ngăn các bộ nhớ đệm xung đột với nhau.

Khiếu nại của khách hàng

Một số nhà phát triển muốn có khả năng phát hành một trình chạy dịch vụ mới và yêu cầu trình chạy đó kiểm soát các trang web đã mở ngay khi trình chạy này kích hoạt. Việc này không xảy ra theo mặc định.

Nếu bạn thấy mình muốn hành vi này, workbox-core sẽ cung cấp một phương thức trợ giúp:

import {clientsClaim} from 'workbox-core';

// This clientsClaim() should be at the top level
// of your service worker, not inside of, e.g.,
// an event handler.
clientsClaim();

Phương thức clientsClaim() trong workbox-core sẽ tự động thêm một trình nghe sự kiện activate vào trình chạy dịch vụ và trong trình nghe này, sẽ gọi self.clients.claim(). Việc gọi self.clients.claim() trước khi trình chạy dịch vụ hiện tại kích hoạt sẽ dẫn đến một ngoại lệ về thời gian chạy và trình bao bọc của workbox-core giúp đảm bảo rằng bạn gọi trình thực thi đó đúng lúc.

Ngừng sử dụng trình bao bọc ignoreWait

Trước Workbox phiên bản 6, các nhà phát triển cũng nên sử dụng phương thức skipWaiting() của workbox-core. Tuy nhiên, phương thức này cung cấp ít giá trị ngoài những gì nhà phát triển sẽ nhận được nếu họ gọi self.skipWaiting() một cách rõ ràng.

Vì trình bao bọc workbox-core cũ cũng đã đăng ký một trình xử lý sự kiện installself.skipWaiting() được gọi, nên trình bao bọc này sẽ không hoạt động như mong đợi nếu được gọi bên trong một trình xử lý sự kiện khác (chẳng hạn như message) sau khi quá trình cài đặt đã hoàn tất.

Vì những lý do này, skipWaiting() của workbox-core sẽ không được dùng nữa và nhà phát triển nên chuyển sang gọi trực tiếp self.skipWaiting(). Không giống như self.clients.claim(), self.skipWaiting() sẽ không gửi một ngoại lệ nếu được gọi vào thời điểm "sai", do đó, bạn không cần phải gói ngoại lệ này trong trình xử lý sự kiện.

Loại

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void>

CacheDidUpdateCallbackParam

Thuộc tính

  • cacheName

    string

  • event

    ExtendableEvent

  • newResponse

    Phản hồi

  • oldResponse

    Câu trả lời không bắt buộc

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

Giá trị trả về

  • Promise<void|Response>

CachedResponseWillBeUsedCallbackParam

Thuộc tính

  • cacheName

    string

  • cachedResponse

    Câu trả lời không bắt buộc

  • event

    ExtendableEvent

  • matchOptions

    CacheQueryOptions không bắt buộc

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

Tham số

Giá trị trả về

  • Hứa hẹn<string|Yêu cầu>

CacheKeyWillBeUsedCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • chế độ

    string

  • params

    không bắt buộc bất kỳ

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void|Response>

CacheWillUpdateCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi

  • state

    MapLikeObject không bắt buộc

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void>

FetchDidFailCallbackParam

Thuộc tính

  • error

    Lỗi

  • event

    ExtendableEvent

  • originalRequest

    Yêu cầu

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

Tham số

Giá trị trả về

  • Hứa hẹn<Phản hồi>

FetchDidSucceedCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi

  • state

    MapLikeObject không bắt buộc

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void>

HandlerDidCompleteCallbackParam

Thuộc tính

  • error

    Lỗi không bắt buộc

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Câu trả lời không bắt buộc

  • state

    MapLikeObject không bắt buộc

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

Tham số

Giá trị trả về

  • Hứa hẹn<Phản hồi>

HandlerDidErrorCallbackParam

Thuộc tính

  • error

    Lỗi

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void>

HandlerDidRespondCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Câu trả lời không bắt buộc

  • state

    MapLikeObject không bắt buộc

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Tham số

Giá trị trả về

  • Hứa hẹn<Phản hồi>

HandlerWillRespondCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi

  • state

    MapLikeObject không bắt buộc

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

Tham số

Giá trị trả về

  • Promise<void>

HandlerWillStartCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

Lệnh gọi lại "handler" được gọi bất cứ khi nào Router khớp một URL/Yêu cầu với Route thông qua RouteMatchCallback. Lệnh gọi lại trình xử lý này sẽ trả về Promise phân giải bằng Response.

Nếu RouteMatchCallback trả về một mảng hoặc đối tượng không trống, nó sẽ được truyền vào dưới dạng đối số options.params của trình xử lý này.

Tham số

Giá trị trả về

  • Hứa hẹn<Phản hồi>

ManualHandlerCallbackOptions

Các tuỳ chọn được truyền vào hàm ManualHandlerCallback.

Thuộc tính

  • event

    ExtendableEvent

  • request

    chuỗi|Yêu cầu

MapLikeObject

PluginState

Hiện tại, việc sử dụng MapLikeObject thuần tuý nhưng có thể mở rộng/hạn chế việc này trong tương lai.

Loại

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

Tham số

Giá trị trả về

  • Hứa hẹn<Yêu cầu>

RequestWillFetchCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • state

    MapLikeObject không bắt buộc

RouteHandler

RouteHandlerCallback hoặc RouteHandlerObject. Hầu hết các API trong workbox-routing chấp nhận trình xử lý tuyến đều chấp nhận một trong hai cách trên.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

Lệnh gọi lại "handler" được gọi bất cứ khi nào Router khớp một URL/Yêu cầu với Route thông qua RouteMatchCallback. Lệnh gọi lại trình xử lý này sẽ trả về Promise phân giải bằng Response.

Nếu RouteMatchCallback trả về một mảng hoặc đối tượng không trống, nó sẽ được truyền vào dưới dạng đối số options.params của trình xử lý này.

Tham số

Giá trị trả về

  • Hứa hẹn<Phản hồi>

RouteHandlerCallbackOptions

Các tuỳ chọn được truyền vào hàm RouteHandlerCallback.

Thuộc tính

  • event

    ExtendableEvent

  • params

    string[]|MapLikeObject không bắt buộc

  • request

    Yêu cầu

  • url

    URL

RouteHandlerObject

Đối tượng có phương thức handle thuộc loại RouteHandlerCallback.

Bạn có thể tạo đối tượng Route bằng hàm RouteHandlerCallback hoặc đối tượng RouteHandler này. Lợi ích của RouteHandler là có thể mở rộng (như gói workbox-strategies thực hiện).

Thuộc tính

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

Lệnh gọi lại "match" (so khớp) dùng để xác định xem Route có nên áp dụng cho một URL và yêu cầu cụ thể hay không. Khi quá trình khớp diễn ra để phản hồi một sự kiện tìm nạp của ứng dụng, đối tượng event cũng được cung cấp. Tuy nhiên, vì lệnh gọi lại so khớp có thể được gọi bên ngoài một sự kiện tìm nạp, nên logic so khớp sẽ không giả định rằng đối tượng event sẽ luôn có sẵn. Nếu lệnh gọi lại so khớp trả về một giá trị trung thực, RouteHandlerCallback của tuyến trùng khớp sẽ được gọi ngay lập tức. Nếu giá trị được trả về là một mảng hoặc đối tượng không trống, thì giá trị đó sẽ được đặt trên đối số options.params của trình xử lý.

Tham số

Giá trị trả về

  • Bất kỳ

RouteMatchCallbackOptions

Các tuỳ chọn được truyền vào hàm RouteMatchCallback.

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • sameOrigin

    boolean

  • url

    URL

WorkboxPlugin

Một đối tượng có các thuộc tính gọi lại trong vòng đời không bắt buộc cho các thao tác tìm nạp và bộ nhớ đệm.

Thuộc tính

WorkboxPluginCallbackParam

Thuộc tính

Thuộc tính

cacheNames

Lấy tên bộ nhớ đệm và tiền tố/hậu tố hiện tại mà Workbox sử dụng.

cacheNames.precache được dùng cho các tài sản được lưu trước vào bộ nhớ đệm, cacheNames.googleAnalytics được workbox-google-analytics dùng để lưu trữ analytics.jscacheNames.runtime dùng cho mọi nội dung khác.

Bạn có thể sử dụng cacheNames.prefix để chỉ truy xuất giá trị tiền tố hiện tại. Bạn có thể dùng cacheNames.suffix để chỉ truy xuất giá trị hậu tố hiện tại.

Loại

đối tượng

Thuộc tính

  • googleAnalytics

    string

  • bộ nhớ đệm trước

    string

  • tiền tố

    string

  • thời gian chạy

    string

  • hậu tố

    string

Phương thức

clientsClaim()

workbox-core.clientsClaim()

Xác nhận quyền sở hữu mọi ứng dụng hiện có sẵn sau khi service worker hoạt động. Thuộc tính này thường được dùng kết hợp với skipWaiting().

copyResponse()

workbox-core.copyResponse(
  response: Response,
  modifier?: function,
)

Cho phép nhà phát triển sao chép phản hồi và sửa đổi các giá trị headers, status hoặc statusText của phản hồi đó (các giá trị có thể đặt qua đối tượng [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax trong hàm khởi tạo). Để sửa đổi các giá trị này, hãy truyền một hàm làm đối số thứ hai. Hàm đó sẽ được gọi bằng một đối tượng duy nhất có các thuộc tính phản hồi {headers, status, statusText}. Giá trị trả về của hàm này sẽ được dùng làm ResponseInit cho Response mới. Để thay đổi các giá trị, hãy sửa đổi(các) thông số đã chuyển và trả về thông số đó hoặc trả về một đối tượng hoàn toàn mới.

Phương thức này được chủ động giới hạn ở các phản hồi cùng nguồn gốc, bất kể có sử dụng CORS hay không.

Tham số

  • phản hồi

    Phản hồi

  • đối tượng sửa đổi

    hàm không bắt buộc

    Tham số modifier sẽ có dạng như sau:

    (responseInit: ResponseInit)=>ResponseInit

    • responseInit

      ResponseInit

    • giá trị trả về

      ResponseInit

Giá trị trả về

  • Hứa hẹn<Phản hồi>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

Thêm một hàm vào tập hợp cancelErrorCallbacks sẽ được thực thi nếu có lỗi hạn mức.

Tham số

  • số gọi lại

    Chức năng

setCacheNameDetails()

workbox-core.setCacheNameDetails(
  details: PartialCacheNameDetails,
)

Sửa đổi tên bộ nhớ đệm mặc định mà các gói Workbox sử dụng. Tên bộ nhớ đệm được tạo dưới dạng <prefix>-<Cache Name>-<suffix>.

Tham số

  • chi tiết

    PartialCacheNameDetails

skipWaiting()

workbox-core.skipWaiting()

Phương thức này không được dùng nữa và sẽ bị loại bỏ trong Workbox phiên bản 7.

Việc gọi Self.skipWait() tương đương và nên được sử dụng thay thế.