亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ホームページ ウェブフロントエンド jsチュートリアル Jest の概要: 単體テスト、モック、および非同期コード

Jest の概要: 単體テスト、モック、および非同期コード

Nov 01, 2024 am 12:23 AM

Introduction to Jest: Unit Testing, Mocking, and Asynchronous Code

ジェストの紹介

Jest は JavaScript コードをテストするためのライブラリです。

これは Facebook によって管理されているオープンソース プロジェクトであり、React コードのテストに特に適していますが、これに限定されません。あらゆる JavaScript コードをテストできます。その強(qiáng)みは次のとおりです:

  • 速いです
  • スナップショットテストを?qū)g行できます
  • 獨(dú)自の意見があり、選択を必要とせずにすぐに使えるすべての機(jī)能を提供します
export default function sum(a, n) {
  return a + b;
}

divide.test.js

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

マッチャー

マッチャーは、値をテストできるメソッドです。

  • toBe は === を使用して厳密な等価性を比較します。
  • toEqual は 2 つの変數(shù)の値を比較します。オブジェクトまたは配列の場(chǎng)合は、すべてのプロパティまたは要素が等しいかどうかをチェックします
  • null 値を渡す場(chǎng)合、toBeNull は true になります
  • 定義された値を渡す場(chǎng)合、toBeDefined は true になります (上記とは逆)
  • 未定義の値を渡す場(chǎng)合は toBeUnknown が true になります
  • toBeCloseTo は浮動(dòng)小數(shù)點(diǎn)値を比較するために使用され、丸めエラーを回避します
  • toBeTruthy 値が true とみなされる場(chǎng)合は true (if と同様)
  • toBeFalsy 値が false とみなされる場(chǎng)合は true (if と同様)
  • Expect() の結(jié)果が引數(shù)
  • より大きい場(chǎng)合は toBeGreaterThan true
  • toBeGreaterThanOrEqual Expect() の結(jié)果が引數(shù)と等しいか、引數(shù)より大きい場(chǎng)合は true
  • Expect() の結(jié)果が引數(shù)
  • より小さい場(chǎng)合は toBeLessThan true
  • toBeLessThanOrEqual Expect() の結(jié)果が引數(shù)と等しいか、引數(shù)より小さい場(chǎng)合は true
  • toMatch は、正規(guī)表現(xiàn)パターン マッチングで文字列を比較するために使用されます
  • toContain は配列で使用されます。期待される配列の要素に引數(shù)が含まれている場(chǎng)合は true、set
  • toHaveLength(number): 配列の長(zhǎng)さをチェックします
  • toHaveProperty(key, value): オブジェクトにプロパティがあるかどうかを確認(rèn)し、オプションでその値を確認(rèn)します
  • toThrow は、渡した関數(shù)が例外 (一般) または特定の例外をスローするかどうかをチェックします
  • toBeInstanceOf(): オブジェクトがクラスのインスタンスであるかどうかを確認(rèn)します

依存関係

依存関係とは、アプリケーションが依存するコードの一部です。それはプロジェクト內(nèi)の関數(shù)/オブジェクト、またはサードパーティの依存関係 (ex axios) である可能性があります

コードがないとアプリケーションが機(jī)能できない場(chǎng)合、そのコードは真の依存関係になります。

たとえば、電子メールを送信したり、API リクエストを行ったり、構(gòu)成オブジェクトを構(gòu)築したりする機(jī)能をアプリケーションに実裝する場(chǎng)合

js プロジェクトのコードに依存関係を追加するには、2 つの方法があります。

輸入品

export default function sum(a, n) {
  return a + b;
}

依存関係の注入

単純な概念を表す単なる派手な用語(yǔ)です。

関數(shù)が外部依存関係からの機(jī)能を必要とする場(chǎng)合は、それを引數(shù)として挿入するだけです。

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

単體テスト

単體テストは、アプリケーションのセクション (「ユニット」と呼ばれる) が設(shè)計(jì)を満たし、意図したとおりに動(dòng)作することを確認(rèn)するために、ソフトウェア開発者によって作成および実行されます。

コードを分離してテストしたいので、依存関係の実際の実裝は気にしません。
検証したい

  • コード単位が期待どおりに動(dòng)作すること
  • 期待される結(jié)果を返します
  • 必要に応じてコラボレータ (依存関係) を呼び出します

そこで、依存関係を嘲笑することが重要になります。

嘲笑する

単體テストでは、モックは依存関係によって提供される機(jī)能をスタブ化する機(jī)能と、コードが依存関係とどのように相互作用するかを観察する手段を提供します。

モックは、依存関係をテストに直接組み込むのが高価であったり非現(xiàn)実的である場(chǎng)合、たとえば、コードが API への HTTP 呼び出しを行ったり、データベース層と対話したりする場(chǎng)合

などに特に役立ちます。

これらの依存関係に対する応答は、必要に応じて呼び出されるようにしながら、スタブアウトすることが望ましいです。ここでモックが役に立ちます。

モック関數(shù)を使用すると、次のことがわかります:
  • 受信した通話數(shù)
  • 。
  • 各呼び出しで使用される Argument
  • の値。
  • 各呼び出しの 「コンテキスト」またはこの
  • 値。
  • 関數(shù)がどのように終了したか、およびどのような値が生成されたか
  • 。

冗談で嘲笑する

モック関數(shù)を作成するにはいくつかの方法があります。
  • jest.fn メソッドを使用すると、新しいモック関數(shù)を直接作成できます。
  • オブジェクト メソッドをモックしている場(chǎng)合は、jest.spyOn を使用できます。
  • モジュール全體をモックしたい場(chǎng)合は、jest.mock を使用できます。

jest.fn メソッドは、それ自體が高階関數(shù)です。

これは、新しい未使用のモック関數(shù)を作成するファクトリ メソッドです。

JavaScript の関數(shù)は第一級(jí)市民であり、引數(shù)として渡すことができます。

各モック関數(shù)にはいくつかの特別なプロパティがあります。モック プロパティは基本です。このプロパティは、関數(shù)がどのように呼び出されたかに関するすべての疑似狀態(tài)情報(bào)を含むオブジェクトです。このオブジェクトには 3 つの配列プロパティが含まれています:
  • 呼び出し [各呼び出しの引數(shù)]
  • インスタンス [各呼び出しの「この」値]
  • Results [関數(shù)が終了した値]、results プロパティには型 (return または throw) と値があります。
    • 関數(shù)は明示的に値を返します。
    • 関數(shù)は return ステートメントなしで完了まで実行されます (これは、未定義を返すのと同じです
    • 関數(shù)はエラーをスローします。
export default function sum(a, n) {
  return a + b;
}
  • https://codesandbox.io/s/implementing-mock-functions-tkc8b

モックベーシック

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

注入された依存関係をモックする

import { name, draw, reportArea, reportPerimeter } from './modules/square.js';

モジュールのモック化

jest.fn を使用して関數(shù)をモックする

// Constructor Injection

// DatabaseManager class takes a database connector as a dependency
class DatabaseManager {
    constructor(databaseConnector) {
        // Dependency injection of the database connector
        this.databaseConnector = databaseConnector;
    }

    updateRow(rowId, data) {
        // Use the injected database connector to perform the update
        this.databaseConnector.update(rowId, data);
    }
}

// parameter injection, takes a database connector instance in as an argument; easy to test!
function updateRow(rowId, data, databaseConnector) {
    databaseConnector.update(rowId, data);
}

このタイプのモックは、いくつかの理由からあまり一般的ではありません。

  • jest.mock はモジュール內(nèi)のすべての関數(shù)に対してこれを自動(dòng)的に実行します
  • jest.spyOn も同じことを行いますが、元の関數(shù)を復(fù)元できます

jest.mock でモジュールをモックする

より一般的なアプローチは、jest.mock を使用してモジュールのすべてのエクスポートをモック関數(shù)に自動(dòng)的に設(shè)定することです

// 1. The mock function factory
function fn(impl = () => {}) {
  // 2. The mock function
  const mockFn = function(...args) {
    // 4. Store the arguments used
    mockFn.mock.calls.push(args);
    mockFn.mock.instances.push(this);
    try {
      const value = impl.apply(this, args); // call impl, passing the right this
      mockFn.mock.results.push({ type: 'return', value });
      return value; // return the value
    } catch (value) {
      mockFn.mock.results.push({ type: 'throw', value });
      throw value; // re-throw the error
    }
  }
  // 3. Mock state
  mockFn.mock = { calls: [], instances: [], results: [] };
  return mockFn;
}

jest.spyOn を使用して関數(shù)をスパイまたはモックする

メソッドが呼び出されるのを監(jiān)視するだけで、元の実裝は保持したい場(chǎng)合があります。また、実裝をモックしたい場(chǎng)合もありますが、後でスイート內(nèi)でオリジナルを復(fù)元します。

test("returns undefined by default", () => {
  const mock = jest.fn();

  let result = mock("foo");

  expect(result).toBeUndefined();
  expect(mock).toHaveBeenCalled();
  expect(mock).toHaveBeenCalledTimes(1);
  expect(mock).toHaveBeenCalledWith("foo");
});

元の実裝を復(fù)元します

const doAdd = (a, b, callback) => {
  callback(a + b);
};

test("calls callback with arguments added", () => {
  const mockCallback = jest.fn();
  doAdd(1, 2, mockCallback);
  expect(mockCallback).toHaveBeenCalledWith(3);
});

JavaScript とイベント ループ

JavaScript はシングルスレッドです: 一度に実行できるタスクは 1 つだけです。通常、これは大したことではありませんが、30 秒かかるタスクを?qū)g行していると想像してください。そうです。そのタスク中は、何か他のことが起こるまで 30 秒待機(jī)します (JavaScript はデフォルトでブラウザのメイン スレッドで実行されます)。そのため、UI 全體が動(dòng)かなくなってしまいます)。
2020 年、遅くて応答しない Web サイトを望んでいる人はいません。

幸いなことに、ブラウザは、JavaScript エンジン自體が提供していないいくつかの機(jī)能、Web API を提供します。これには、DOM API、setTimeout、HTTP リクエスト などが含まれます。これは、非同期非ブロック動(dòng)作
を作成するのに役立ちます。

export default function sum(a, n) {
  return a + b;
}
  • 呼び出しスタック - 関數(shù)を呼び出すと、関數(shù)は呼び出しスタックと呼ばれるものに追加されます。
  • WebAPI - setTimeout は WebAPI によって提供され、コールバック関數(shù)を受け取り、メインスレッドをブロックせずにタイマーを設(shè)定します
  • キュー - タイマーが終了すると、コールバックがキュー
  • に追加されます。
  • Event Loop - コールスタックが空かどうかを確認(rèn)し、キュー內(nèi)に実行するコールバックがあるかどうかを確認(rèn)し、実行するコールスタックに移動(dòng)します。
import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

Jest を使用した非同期コードのテスト

Jest は通常、テストの関數(shù)を同期的に実行することを想定しています。

非同期操作を?qū)g行しても、テストが終了するまで待機(jī)する必要があることを Jest に知らせないと、誤検知が発生します。

import { name, draw, reportArea, reportPerimeter } from './modules/square.js';

非同期パターン
JavaScript で非同期操作を処理するには、いくつかのパターンがあります。最もよく使用されるものは次のとおりです:

  • コールバック
  • 約束と非同期/待機(jī)

コールバックのテスト

Jest はテストを?qū)g行しないため、コールバック內(nèi)にテストを含めることはできません。テスト ファイルの実行は、コールバックが呼び出される前に終了します。これを修正するには、パラメータをテスト関數(shù)に渡します。これを完了と呼び出すと便利です。 Jest は、done() が呼び出されるまで待機(jī)してからテストを終了します。

// Constructor Injection

// DatabaseManager class takes a database connector as a dependency
class DatabaseManager {
    constructor(databaseConnector) {
        // Dependency injection of the database connector
        this.databaseConnector = databaseConnector;
    }

    updateRow(rowId, data) {
        // Use the injected database connector to perform the update
        this.databaseConnector.update(rowId, data);
    }
}

// parameter injection, takes a database connector instance in as an argument; easy to test!
function updateRow(rowId, data, databaseConnector) {
    databaseConnector.update(rowId, data);
}

約束

Promise を返す関數(shù)を使用して、テストから Promise を返します。

// 1. The mock function factory
function fn(impl = () => {}) {
  // 2. The mock function
  const mockFn = function(...args) {
    // 4. Store the arguments used
    mockFn.mock.calls.push(args);
    mockFn.mock.instances.push(this);
    try {
      const value = impl.apply(this, args); // call impl, passing the right this
      mockFn.mock.results.push({ type: 'return', value });
      return value; // return the value
    } catch (value) {
      mockFn.mock.results.push({ type: 'throw', value });
      throw value; // re-throw the error
    }
  }
  // 3. Mock state
  mockFn.mock = { calls: [], instances: [], results: [] };
  return mockFn;
}

非同期/待機(jī)

Promise を返す関數(shù)をテストするには、async/await を使用することもできます。これにより、構(gòu)文が非常に単純かつ単純になります。

test("returns undefined by default", () => {
  const mock = jest.fn();

  let result = mock("foo");

  expect(result).toBeUndefined();
  expect(mock).toHaveBeenCalled();
  expect(mock).toHaveBeenCalledTimes(1);
  expect(mock).toHaveBeenCalledWith("foo");
});

ヒント

  • 関數(shù)が何を行うのか、何をテストしようとしているのかをよく理解する必要があります
  • テストしているコードの動(dòng)作について考えてみましょう
  • 舞臺(tái)を設(shè)定します:
    • 依存関係をモック/スパイします
    • コードはグローバル オブジェクトと対話していますか?私たちも彼らを嘲笑したりスパイしたりすることができます
    • テストは DOM と対話していますか?いくつかの偽の要素を構(gòu)築して動(dòng)作させることができます
    • テストを構(gòu)造化する
    • 與えられた ...
    • 電話すると....
    • それでは...期待しています....
const doAdd = (a, b, callback) => {
  callback(a + b);
};

test("calls callback with arguments added", () => {
  const mockCallback = jest.fn();
  doAdd(1, 2, mockCallback);
  expect(mockCallback).toHaveBeenCalledWith(3);
});

リンク

  • https://medium.com/@rickhanlonii/ Understanding-jest-mocks-f0046c68e53c
  • https://jestjs.io/docs/en/mock-functions
  • https://codesandbox.io/s/implementing-mock-functions-tkc8b
  • https://github.com/BulbEnergy/jest-mock-examples
  • https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif
  • https://jestjs.io/docs/en/asynchronous
  • https://www.pluralsight.com/guides/test-asynchronous-code-jest

以上がJest の概要: 単體テスト、モック、および非同期コードの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Garbage CollectionはJavaScriptでどのように機(jī)能しますか? Garbage CollectionはJavaScriptでどのように機(jī)能しますか? Jul 04, 2025 am 12:42 AM

JavaScriptのごみ収集メカニズムは、タグクリアリングアルゴリズムを介してメモリを自動(dòng)的に管理して、メモリ漏れのリスクを減らします。エンジンはルートオブジェクトからアクティブオブジェクトを橫斷およびマークし、マークされていないオブジェクトはゴミとして扱われ、クリアされます。たとえば、オブジェクトが參照されなくなった場(chǎng)合(変數(shù)をnullに設(shè)定するなど)、次のリサイクルでリリースされます。メモリリークの一般的な原因には以下が含まれます。 closurures閉鎖の外部変數(shù)への參照。 globalグローバル変數(shù)は引き続き大量のデータを保持しています。 V8エンジンは、世代のリサイクル、増分マーキング、並列/同時(shí)リサイクルなどの戦略を通じてリサイクル効率を最適化し、メインスレッドのブロック時(shí)間を短縮します。開発中、不必要なグローバル?yún)⒄栅虮埭薄ⅴ靴榨┅`マンスと安定性を改善するためにオブジェクトの関連付けを迅速に裝飾する必要があります。

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない內(nèi)蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動(dòng)処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡(jiǎn)潔な構(gòu)文と強(qiáng)力な機(jī)能を備えており、非同期/待ち聲、自動(dòng)JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡(jiǎn)素化することをお?jiǎng)幛幛筏蓼埂?3.Node-Fetchは、約束と単純な構(gòu)文に基づいて、ブラウザフェッチに似たスタイルを提供します

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問(wèn)題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

React vs Angular vs Vue:どのJSフレームワークが最適ですか? React vs Angular vs Vue:どのJSフレームワークが最適ですか? Jul 05, 2025 am 02:24 AM

どのJavaScriptフレームワークが最良の選択ですか?答えは、あなたのニーズに応じて最も適切なものを選択することです。 1.反応は柔軟で無(wú)料で、高いカスタマイズとチームアーキテクチャ機(jī)能を必要とする中規(guī)模および大規(guī)模プロジェクトに適しています。 2。Angularは、エンタープライズレベルのアプリケーションと長(zhǎng)期的なメンテナンスに適した完全なソリューションを提供します。 3. Vueは使いやすく、中小規(guī)模のプロジェクトや迅速な発展に適しています。さらに、既存のテクノロジースタック、チームサイズ、プロジェクトのライフサイクル、およびSSRが必要かどうかは、フレームワークを選択する上で重要な要素でもあります。要するに、絶対に最良のフレームワークはありません。最良の選択は、あなたのニーズに合ったものです。

JavaScript Timeオブジェクト、誰(shuí)かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 JavaScript Timeオブジェクト、誰(shuí)かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標(biāo)紛爭(zhēng)、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強(qiáng)力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標(biāo)を登録しようとするDeno Oracleの試みとのOracleの商標(biāo)紛爭(zhēng)は、論爭(zhēng)を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標(biāo)をキャンセルするために請(qǐng)願(yuàn)書を提出しました。

JavaScriptですぐに呼び出された関數(shù)式(IIFE)を理解します JavaScriptですぐに呼び出された関數(shù)式(IIFE)を理解します Jul 04, 2025 am 02:42 AM

iife(即時(shí)インドボークフニックエクスペッション)は、定義の直後に実行される関數(shù)式であり、変數(shù)を分離し、グローバルな範(fàn)囲の汚染を避けるために使用されます。括弧內(nèi)に関數(shù)を包むことによって呼び出され、式と括弧のペアがすぐにそれに続く、(function(){/code/})();そのコアの使用には、次のものが含まれます。1。さまざまな競(jìng)合を回避し、複數(shù)のスクリプト間の命名の重複を防ぎます。 2。プライベートスコープを作成して、內(nèi)部変數(shù)を見えないようにします。 3。変數(shù)が多すぎずに初期化を容易にするモジュラーコード。一般的なライティング方法には、ES6矢印関數(shù)のパラメーターとバージョンで渡されたバージョンが含まれますが、式とタイを使用する必要があることに注意してください。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結(jié)を?qū)g現(xiàn)します。それぞれ.then()は以前の結(jié)果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、寫真などのリソースを手動(dòng)で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全體のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優(yōu)先順位またはネットワークの優(yōu)先戦略を?qū)g裝できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場(chǎng)合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

See all articles