<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 国产亚洲高清不卡在线观看| 国产伦精品一区二区三区免费下载 | 成人午夜免费视频| 免费人成在线观看网站视频 | 人妻丰满熟妇无码区免费| 亚洲va久久久噜噜噜久久天堂| 国精产品一区一区三区免费视频 | 有色视频在线观看免费高清在线直播| 亚洲А∨精品天堂在线| 九九全国免费视频| 亚洲精品国产字幕久久不卡| 亚洲免费精彩视频在线观看| 亚洲中字慕日产2020| 日韩免费无码一区二区视频| 搜日本一区二区三区免费高清视频 | 爱情岛亚洲论坛在线观看 | 亚洲三级中文字幕| 免费a级毛片无码av| 精品一区二区三区免费观看| 亚洲成AV人片在线观看WWW| 最近中文字幕免费2019| 亚洲成a人片在线观看天堂无码| 亚洲免费日韩无码系列| 国产精品区免费视频| 亚洲一区二区三区在线观看蜜桃| 午夜毛片不卡高清免费| 全黄大全大色全免费大片| 亚洲成人在线免费观看| 国产国产人免费人成免费视频| 中文字幕手机在线免费看电影| 亚洲欧洲自拍拍偷午夜色| 日韩成人免费视频播放| 精品亚洲永久免费精品| 激情五月亚洲色图| 曰韩亚洲av人人夜夜澡人人爽 | 美丽的姑娘免费观看在线播放 | 亚洲色四在线视频观看| 女人与禽交视频免费看| 中文永久免费观看网站| 亚洲国产精品免费观看| 亚洲国产成人一区二区三区|