利用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 相关文章推荐
JavaScript让IE浏览器event对象符合W3C DOM标准
Nov 24 Javascript
使用js获取QueryString的方法小结
Feb 28 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
面向对象设计模式的核心法则
Nov 10 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
javascript实现全角转半角的方法
Jan 23 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
Jun 22 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 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
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
解除劳动合同协议书(样本)
2014/10/02 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python