利用vue + koa2 + mockjs模拟数据的方法教程


Posted in Javascript onNovember 22, 2017

前言

首先说一下这是本人第一次分享东西第一次写,写的不好或者有错误的请大家多包涵支出错误共同进步,好了,话不多说了,来一起看看详细的介绍吧。

关于mockjs,官网描述的是

      1.前后端分离

      2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。

      3.数据类型丰富

      4.通过随机数据,模拟各种场景。

等等优点。

第一步 安装vue-cli项目 不多说网上一大把

需要的朋友们参考这篇文章:https://3water.com/article/118987.htm ,介绍的非常详细。

第二步 因为本地的vue访问本地的mock

1、配置vue代理

    在config/index.js里面的proxyTable,因为本地node启动的服务默认访问的是3000端口

    所以在target里面配置http://localhost:3000/

proxyTable: {
 '/api': {
 target: 'http://localhost:3000/',
 changeOrigin: true,
 pathRewrite: {
  '^/api': '/'
 }
 }

2、在vue项目的mianjs中

import axios from 'axios'
  axios.defaults.baseURL = '/api'

第三步 搭建nodejs的koa2项目

全局安装koa,不是koa2注意

1、npm install -g koa-generator

    创建文件夹下面HelloKoa2是你的项目名字

2、koa2 HelloKoa2

    进入该文件夹然后执行安装依赖

3、cd HelloKoa2然后npm install

上面完成了nodejs的初始化接着操作

4、继续安装依赖文件

npm install mockjs --save -dev //mock文件
 npm install koa2-cors --save -dev //node端配置cors支持跨域用

5、配置app.js文件 注意下面注释的新增部分就是在本来app.js文件上面新增的东西

 

const Koa = require('koa')
 const app = new Koa()
 const views = require('koa-views')
 const json = require('koa-json')
 const onerror = require('koa-onerror')
 const bodyparser = require('koa-bodyparser')
 const logger = require('koa-logger')
 const cors = require('koa2-cors') // 新增部分处理跨域

 //这里提一点题外话 假如routes文件新增一个路径就的在下面增加路劲
 //假设routes新增一个user.js
 //新增一个user需要修改两个地方这里是一个 下面还有一个地方
 //这里需要 const user = require('./routes/user')
 const index = require('./routes/index')
 const users = require('./routes/users')

 // error handler
 onerror(app)

 // middlewares
 app.use(bodyparser({
  enableTypes:['json', 'form', 'text']
 }))
 app.use(cors()) // 新增部分处理跨域
 app.use(json())
 app.use(logger())
 app.use(require('koa-static')(__dirname + '/public'))

 app.use(views(__dirname + '/views', {
  extension: 'pug'
 }))

 // logger
 app.use(async (ctx, next) => {
  const start = new Date()
  await next()
  const ms = new Date() - start
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
 })

 //这里提一点题外话 假如routes文件新增一个路径就的在下面增加路劲
 //假设routes新增一个user.js
 //这里需要 app.use(user.routes(), user.allowedMethods())
 app.use(index.routes(), index.allowedMethods())
 app.use(users.routes(), users.allowedMethods())

 // error-handling
 app.on('error', (err, ctx) => {
  console.error('server error', err, ctx)
 });

 module.exports = app

6、正式使用mock 我这里直接在routes/index.js里面使用

    routes/index.js文件如下

const router = require('koa-router')()
  var Mock = require('mockjs') //引入mockjs
  const Random = Mock.Random;  //引入mockjs生成随机属性的函数 random具体可以生成
          //哪些东西详见http://mockjs.com/examples.html
  router.prefix('/index')

  router.get('/string', async (ctx, next) => {
   //116到125 是mock的第一种使用方法,这种方法随机生成1到10个数组但是每个数组的author、title等都一样
   // ctx.body = await Mock.mock({
   // // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
   // 'arr|1-10': [{
   //  // 属性 id 是一个自增数,起始值为 1,每次增 1
   //  'id|+1': 1,
   //  'author|+1': Random.cname(),
   //  'img': Random.image('100x100'),
   //  'title':Random.csentence(5, 9) 
   // }]
   // }) 
   //127到141是mock的第二种方法主要使用Random函数来生成 这里生成的title、author等每个都不一样
   const produceNewsData = function() {
    let articles = [];
    for (let i = 0; i < 50; i++) {
     let newArticleObject = {
      title: Random.csentence(5, 30), // Random.csentence( min, max )
      author: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
     }
     articles.push(newArticleObject)
    }

    return {
     articles: articles
    }
   }
   ctx.body = await produceNewsData()
  })

这里提一点 http://mockjs.com/examples.html 官网 看清楚每种数据的用法

7、启动node

npm run dev

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
extjs 学习笔记(三) 最基本的grid
Oct 15 Javascript
js 编写规范
Mar 03 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
Javascript学习笔记之相等符号与严格相等符号
Nov 23 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
layUI实现三级导航菜单效果
Jul 26 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
jQuery实现消息弹出框效果
Dec 10 jQuery
vue 实现tab切换保持数据状态
Jul 21 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 #Javascript
利用vue+elementUI实现部分引入组件的方法详解
Nov 22 #Javascript
通过一个简单的例子学会vuex与模块化
Nov 22 #Javascript
第一个Vue插件从封装到发布
Nov 22 #Javascript
详细分析单线程JS执行问题
Nov 22 #Javascript
jquery实现回车键触发事件(实例讲解)
Nov 21 #jQuery
Angular实现双向折叠列表组件的示例代码
Nov 21 #Javascript
You might like
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
Python实现的用户登录系统功能示例
2018/02/05 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Django admin组件的使用
2020/10/24 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
高等教育学自荐书范文
2014/02/10 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
银行简历自我评价
2014/02/11 职场文书
旅游项目合作意向书
2015/05/08 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python