Mirage JS——海市蜃楼
这期介绍一款比较别致的 mock 工具,mirage.js。说它别致,缘由是与竞品有一点点区别:它是在客户端启动的一个 mock 服务,恰如“海市蜃楼”为远程调度展现一幅 api 全景图;实则是一种伪装技术,在应用内存里拦截了所有请求。
Mirage JS
Mock API
上次有人在评论区问我,前端开发时怎样避免启动一堆后端服务。理想状态下(理想状态下,理想状态下,重要的事情说三遍),有 mock 服务就行了——浏览器装个代理插件,将 api 路由到 mock 服务上。Mock 服务器可以是后端仓库里一个本地服务;也可以是线上的三方产品——比如国产开源的yapi——直接在线编辑。现代开发一般就是前后分离,前端开发时,后端小伙伴很可能还没开工;mock api 就可以帮你摆脱这类窘境。当然,你习惯于前端 hard code,我无话可说……
OK,答疑结束,回到本期话题。Mirage JS 就是一款 API Mock 工具,比之常规 mock 服务,你不用装代理插件了,因为它与前端代码一起运行。接着看看怎么使用吧。
Guide
安装就一笔带过了——yarn add -D miragejs
然后在前端 src 目录下写一个 server.js 文件,用来定义所有的 mock api。代码如下所示:
// server.js
import { Server } from "miragejs";
export function mockServer() {
return new Server({
routes() {
this.namespace = "api";
this.get('/todos', () => [ "Buy Onion" ]);
}
})
}
Mirage 代码还是挺直白的:在routes方法里定义了一个 Get API——/api/todos——返回我们所需要的 mock 数组[ "Buy Onion" ]。一个最简单的 mock 服务就完工了。我们以 vue 项目为例,在入口文件 main.js 里引入 server.js,并新建这个 mock 服务。
import Vue from "vue";
import { mockServer } from "./server";
mockServer();
new Vue({
render: h => h(App)
}).$mount("#app");
和平日里一样,用 webpack 启动 vue 项目,该 mock 服务就跟随整个前端项目启动了,并且共享 webpack 热加载。与传统的本地 mock 服务比起来,你可以少打一行命令,减少了 50%的操作。至于前端组件,和往常一样不需要做任何改变:
// Todos.vue
- {{ todo }}
发表评论 (审核通过后显示评论):