<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 前言 * 前端開發中最重要的便是api調用,從服務端拉取數據進行業務操作,完畢之后提交數據至服務端 * 這個流程幾乎涵蓋了整個系統 * 下面我們來學習下標準的api調用應該如何編寫 * 同時看下如何和我們的自定義組件結合起來 ## 定義一個api 1. 我們到api文件夾下創建demo.js,內容如下 ![](https://img.kancloud.cn/40/ef/40efae19007baa784f5632281207162b_1680x524.png) 2. 工程封裝了`axios`方法,將常用的方法都封裝好,方便大家直接調用 ## 調用api 1. 我們準備讓這個方法在頁面初次加載的時候調用,并把獲取到的數據打印出來 2. 進入我們編寫的Demo頁面,編寫一個測試方法 ![](https://img.kancloud.cn/b7/d2/b7d2e14ff4468a2867bcb73c8ecfba6c_926x1262.png) * `import xx from xxx` 將我們剛剛編寫的api方法引入 * `created` 屬于vue生命周期中`創建執行` * `getDetail` 在頁面加載的時候執行,并且將返回的值打印在控制臺 3. 打開系統刷新頁面,發現控制臺打印與mock設定一致 ![](https://img.kancloud.cn/b5/0b/b50b18702559f3fe08ed6b38358ea9f2_1544x1390.png) ## 使用同步調用api 很多業務場景,經常會有同時幾個接口調用共同依賴的場景,若超過3個的話,都寫在.then方法里進行操作,代碼會變得非常不優雅,耦合度也高。下面我們來嘗試下使用同步操作代碼 1. demo增加mock接口test ![](https://img.kancloud.cn/6e/24/6e247e9abc2b1b6987752282589494c5_1426x798.png) 2. 對應api增加接口定義 ![](https://img.kancloud.cn/d6/0b/d60b62b77453dfd783d0fb739b759a99_776x610.png) 3. 更改代碼,單獨抽離出一個方法init,用于同步代碼的操作。同時將init的返回類型打印出來 ![](https://img.kancloud.cn/95/f7/95f760de5972936dc4dc7b6239350b87_1136x1678.png) 4. 打開系統查看控制臺打印,可以看到兩條信息都打印成功,而且是按順序加載。這樣解耦了多個接口下都操作,代碼看起來更清爽,可讀性更高。 ![](https://img.kancloud.cn/7d/96/7d9678e6162a16920180272d3677261e_1720x1604.png) 5. 可以看到,返回都是一個Promise對象,具體介紹,請看:https://www.imooc.com/article/20580 6. 還有一點需要注意的是,如果需要用到promise,那么方法前必須帶有`async`關鍵字,否則將失效 <br> <br> <br> ## 放上相關代碼 * 希望大家都能把代碼都手動敲出來,而不是直接復制粘貼 * `/mock/demo.js` : ~~~ import Mock from 'mockjs' function getFakeDetail() { const json = {code: 200, success: true, msg: '操作成功'}; json.data = "測試mock返回"; return json; } function getFakeTestDetail() { const json = {code: 200, success: true, msg: '操作成功'}; json.data = "測試mock test返回"; return json; } export default ({mock}) => { if (!mock) return; Mock.mock(/\/api\/demo\/detail/, 'get', getFakeDetail); Mock.mock(/\/api\/demo\/test-detail/, 'get', getFakeTestDetail); } ~~~ * `/mock/index.js` : ~~~ import user from './user'; import menu from './menu'; import demo from './demo'; /** * 模擬數據mock * * mock是否開啟模擬數據攔截 */ user({mock: true}); menu({mock: true}); demo({mock: true}); ~~~ * `/api/demo/demo.js` : ~~~ import request from '@/router/axios'; export const getDetail = () => { return request({ url: '/api/demo/detail', method: 'get', }) } export const getTestDetail = () => { return request({ url: '/api/demo/test-detail', method: 'get', }) } ~~~ * `/views/demo/demo.vue` : ~~~ <template> <div> <h1>hello saber! im bladex!</h1> <x-button></x-button> </div> </template> <script> import {getDetail, getTestDetail} from '@/api/demo/demo'; export default { name: "demo", data() { return { options: [], value: '' } }, created() { const promise = this.init(); console.log(promise); }, methods: { async init() { const res = await getDetail(); if (res.data.success) { console.log(res.data.data); } else { console.log(res.data.msg); } const resTest = await getTestDetail(); if (resTest.data.success) { console.log(resTest.data.data); } else { console.log(resTest.data.msg); } }, onChange() { console.log(this.value) }, } } </script> <style scoped> </style> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看