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 thứ xuống trong một tệp.

Tuy nhiên, có sự trùng lặp 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 lỗi có ý nghĩa và sử 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 mà mỗi mô-đun 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ác cấp độ ghi nhật ký và lưu vào bộ nhớ đệm, workbox-core còn cung cấp logic nội bộ cho từng mô-đun, thay vì nhà phát triển cuối cùng.

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 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ị được 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 của 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 mỗi dự án, thì việc đặt tiền tố tuỳ chỉnh cho mỗi mô-đun sẽ ngăn bộ nhớ đệm xung đột với nhau.

Xác nhận quyền sở hữu của khách hàng

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

Nếu bạn 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 trình nghe sự kiện activate vào worker dịch vụ và bên trong đó, gọi self.clients.claim(). Việc gọi self.clients.claim() trước khi worker dịch vụ hiện tại kích hoạt sẽ dẫn đến một ngoại lệ 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 worker đó vào đúng thời điểm.

Không dùng trình bao bọc skipWaiting nữa

Trước Workbox phiên bản 6, nhà phát triển cũng được khuyến khích sử dụng phương thức skipWaiting() từ workbox-core. Tuy nhiên, phương thức này không mang lại nhiều giá trị ngoài những gì nhà phát triển 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 install trong đó self.skipWaiting() được gọi, nên trình bao bọc 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 không còn đượ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 ngoại lệ nếu được gọi vào thời điểm "sai", vì vậy, bạn không cần phải gói phương thức này trong trình xử lý sự kiện.

Loại

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

Giá trị trả về

  • Promise<void>

CacheDidUpdateCallbackParam

Thuộc tính

  • cacheName

    chuỗi

  • event

    ExtendableEvent

  • newResponse

    Phản hồi

  • oldResponse

    Phản hồi không bắt buộc

  • request

    Yêu cầu

  • tiểu bang

    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

    chuỗi

  • cachedResponse

    Phản hồi không bắt buộc

  • event

    ExtendableEvent

  • matchOptions

    CacheQueryOptions không bắt buộc

  • request

    Yêu cầu

  • tiểu bang

    MapLikeObject không bắt buộc

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

Giá trị trả về

  • Promise<string | Request>

CacheKeyWillBeUsedCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • chế độ

    chuỗi

  • tham số

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

  • request

    Yêu cầu

  • tiểu bang

    MapLikeObject không bắt buộc

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

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

  • tiểu bang

    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

  • tiểu bang

    MapLikeObject không bắt buộc

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

Giá trị trả về

  • Promise<Response>

FetchDidSucceedCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi

  • tiểu bang

    MapLikeObject không bắt buộc

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

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

    Phản hồi không bắt buộc

  • tiểu bang

    MapLikeObject không bắt buộc

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

Giá trị trả về

  • Promise<Response>

HandlerDidErrorCallbackParam

Thuộc tính

  • error

    Lỗi

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • tiểu bang

    MapLikeObject không bắt buộc

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

Giá trị trả về

  • Promise<void>

HandlerDidRespondCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi không bắt buộc

  • tiểu bang

    MapLikeObject không bắt buộc

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Giá trị trả về

  • Promise<Response>

HandlerWillRespondCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • phản hồi

    Phản hồi

  • tiểu bang

    MapLikeObject không bắt buộc

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

Giá trị trả về

  • Promise<void>

HandlerWillStartCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • tiểu bang

    MapLikeObject không bắt buộc

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

Lệnh gọi lại "trình xử lý" được gọi bất cứ khi nào Router so khớp 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ề một 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, thì mảng hoặc đối tượng đó 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ề

  • Promise<Response>

ManualHandlerCallbackOptions

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

Thuộc tính

  • event

    ExtendableEvent

  • request

    string | Yêu cầu

MapLikeObject

PluginState

Hiện tại, bạn có thể 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,
)

Giá trị trả về

  • Promise<Request>

RequestWillFetchCallbackParam

Thuộc tính

  • event

    ExtendableEvent

  • request

    Yêu cầu

  • tiểu bang

    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 sử dụng một trong hai phương thức này.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

Lệnh gọi lại "trình xử lý" được gọi bất cứ khi nào Router khớp với 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ề một 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, thì mảng hoặc đối tượng đó 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ề

  • Promise<Response>

RouteHandlerCallbackOptions

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

Thuộc tính

  • event

    ExtendableEvent

  • tham số

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

  • request

    Yêu cầu

  • url

    URL

RouteHandlerObject

Một đố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à bạn có thể mở rộng (như gói workbox-strategies đã làm).

Thuộc tính

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

Lệnh gọi lại "khớp" được 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 so khớp xảy ra để phản hồi một sự kiện tìm nạp từ ứng dụng, đối tượng event cũng được cung cấp. Tuy nhiên, vì hàm gọi lại so khớp có thể được gọi bên ngoài sự kiện tìm nạp, nên logic so khớp không được giả định rằng đối tượng event sẽ luôn có sẵn. Nếu lệnh gọi lại khớp trả về một giá trị đúng, thì RouteHandlerCallback của tuyến 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 đến 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 vòng đời không bắt buộc cho các thao tác tìm nạp và lưu vào bộ nhớ đệm.

Thuộc tính

WorkboxPluginCallbackParam

Thuộc tính

Thuộc tính

cacheNames

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

cacheNames.precache được dùng cho các thành phần được lưu vào bộ nhớ đệm trước, cacheNames.googleAnalytics được workbox-google-analytics dùng để lưu trữ analytics.jscacheNames.runtime được dùng cho mọi thành phần 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

    chuỗi

  • lưu vào bộ nhớ đệm trước

    chuỗi

  • tiền tố

    chuỗi

  • thời gian chạy

    chuỗi

  • hậu tố

    chuỗi

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ó sau khi worker dịch vụ trở nên hoạt động. Phương thức 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 một 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 thông 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) tham số đã truyền và trả về tham số đó hoặc trả về một đối tượng hoàn toàn mới.

Phương thức này được cố ý 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 có dạng như sau:

    (responseInit: ResponseInit) => ResponseInit

    • responseInit

      ResponseInit

    • returns

      ResponseInit

Giá trị trả về

  • Promise<Response>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

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

Tham số

  • lệnh 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òn được dùng nữa và sẽ bị xoá trong Workbox phiên bản 7.

Bạn nên sử dụng lệnh gọi self.skipWaiting() tương đương.