欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue請求函數(shù)和路由的安裝使用過程

 更新時間:2024年08月22日 09:50:25   作者:qhahaha~  
這篇文章主要介紹了vue請求函數(shù)和路由的安裝使用過程,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

【5.0】vue請求函數(shù)和路由

此處是與后端交互發(fā)送請求拿到數(shù)據(jù),和vue自己中的頁面跳轉(zhuǎn)路由

【一】axios使用

【1】安裝

終端命令

npm install axios -S

【2】基本語法

axios.get('后端地址(django)').then(res => {
  console.log(res.data.results)
  if (res.data.code == 0) {
	//請求成功,執(zhí)行這里
  } else {
    alert('失敗')
  }
})

【3】axios請求成功,取數(shù)據(jù)

數(shù)據(jù)位置

.then(res => {console.log(res.data.results)...
#真正有效的數(shù)據(jù)在res.data.results中

賦值方法

只要利用了結(jié)構(gòu)數(shù)據(jù)的對應(yīng)性

const film_list = reactive({'results': []})
const getfilm=()=>{
  axios.get('http://127.0.0.1:8000/films/films/').then(res => {
    console.log(res.data)
    // film_list.results=res.data.results
    //解構(gòu)賦值
    // Object.assign(film_list.results, res.data.results)
    //解構(gòu)賦值
    // let {results,code,msg}=res.data
    // Object.assign(film_list.results, results)
    //解構(gòu)賦值
    // let {data:{results}}=res
    // Object.assign(film_list.results, results)
    //解構(gòu)賦值
    // let {data}=res
    // Object.assign(film_list, data)
 })}

【二】async和await

【1】介紹

  • 兩者搭配,定義了一個攜程函數(shù),如果函數(shù)中有io操作,就寫await,之前then中的值,可以直接復(fù)制給一個變量
  • 其實就是并發(fā)的操作,先去發(fā)送請求,這邊也在等著接收數(shù)據(jù),如果成功了就把數(shù)據(jù)拿過來,不成功就提示錯誤,而不是一步等一步執(zhí)行

【2】使用

async function load() {
	//將需要執(zhí)行一會的函數(shù)變成wait
  let res = await axios.get('http://127.0.0.1:8000/films/films/')
  Object.assign(film_list.results, res.data.results)
}
load()

【3】使用二:有正確和錯誤兩個路

下面的例子是套娃,func2是根據(jù)func1的結(jié)果進行走的,同樣可以定義func3接收func2的結(jié)果

async function fun1(){
            return 10
        }
        async function fun2(){
            try{
                let res = await fun1()
                //let res = await Promise.reject("something wrong")
            }catch(e){
                console.log("catch got:"+e)   
            }
            console.log("await got:"+res)
        }
        fun2()

【三】promise語法

【1】介紹

# 前端中的異步編程技術(shù),多線程+線程結(jié)果回調(diào)!

# Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強大。它由社區(qū)最早提出和實現(xiàn),ES6將其寫進了語言標(biāo)準(zhǔn),統(tǒng)一了用法,原生提供了Promise對象。

# 所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作)的結(jié)果。從語法上說,Promise 是一個對象,從它可以獲取異步操作的消息。Promise 提供統(tǒng)一的 API,各種異步操作都可以用同樣的方法進行處理。

# Promise對象有以下兩個特點。

(1)Promise對象代表一個異步操作,有三種狀態(tài):`Pending`(進行中)、`Resolved`(已完成,又稱 Fulfilled)和`Rejected`(已失敗)。只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種狀態(tài),任何其他操作都無法改變這個狀態(tài)。這也是`Promise`這個名字的由來,它的英語意思就是“承諾”,表示其他手段無法改變。

(2)一旦狀態(tài)改變,就不會再變,任何時候都可以得到這個結(jié)果。Promise對象的狀態(tài)改變,只有兩種可能:從`Pending`變?yōu)閌Resolved`和從`Pending`變?yōu)閌Rejected`。只要這兩種情況發(fā)生,狀態(tài)就凝固了,不會再變了,會一直保持這個結(jié)果。

# 生活中案例
你跟你女朋友說,5年后等我賺夠500w就結(jié)婚--》定義函數(shù)

    ? -1 進行中(努力賺錢,其他代碼繼續(xù)執(zhí)行)
    ? -2 成功(賺夠500w---》結(jié)婚)
    ? -3 失?。]賺夠---》分手)

總結(jié):一個請求要轉(zhuǎn)一小會,請求回來只有成功和不成功兩條路,我們可以預(yù)判,并給出兩條路,成功了resolve走一個代碼,失敗了reject和err走另一個代碼

【2】promise運行的兩個結(jié)果

1.實例化promise對象,并且執(zhí)行(類似Java創(chuàng)建線程對象,并且start)
參數(shù): resolve,reject隨意命名,但是一般這么叫!
參數(shù): resolve,reject分別處理成功和失敗的兩個函數(shù)! 成功resolve(結(jié)果)  失敗reject(結(jié)果)
參數(shù): 在function中調(diào)用這里兩個方法,那么promise會處于兩個不同的狀態(tài)
狀態(tài): promise有三個狀態(tài)
pending   正在運行
resolved  內(nèi)部調(diào)用了resolve方法
rejected  內(nèi)部調(diào)用了reject方法
參數(shù): 在第二步回調(diào)函數(shù)中就可以獲取對應(yīng)的結(jié)果 

2.獲取回調(diào)函數(shù)結(jié)果  then在這里會等待promise中的運行結(jié)果,但是不會阻塞代碼繼續(xù)運行

【3】promise代碼

 <script>
 		//【1】函數(shù)編程了promise函數(shù),開始初步執(zhí)行
        let promise =new Promise(function(resolve,reject){
            console.log("promise 開始執(zhí)行")
            //執(zhí)行后的三個結(jié)果(此處可以放代碼,其運行結(jié)果也就下面三種)
            throw new Error("error message")
            resolve("promise 執(zhí)行成功")
            reject("promise 執(zhí)行失敗")
        })
        //【2】請求過去了,開始等,并走下一步
        console.log('11111')
		//【3】這邊是門口等待結(jié)果的
        promise.then(
            function(value){console.log(`promise中執(zhí)行了resolve:${value}`)},
            function(error){console.log(`promise中執(zhí)行了reject:${error}`)}
        )
       //【4】其他代碼
        console.log('222222')
    </script>
 console.log("promise 開始執(zhí)行")
 console.log('11111')
 console.log('222222')
 promise執(zhí)行成功或失敗打印的代碼

【4】catch情況

就是將上面then中成功和不成功的結(jié)果分開,then只走成功的,catch走不成功的

...
promise.then(
        function(resolveValue){console.log(`promise中執(zhí)行了resolve:${resolveValue}`)}
    ).catch(
        function(error){console.log(error)} 
    )

【三】async和promise搭配

【1】介紹

async函數(shù)的結(jié)果會變成promise對象,通過promise可以對兩種情況進行接收成功了就走promise的then,不成功走promise的catch

【2】使用

先定義async類的函數(shù),在將函數(shù)賦給一個promise對象,接收它的執(zhí)行情況

    	async function fun1(){
            //return 10   // 成功狀態(tài),走then
            //throw new Error("異常狀態(tài),走catch")
            //let promise = Promise.resolve("成功狀態(tài),走then")
            let promise = Promise.reject("失敗狀態(tài),走catch")
            return promise--(其實就是return正確和錯誤的結(jié)果)
        }
		//將async對象賦值給promise對象
        let promise =fun1()
        promise.then(
            function(value){
                console.log("success:"+value)
            }
        ).catch(
            function(value){
                console.log("fail:"+value)
            }
        )

【四】vue-router插件

如果在創(chuàng)建的時候沒有選擇router,可以安裝vue-router插件

安裝插件--創(chuàng)建router->index.js-->導(dǎo)入插件-->在main.js中使用

【1】安裝

# 1 需要使用 vue-router 4版本及以上
    npm install -S vue-router@4

【2】路由跳轉(zhuǎn)

需要從vue-router導(dǎo)入,拿到這個類,然后實例化出router和route,可以對跳轉(zhuǎn)路徑和當(dāng)前路徑操作

import {useRouter, useRoute} from 'vue-router'
let router=useRouter() --控制路徑跳轉(zhuǎn)
let route=useRoute() --控制當(dāng)前的路徑

使用

router.push('path名')

【3】前置路由守衛(wèi)

router.beforeEach((to, from, next) => {
    //to 是目標(biāo)地包裝對象  .path屬性可以獲取地址
    //from 是來源地包裝對象 .path屬性可以獲取地址
    //next是方法,不調(diào)用默認(rèn)攔截! next() 放行,直接到達目標(biāo)組件
    //next('/地址')可以轉(zhuǎn)發(fā)到其他地址,到達目標(biāo)組件前會再次經(jīng)過前置路由守衛(wèi)
    console.log(to.path, from.path, next)
    //需要判斷,注意避免無限重定向
    if (to.name == 'home' || to.name == 'login') {
        next()
    } else {
        let token = localStorage.getItem('token')
        if (token) {
            next()
        } else {
            next('/login')
        }
    }
})

【五】pinia任務(wù)管理器

【1】介紹

和vuex一樣,相當(dāng)于一個大容器和任務(wù)分配有專門存放數(shù)據(jù)的地方,有真正執(zhí)行函數(shù)的地方,和vuex相比少了一個任務(wù)分配的過程

【2】管理器語法

import {defineStore} from 'pinia'
export const definedStore = defineStore(
    {
        id: 'storePinia', //必須唯一
        state: () => { // state中用于定義數(shù)據(jù)
            return {
               ....}},
        getters: {// 用于定義一些通過數(shù)據(jù)計算而得到結(jié)果的一些方法 一般在此處不做對數(shù)據(jù)的修改操作 },
        actions: { // 用于定義一些對數(shù)據(jù)修改的方法 }
        } })

definedStore和id名字相關(guān)聯(lián),就類似一類人(用戶/商品這種),數(shù)據(jù)就可以分類存放在不同的任務(wù)管理器中了

【3】創(chuàng)建pinia對象

#### 2 main.js
import {createApp} from 'vue'
import './style.css'
import App from './App.vue'
import router from "./router";
// 導(dǎo)pinia
import {createPinia} from 'pinia'
// 創(chuàng)建pinia對象
let pinia = createPinia()
createApp(App).use(router).use(pinia).mount('#app')

創(chuàng)建store文件夾

store
	--definedStore
	--definedGoods
#不同的文件夾,是不同的任務(wù)管理器
#文件中,創(chuàng)造一個任務(wù)管理器
import {defineStore} from 'pinia'
export const definedStore = defineStore(
    {
        id: 'storePinia', //必須唯一
        state: () => { // state中用于定義數(shù)據(jù)
            return {
               ....}},
        getters: {// 用于定義一些通過數(shù)據(jù)計算而得到結(jié)果的一些方法 一般在此處不做對數(shù)據(jù)的修改操作 },
        actions: { // 用于定義一些對數(shù)據(jù)修改的方法 }
        } })

【六】elementui-plus

安裝

npm install element-plus -S

配置

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
createApp(App).use(router).use(pinia).use(ElementPlus).mount('#app')

使用

https://element-plus.org/zh-CN/component/popover.html
#直接從該地址復(fù)制粘貼即可

到此這篇關(guān)于vue請求函數(shù)和路由的文章就介紹到這了,更多相關(guān)vue請求函數(shù)和路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-quill-editor富文本編輯器上傳視頻功能詳解

    vue-quill-editor富文本編輯器上傳視頻功能詳解

    需求需要實現(xiàn)富文本的功能,同時富文本中還可以上傳視頻和圖片,選來選去最后決定了用這個富文本編輯器,下面這篇文章主要給大家介紹了關(guān)于vue-quill-editor富文本編輯器上傳視頻功能的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 手把手教你如何運行一個前端uniapp項目

    手把手教你如何運行一個前端uniapp項目

    這篇文章主要介紹了如何設(shè)置和運行一個基于uni-app框架的項目,包括安裝必要的軟件、克隆項目并安裝依賴,以及如何使用HBuilderX進行項目運行和調(diào)試,需要的朋友可以參考下
    2025-01-01
  • vue數(shù)據(jù)雙向綁定的注意點

    vue數(shù)據(jù)雙向綁定的注意點

    這篇文章主要為大家詳細(xì)介紹了vue數(shù)據(jù)雙向綁定的注意點,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue+echarts實現(xiàn)數(shù)據(jù)實時更新

    vue+echarts實現(xiàn)數(shù)據(jù)實時更新

    這篇文章主要為大家詳細(xì)介紹了vue+echarts實現(xiàn)數(shù)據(jù)實時更新,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 基于vue-cli創(chuàng)建的項目的目錄結(jié)構(gòu)及說明介紹

    基于vue-cli創(chuàng)建的項目的目錄結(jié)構(gòu)及說明介紹

    下面小編就為大家分享一篇基于vue-cli創(chuàng)建的項目的目錄結(jié)構(gòu)及說明介紹,具有很好的參考價值,希望對大家有所幫助
    2017-11-11
  • vue 路由視圖 router-view嵌套跳轉(zhuǎn)的實現(xiàn)

    vue 路由視圖 router-view嵌套跳轉(zhuǎn)的實現(xiàn)

    這篇文章主要介紹了vue 路由視圖 router-view嵌套跳轉(zhuǎn),主要實現(xiàn)的內(nèi)容有制作一個登錄頁面,跳轉(zhuǎn)到首頁,首頁包含菜單欄、頂部導(dǎo)航欄、主體,標(biāo)準(zhǔn)的后臺網(wǎng)頁格式,菜單點擊顯示不同的頁面,感興趣的小伙伴請參考下面文章內(nèi)容
    2021-09-09
  • vue中設(shè)置height:100%無效的問題及解決方法

    vue中設(shè)置height:100%無效的問題及解決方法

    這篇文章主要介紹了vue中設(shè)置height 100%無效的問題及解決方法,需要的朋友可以參考下
    2018-07-07
  • Vue 中批量下載文件并打包的示例代碼

    Vue 中批量下載文件并打包的示例代碼

    本篇文章主要介紹了Vue 中批量下載文件并打包的示例代碼,用 ajax 將文件下載, 然后用 jszip 壓縮文件, 最后用 file-saver 生成文件,有興趣的可以了解一下
    2017-11-11
  • vue elementUI實現(xiàn)拖拽流程圖效果

    vue elementUI實現(xiàn)拖拽流程圖效果

    這篇文章主要為大家詳細(xì)介紹了如何通過vue elementUI實現(xiàn)拖拽流程圖效果,不引入插件,純手寫實現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • 一文弄懂Vite 配置文件

    一文弄懂Vite 配置文件

    Vite?構(gòu)建環(huán)境分為開發(fā)環(huán)境和生產(chǎn)環(huán)境,不同環(huán)境會有不同的構(gòu)建策略,本文就來介紹下Vite 配置文件,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08

最新評論