• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    vue+mockjs模擬數據實現前后端分離開發的實例代碼

    來源:懂視網 責編:小采 時間:2020-11-27 22:33:18
    文檔

    vue+mockjs模擬數據實現前后端分離開發的實例代碼

    vue+mockjs模擬數據實現前后端分離開發的實例代碼:本文介紹了vue+mockjs模擬數據實現前后端分離開發的實例代碼,分享給大家,也給自己留個筆記。 在項目中嘗試了mockjs,mock數據,實現前后端分離開發。 關于mockjs,官網描述的是 1.前后端分離 2.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬
    推薦度:
    導讀vue+mockjs模擬數據實現前后端分離開發的實例代碼:本文介紹了vue+mockjs模擬數據實現前后端分離開發的實例代碼,分享給大家,也給自己留個筆記。 在項目中嘗試了mockjs,mock數據,實現前后端分離開發。 關于mockjs,官網描述的是 1.前后端分離 2.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬

    本文介紹了vue+mockjs模擬數據實現前后端分離開發的實例代碼,分享給大家,也給自己留個筆記。

    在項目中嘗試了mockjs,mock數據,實現前后端分離開發。

    關于mockjs,官網描述的是

    1.前后端分離

    2.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬的響應數據。

    3.數據類型豐富

    4.通過隨機數據,模擬各種場景。

    等等優點。

    總結起來就是在后端接口沒有開發完成之前,前端可以用已有的接口文檔,在真實的請求上攔截ajax,并根據mockjs的mock數據的規則,模擬真實接口返回的數據,并將隨機的模擬數據返回參與相應的數據交互處理,這樣真正實現了前后臺的分離開發。

    與以往的自己模擬的假數據不同,mockjs可以帶給我們的是:在后臺接口未開發完成之前模擬數據,并返回,完成前臺的交互;在后臺數據完成之后,你所做的只是去掉mockjs:停止攔截真實的ajax,僅此而已。

    下面一步步的來實現vue-cli創建項目并添加一條新聞類的數據模擬接口:

    1.安裝vue-cli全局腳手架

    npm install --global vue-cli 

    2.創建vue項目

    vue init webpack mockjs<br>cd mockjs<br>npm install axios --save 

    3.安裝mockjs

    npm install mockjs --save-dev 

    4.項目目錄

    axios/api    用來封裝axios

    Hello.vue     頁面首頁

    NeswCell.vue   新聞組件

    router/index.js   路由

    main.js      入口js

    mock.js     mockjs文件

    在來看下完成后的效果

    5.在入口js(main.js)里引入mockjs

    // The Vue build version to load with the `import` command
    
    // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
    
    import Vue from 'vue'
    
    import App from './App'
    
    import router from './router'
    
     
    
    Vue.config.productionTip = false
    
     
    
    // 引入mockjs
    
    require('./mock.js')
    
     
    
    /* eslint-disable no-new */
    
    new Vue({
    
     el: '#app',
    
     router,
    
     template: '<App/>',
    
     components: {
    
     App
    
     }
    
    })
    
     
    
    Vue.filter('getYMD', function(input) {
    
     return input.split(' ')[0];
    
    }) 
    
    

    這里我添加了額一個常用的時間整理過濾器 getYMD

    6. 添加一個mock規則(mock.js)

    // 引入mockjs
    
    const Mock = require('mockjs');
    
    // 獲取 mock.Random 對象
    
    const Random = Mock.Random;
    
    // mock一組數據
    
    const produceNewsData = function() {
    
     let articles = [];
    
     for (let i = 0; i < 100; i++) {
    
     let newArticleObject = {
    
     title: Random.csentence(5, 30), // Random.csentence( min, max )
    
     thumbnail_pic_s: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機的 Base64 圖片編碼
    
     author_name: Random.cname(), // Random.cname() 隨機生成一個常見的中文姓名
    
     date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默認為yyyy-MM-dd;Random.time() 返回一個隨機的時間字符串
    
     }
    
     articles.push(newArticleObject)
    
     }
    
     
    
     return {
    
     articles: articles
    
     }
    
    }
    
     
    
    // Mock.mock( url, post/get , 返回的數據);
    
    Mock.mock('/news/index', 'post', produceNewsData); 
    
    

    7.在Hello.vue 中請求文檔接口,并接收mock數據

    <template>
    
     <div class="index">
    
     <div v-for="(item, key) in newsListShow">
    
     <news-cell
    
     :newsDate="item"
    
     :key="key"
    
     ></news-cell>
    
     </div>
    
     </div>
    
    </template>
    
     
    
    <script>
    
    import api from './../axios/api.js'
    
    import NewsCell from './NewsCell.vue'
    
     
    
    export default {
    
     name: 'index',
    
     data () {
    
     return {
    
     newsListShow: [],
    
     }
    
     },
    
     components: {
    
     NewsCell
    
     },
    
     created() {
    
     this.setNewsApi();
    
     },
    
     methods:{
    
     setNewsApi: function() {
    
     api.JH_news('/news/index', 'type=top&key=123456')
    
     .then(res => {
    
     console.log(res);
    
     this.newsListShow = res.articles;
    
     });
    
     },
    
     }
    
    }
    
    </script>
    
     
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    
    <style scoped>
    
    .topNav{
    
     width: 100%;
    
     background: #ED4040;
    
     position: fixed;
    
     top:0rem;
    
     left: 0;
    
     z-index: 10;
    
    }
    
    .simpleNav{
    
     width: 100%;
    
     line-height: 1rem;
    
     overflow: hidden;
    
     overflow-x: auto;
    
     text-align: center;
    
     font-size: 0;
    
     font-family: '微軟雅黑';
    
     white-space: nowrap;
    
    }
    
    .simpleNav::-webkit-scrollbar{height:0px}
    
    .simpleNavBar{
    
     display: inline-block;
    
     width: 1.2rem;
    
     color:#fff;
    
     font-size:0.3rem;
    
    }
    
    .navActive{
    
     color: #000;
    
     border-bottom: 0.05rem solid #000;
    
    }
    
    .placeholder{
    
     width:100%;
    
     height: 1rem;
    
    }
    
    </style> 
    
    

     注意:api.JH_news是我封裝的axios函數

    axios/api.js如下

    import axios from 'axios'
    
    import vue from 'vue'
    
     
    
    axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
    
     
    
    // 請求攔截器
    
    axios.interceptors.request.use(function(config) {
    
     return config;
    
     }, function(error) {
    
     return Promise.reject(error);
    
     })
    
     // 響應攔截器
    
    axios.interceptors.response.use(function(response) {
    
     return response;
    
    }, function(error) {
    
     return Promise.reject(error);
    
    })
    
     
    
    // 封裝axios的post請求
    
    export function fetch(url, params) {
    
     return new Promise((resolve, reject) => {
    
     axios.post(url, params)
    
     .then(response => {
    
     resolve(response.data);
    
     })
    
     .catch((error) => {
    
     reject(error);
    
     })
    
     })
    
    }
     
    export default {
    
     JH_news(url, params) {
    
     return fetch(url, params);
    
     }
    
    } 
    

    8.在NewsCell.vue展示數據

    <template>
    
     <section class="financial-list">
    
     <section class="collect" @click="jumpPage">
    
     <aside>
    
     <h2>{{newsDate.title}}</h2>
    
     <section class="Cleft clearfix">
    
     <img class="fl" src="./../assets/icon/eyes.png" style="width:0.24rem;height:0.2rem;">
    
     <span class="fl">{{newsDate.author_name}}</span>
    
     </section>
    
     <section class="Cright">
    
     <img src="./../assets/icon/clock.png" style="width:0.2rem;height:0.2rem;">
    
     <span>{{newsDate.date | getYMD}}</span>
    
     </section>
    
     <div style="clear: both"></div>
    
     </aside>
    
     <aside>
    
     <img :src="newsDate.thumbnail_pic_s" style="border-radius: 0.2rem;">
    
     </aside>
    
     <div style="clear: both"></div>
    
     </section>
    
     </section>
    
    </template>
    
     
    
    <script>
    
    export default {
    
     name: 'NewsCell',
    
     props: {
    
     newsDate: Object
    
     },
    
     data () {
    
     return {
    
     }
    
     },
    
     computed: {
    
     },
    
     methods: {
    
     jumpPage: function () {
    
     window.location.href = this.newsDate.url
    
     }
    
     }
    
    }
    
    </script>
    
     
    
    <style scoped>
    
    .financial-list {
    
     width: 100%;
    
     height: 100%;
    
     background-color: white;
    
     padding: 0.28rem 0;
    
     border-bottom: 1px solid #ccc;
    
    }
    
     
    
    .financial-list .collect {
    
     width: 92%;
    
     margin: 0 auto;
    
    }
    
     
    
    .financial-list .collect aside:nth-of-type(1) {
    
     width: 63%;
    
     float: left;
    
    }
    
     
    
    .financial-list .collect aside:nth-of-type(2) {
    
     width: 32%;
    
     height: 2rem;
    
     float: left;
    
     margin-left: 0.3rem;
    
    }
    
     
    
    .financial-list .collect h2 {
    
     width: 100%;
    
     height: 0.96rem;
    
     font-size: 0.32rem;
    
     color: #333333;
    
     line-height: 0.48rem;
    
     text-overflow: ellipsis;
    
     -o-text-overflow: ellipsis;
    
     overflow: hidden;
    
    }
    
     
    
    .financial-list .collect aside:nth-of-type(2) img {
    
     width: 100%;
    
     height: 100%;
    
    }
    
     
    
    .financial-list .collect aside .Cleft {
    
     width: 45%;
    
     float: left;
    
     margin-top: 0.66rem;
    
    }
    
     
    
    .financial-list .collect aside .Cleft span{
    
     display: block;
    
     width: 1.4rem;
    
     margin-left: 0.05rem;
    
     white-space: nowrap;
    
     text-overflow: ellipsis;
    
     -o-text-overflow: ellipsis;
    
     overflow: hidden;
    
    }
    
     
    
    .financial-list .collect aside .Cright {
    
     width: 55%;
    
     float: right;
    
     margin-top: 0.66rem;
    
    }
    
    .financial-list .collect aside .Cright span{
    
     display: inline-block;
    
     margin: 0.04rem 0 0 0.05rem;
    
    }
    
    .financial-list .collect aside span {
    
     font-size: 0.2rem;
    
     color: #999999;
    
    }
    
     
    
    .financial-list .collect aside .Cleft img,
    
    .financial-list .collect aside .Cright img {
    
     width: 0.18rem;
    
     height: 0.24rem;
    
     margin-top: 0.09rem;
    
    }
    
    </style> 
    
    

    9.所有代碼可以查看我的github:  https://github.com/Jasonwang911/vue_mockjs

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    vue+mockjs模擬數據實現前后端分離開發的實例代碼

    vue+mockjs模擬數據實現前后端分離開發的實例代碼:本文介紹了vue+mockjs模擬數據實現前后端分離開發的實例代碼,分享給大家,也給自己留個筆記。 在項目中嘗試了mockjs,mock數據,實現前后端分離開發。 關于mockjs,官網描述的是 1.前后端分離 2.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬
    推薦度:
    標簽: 數據 VUE 開發
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产成人精品免费视频大| 国产精品igao视频网| 无码精品久久久久久人妻中字 | 91精品国产高清久久久久久io| 精品国内自产拍在线观看| 国内精品手机在线观看视频| 久久精品国产99久久无毒不卡| 日韩福利视频精品专区| 国产久爱免费精品视频| 亚洲精品免费观看| 久久久国产精品网站| 国产成人精品日本亚洲18图| 国内精品九九久久久精品| 亚洲AV永久精品爱情岛论坛| 欧美日韩国产精品自在自线| 精品99又大又爽又硬少妇毛片| 成人国产精品秘 果冻传媒在线| 精品视频一区二区三区在线观看| 国产精品多p对白交换绿帽| 久久久久99精品成人片试看| 午夜精品一区二区三区免费视频 | 日本精品久久久久中文字幕| 亚洲高清国产拍精品26U| 精品人妻少妇一区二区三区不卡| 97精品人妻一区二区三区香蕉| 国产精品久久久久久福利漫画| 精品国产一区二区三区无码| 精品国产v无码大片在线观看| 无码人妻精品中文字幕| 亚洲日韩一页精品发布| 亚洲精品无码久久久久久| 亚洲国产精品无码久久SM| 亚洲一区爱区精品无码| 色久综合网精品一区二区| 亚洲av无码乱码国产精品| 精品深夜AV无码一区二区| 精品国产乱码一区二区三区| 国产麻豆一精品一AV一免费| 国产成人精品日本亚洲11| 久久综合九色综合精品| 日本一区精品久久久久影院|