基于vue-cli+webpack的demo
项目结构



axios文件夹用来创建axios相关配置:

  1. import axios from 'axios'
  2. import vue from 'vue'
  3. axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
  4. // 请求拦截器
  5. axios.interceptors.request.use(function(config) {
  6. return config;
  7. }, function(error) {
  8. return Promise.reject(error);
  9. })
  10. // 响应拦截器
  11. axios.interceptors.response.use(function(response) {
  12. return response;
  13. }, function(error) {
  14. return Promise.reject(error);
  15. })
  16. // 封装axios的post请求
  17. export function fetch(url, params) {
  18. return new Promise((resolve, reject) => {
  19. axios.post(url, params)
  20. .then(response => {
  21. resolve(response.data);
  22. })
  23. .catch((error) => {
  24. reject(error);
  25. })
  26. })
  27. }
  28. export default {
  29. JH_news(url, params) {
  30. return fetch(url, params);
  31. }
  32. }

mock文件夹建立mock数据,配置mock请求:

  1. // 引入mockjs
  2. const Mock = require('mockjs');
  3. // 获取 mock.Random 对象
  4. const Random = Mock.Random;
  5. // mock一组数据
  6. const produceNewsData = function() {
  7. let articles = [];
  8. for (let i = 0; i < 10; i++) {
  9. let newArticleObject = {
  10. title: Random.csentence(5, 30), // Random.csentence( min, max )
  11. thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
  12. author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
  13. date: Random.date() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;
  14. }
  15. articles.push(newArticleObject)
  16. }
  17. return {
  18. articles: articles
  19. }
  20. }
  21. // Mock.mock( url, post/get , 返回的数据);
  22. Mock.mock('/news/index', 'post', produceNewsData);

HelloWorld.vue页面首页:

  1. <template>
  2. <div class="index">
  3. <div v-for="(item, key) in newsListShow" :key="key">
  4. <news-cell
  5. :newsDate="item"
  6. ></news-cell>
  7. </div>
  8. </div>
  9. </template>
  10. <script>
  11. import api from 'js/axios/config'
  12. import NewsCell from './NewsCell.vue'
  13. export default {
  14. name: 'index',
  15. data () {
  16. return {
  17. newsListShow: [],
  18. }
  19. },
  20. components: {
  21. NewsCell
  22. },
  23. created() {
  24. this.setNewsApi();
  25. },
  26. methods:{
  27. setNewsApi: function() {
  28. api.JH_news('/news/index', 'type=top&key=123456')
  29. .then(res => {
  30. console.log(res);
  31. this.newsListShow = res.articles;
  32. });
  33. },
  34. }
  35. }
  36. </script>
  37. <!-- Add "scoped" attribute to limit CSS to this component only -->
  38. <style scoped>
  39. </style>

NewsCell.vue组件渲染数据:

  1. <template>
  2. <div class="wrap">
  3. <div class="wrap-top">
  4. <h1>{{newsDate.title}}</h1>
  5. <span class="date">{{newsDate.date}}</span>
  6. </div>
  7. <div class="wrap-bottom">
  8. <span class="name">{{newsDate.author_name}}</span>
  9. <img :src="newsDate.thumbnail_pic_s" alt="">
  10. </div>
  11. </div>
  12. </template>
  13. <script>
  14. export default {
  15. name: 'NewsCell',
  16. props: {
  17. newsDate: Object
  18. },
  19. data () {
  20. return {
  21. }
  22. },
  23. computed: {
  24. },
  25. methods: {
  26. jumpPage: function () {
  27. window.location.href = this.newsDate.url
  28. }
  29. }
  30. }
  31. </script>
  32. <style scoped>
  33. .wrap{
  34. width: 100%;
  35. font-size: 0.3rem;
  36. }
  37. .wrap-top,.wrap-bottom{
  38. display: flex;
  39. align-items: center;
  40. justify-content:space-between;
  41. }
  42. h1{
  43. width: 6rem;
  44. text-align: left;
  45. white-space: nowrap;
  46. text-overflow: ellipsis;
  47. overflow: hidden;
  48. }
  49. .date{
  50. width: 4rem;
  51. }
  52. .name{
  53. flex: 1;
  54. }
  55. img{
  56. width: 10rem;
  57. }
  58. </style>

main.js入口文件:

  1. // The Vue build version to load with the `import` command
  2. // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
  3. import Vue from 'vue'
  4. import App from './App'
  5. import router from './router'
  6. // 引入mockjs
  7. require('js/mock/mock.js')
  8. Vue.config.productionTip = false
  9. /* eslint-disable no-new */
  10. new Vue({
  11. el: '#app',
  12. router,
  13. components: { App },
  14. template: '<App/>'
  15. })
运行结果



更为详细的介绍:

Mock.js简易教程,脱离后端独立开发,实现增删改查功能

前后端分离之mockjs实战demo的更多相关文章

  1. JEECG前后端分离UI框架实战版本抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)

    JEECG前后端分离UI框架实战版本 - 抢先体验 (ng2-admin+Angular4+AdminLTE) 关键词: ng2-admin.Angular4.AdminLTE.Nodejs.Jeec ...

  2. SpringMVC+Spring+mybatis+maven+搭建多模块框架前后端分离开发框架的完整demo,拿走不谢。——猿实战02

            猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...

  3. SpringBoot+Vue豆宝社区前后端分离项目手把手实战系列教程01---搭建前端工程

    豆宝社区项目实战教程简介 本项目实战教程配有免费视频教程,配套代码完全开源.手把手从零开始搭建一个目前应用最广泛的Springboot+Vue前后端分离多用户社区项目.本项目难度适中,为便于大家学习, ...

  4. JEECG前后端分离UI框架实战抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)

    JEECG前后端分离UI框架 (ng2-admin+Angular4+AdminLTE) 关键词: ng2-admin.Angular4.AdminLTE.Nodejs.Jeecg JEECG紧跟技术 ...

  5. 用Spring Security, JWT, Vue实现一个前后端分离无状态认证Demo

    简介 完整代码 https://github.com/PuZhiweizuishuai/SpringSecurity-JWT-Vue-Deom 运行展示 后端 主要展示 Spring Security ...

  6. 前后端分离之mockjs基本介绍

    安装与使用 # 安装 npm install mockjs #使用 Mock var Mock = require('mockjs') var data = Mock.mock({ // 属性 lis ...

  7. SpringBoot+Vue豆宝社区前后端分离项目手把手实战系列教程02---创建后端工程

    本节代码开源地址 代码地址 项目运行截图 搭建后端工程 0.导入sql 在数据库导入 /* Navicat Premium Data Transfer Source Server : localhos ...

  8. 前后端分离(手)-- 使用mock.js(好样的)

    ## 前言: 本篇博文昨天七夕写的,一天下来被虐得体无完肤,苦逼的单身狗只能学习,对!我爱学习,关掉朋友圈,并写了一篇博文发泄发泄.这次写mock.js的使用,能使前后端分离,分离,分离,重要的是说三 ...

  9. SpringBoot,Vue前后端分离开发首秀

    需求:读取数据库的数据展现到前端页面 技术栈:后端有主要有SpringBoot,lombok,SpringData JPA,Swagger,跨域,前端有Vue和axios 不了解这些技术的可以去入门一 ...

随机推荐

  1. SparkException: Master removed our application

    come from https://stackoverflow.com/questions/32245498/sparkexception-master-removed-our-application ...

  2. 题解 P1030 【求先序排列】

    题解 P1030 [求先序排列] 旧题新解~ 今天做这个题,发现还是没有AC,于是滚回来用了一大堆数据结构A了这个题目,好像复杂度还挺高...... #include <iostream> ...

  3. HGOI20180904(NOIP2018模拟sxn出题)

    sol 输入n和H表示n个人,选H个人gcd最大抓住排列,是x[1,n]的正整数,是连续的整数,假设现在最大的公因数是k其中k一定是在[1,n]那么在排列中最多出现的个数为w那么kw是最大的含有因数k ...

  4. 洛谷 P1852 [国家集训队]跳跳棋 解题报告

    P1852 [国家集训队]跳跳棋 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\), ...

  5. Spring MVC测试框架

    原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解——服务端测试 博客分类: springmvc杂谈 spri ...

  6. Linux掉电处理

    在嵌入式设备中,掉电处理一直是一项比较麻烦的工作,在具有Linux系统的设备中,系统的种种数据的处理更是增加掉电处理的难度.现在做以下几点总结,再遇到类似问题可以做个参考. 1,系统启动的处理 在系统 ...

  7. android编译时出现org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'.错误

    android studio中使用terminal工具.在android studio最下面的底部菜单栏中有(如果没有那cmd中进入项目根目录后): 使用命令  gradlew compileDebu ...

  8. Spark记录-Spark on mesos配置

    1.安装mesos #用centos6的源yum安装 # rpm -Uvh http://repos.mesosphere.io/el/6/noarch/RPMS/mesosphere-el-repo ...

  9. Redis五种数据结构(Windows Server)

    1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...

  10. java学习第05天(数组常见操作、数组中的数组)

    (4)数组常见操作 a.遍历取值 class ArrayDemo3 { public static void main(String[] args) { //System.out.println(&q ...