針對共享的 Mirage 伺服器開發 React 應用程式

當您準備好集中您的 Mirage 伺服器並在開發和測試之間共享它時,請按照下列步驟操作。

步驟 1:安裝 Mirage

首先,請確保您已將 Mirage 新增至您的專案

# Using npm
npm install --save-dev miragejs

# Using Yarn
yarn add --dev miragejs

步驟 2:定義您的共享伺服器

定義共享伺服器的常見位置是 src/server.js

// src/server.js
import { createServer, Model } from "miragejs"

export function makeServer({ environment = "test" } = {}) {
  let server = createServer({
    environment,

    models: {
      user: Model,
    },

    seeds(server) {
      server.create("user", { name: "Bob" })
      server.create("user", { name: "Alice" })
    },

    routes() {
      this.namespace = "api"

      this.get("/users", (schema) => {
        return schema.users.all()
      })
    },
  })

  return server
}

在用 Create React App 建立的應用程式中,請確保此檔案位於 src/ 目錄下,以便對其進行的變更會觸發重新建置。

我們新增到函式簽章中的 environment 引數只是一種慣例。我們將其預設為 test,因為在大多數應用程式中,您會在開發模式下呼叫 makeServer 一次,但在 test 中多次呼叫(在您的各種測試檔案中)。

您可以自由地將簽章變更為您喜歡的任何內容。

步驟 3:在開發環境中啟動伺服器

開啟您的 React 應用程式的啟動檔案(在 Create React App 中為 src/index.js),匯入您的 makeServer 函式,並在開發環境中呼叫它

// src/index.js
import React from "react"
import ReactDOM from "react-dom"
import App from "./App"
import { makeServer } from "./server"

if (process.env.NODE_ENV === "development") {
  makeServer({ environment: "development" })
}

ReactDOM.render(<App />, document.getElementById("root"))

我們在這裡使用 process.env.NODE_ENV 環境變數,這是許多 React 應用程式環境中可用的常見全域變數。條件允許在生產環境中將 Mirage 進行 tree-shaken,因此它不會影響您的生產套件。

此外,請注意,我們在此處傳入 { environment: "development" },以便 Mirage 的 seeds() 載入,並且有一些模擬延遲來幫助您在開發期間使用。

就是這樣!有了這段程式碼,每當您應用程式中的任何元件在開發時發出網路請求,Mirage 就會攔截該請求,並使用您伺服器定義中的資料做出回應。

現在,當您繼續在 React 應用程式上進行本機開發時,您可以有一個中心位置來定義和更新您的 Mirage 伺服器。