Vue.js(15)之 json-server搭建模拟的API服务器
Posted 月下大庚角
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js(15)之 json-server搭建模拟的API服务器相关的知识,希望对你有一定的参考价值。
json-server搭建模拟的API服务器
-
-
项目根目录下创建
mock
文件夹 -
mock
文件夹下添加db.json
文件,内容如下:
{ "students": [ { "id": 1, "name": "小明", "age": 20}, { "id": 2, "name": "小红", "age": 21}, { "id": 3, "name": "小白", "age": 19}, { "id": 4, "name": "小露", "age": 20}, { "id": 5, "name": "小彩", "age": 22} ], "country": [ {"name": "中国"}, {"name": "日本"}, {"name": "荷兰"}, {"name": "美国"} ] }
"mock": "json-server --port 1995 mock/db.js",
"scripts": { "test": "echo \\"Error: no test specified\\" && exit 1", "dev": "webpack-dev-server --open --port 80 --hot", "mock": "json-server --port 1995 mock/db.js", "build": "webpack" },
-
-
运行
npm i lodash -S
安装lodash,利用_.times()
方法循环调用 faker 生成数据; -
把
mock
目录下的db.json
改名为db.js(注意把package.json的mock的db.json改成db.js)
-
修改
db.js
中的代码如下:
// 导入 lodash const _ = require(\'lodash\') // 导入 faker 生成假数据 const faker = require(\'faker\') // 设置本地化 faker.lacale = \'zh_CN\' // 使用commonJS 规范把生成的数据导出 // 其中, module.exports 必须指向函数,而且函数中,必须 return 一个数据对象*/ module.exports = () => { // json-server 最终return的数据,必须是一个对象 const data = { list: [] } // 调用 _.times 数据生成8次数据 data.list = _.times(8, n => { return { id: n + 1, name: faker.random.word(), ctime: faker.date.recent() } }) // 把生成的数据返回出去 return data }
案例
index.js
import Vue from \'vue\' import Router from \'vue-router\' Vue.use(Router) // 导入并配置 axios import axios from \'axios\' Vue.prototype.$http = axios import app from \'./app.vue\' import list from \'./list.vue\' import detail from \'./detail.vue\' const router = new Router({ routes: [ { path: \'/\', redirect: \'/list\'}, { path: \'/list\', component: list }, { path: \'/list/detail/:id\', component: detail, props: true } ] }) const vm = new Vue({ el: \'#app\', render: c => c(app), router })
app.vue
<template> <div> <h1>APP根组件</h1> <router-view></router-view> </div> </template>
list.vue
<template> <div> <h3>列表</h3> <ul> <li v-for="item in list" :key="item.id" @click="goDetail(item.id)"> {{item.name}} </li> </ul> </div> </template> <script> export default { data() { return { // 定义列表数据,默认为空数组 list: [] } }, created() { this.getMovieList() }, methods: { // 获取列表的数据 async getMovieList() { const { data: res } = await this.$http.get(\'http://localhost:1995/list\') this.list = res }, // 点击,通过编程式导航,跳转到详情页面 goDetail(id) { this.$router.push(\'/list/detail/\' + id) } } } </script> <style lang="less" scoped> li { list-style: none; line-height: 35px; border: 1px dashed #ccc; margin: 10px 0; font-size: 12px; } </style>
detail.vue
<template> <div> <h3>列表</h3> <ul> <li v-for="item in list" :key="item.id" @click="goDetail(item.id)"> {{item.name}} </li> </ul> </div> </template> <script> export default { data() { return { // 定义列表数据,默认为空数组 list: [] } }, created() { this.getMovieList() }, methods: { // 获取列表的数据 async getMovieList() { const { data: res } = await this.$http.get(\'http://localhost:1995/list\') this.list = res }, // 点击,通过编程式导航,跳转到详情页面 goDetail(id) { this.$router.push(\'/list/detail/\' + id) } } } </script> <style lang="less" scoped> li { list-style: none; line-height: 35px; border: 1px dashed #ccc; margin: 10px 0; font-size: 12px; } </style>
db.js
// 导入 lodash const _ = require(\'lodash\') // 导入 faker 生成假数据 const faker = require(\'faker\') // 设置本地化 faker.lacale = \'zh_CN\' // 使用commonJS 规范把生成的数据导出 // 其中, module.exports 必须指向函数,而且函数中,必须 return 一个数据对象*/ module.exports = () => { // json-server 最终return的数据,必须是一个对象 const data = { list: [] } // 调用 _.times 数据生成8次数据 data.list = _.times(8, n => { return { id: n + 1, name: faker.random.word(), ctime: faker.date.recent() } }) // 把生成的数据返回出去 return data }
以上是关于Vue.js(15)之 json-server搭建模拟的API服务器的主要内容,如果未能解决你的问题,请参考以下文章