利用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 相关文章推荐
XML+XSL 与 HTML 两种方案的结合
Apr 22 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
jquery each()源代码
Feb 14 Javascript
jQuery-serialize()输出序列化form表单值的方法
Dec 26 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
javascript如何创建对象
Aug 29 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
原生JS实现九宫格抽奖效果
Apr 01 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
在Pandas中处理NaN值的方法
2019/06/25 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
入团者的自我评价分享
2013/12/02 职场文书
机电一体化自荐信
2013/12/10 职场文书
顶岗实习接收函
2014/01/09 职场文书
30年同学聚会感言
2014/01/30 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
支教个人总结
2015/03/04 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
MySQL Server 层四个日志
2022/03/31 MySQL