利用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 相关文章推荐
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
AngularJS快速入门
Apr 02 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
Dec 14 Javascript
JavaScript中常见的八个陷阱总结
Jun 28 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
微信小程序实现单选功能
Oct 30 Javascript
extjs图表绘制之条形图实现方法分析
Mar 06 Javascript
Vue父组件监听子组件生命周期
Sep 03 Javascript
在webstorm中配置less的方法详解
Sep 25 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
python打开网页和暂停实例
2014/09/30 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
关于python字符串方法分类详解
2019/08/20 Python
python 公共方法汇总解析
2019/09/16 Python
opencv+python实现均值滤波
2020/02/19 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
数学系个人求职信范文
2014/01/30 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
离婚起诉书范文2015
2015/05/19 职场文书