针对共享 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-shaking,因此它不会影响你的生产包。
此外,请注意我们在这里传入{ environment: "development" }
,这样 Mirage 的seeds()
就会加载,并且会有模拟延迟来帮助你在开发过程中。
就是这样!有了这段代码,无论你的应用程序中的任何组件在开发环境中发出网络请求,Mirage 都会拦截该请求,并使用你的服务器定义中的数据进行响应。
现在你拥有一个中心位置来定义和更新你的 Mirage 服务器,以便你在继续 React 应用的本地开发过程中。