亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue搭建簡易前端的思路及問題詳解

 更新時間:2025年01月22日 09:32:27   作者:無語-葬歐  
這篇文章主要介紹了如何使用Vue和ElementPlus構建前端頁面,特別是如何進行跨域請求和使用Vue?Router進行路由管理,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

前文初步了解了組件庫Element Plus,現在正式開始使用vue搭建大事件前端頁面,后端見(springboot以及后續(xù)項目專欄)

大致思路

其中html標簽,css樣式,表單校驗都可以通過Element Plus直接快捷生成,而重點在于調用后天接口和分裝api,以及在其中碰到的問題

問題

表單校驗

el-form標簽上通過rules屬性,綁定校驗規(guī)則

el-form-item標簽上通過prop屬性,指定校驗項

//定義表單校驗規(guī)則
const rules = {
    username:[
        {required:true,message:'請輸入用戶名',trigger:'blur'},
        {min:5,max:16,message:'長度為5-16位非空字符', trigger:'blur'}
    ],
    password:[
    {required:true,message:'請輸入密碼',trigger:'blur'},
    {min:5,max:16,message:'長度為5-16位非空字符',trigger:'blur'}
    ],
    rePassword:[
        {validator:checkRePassword,trigger:'blur'}
    ]
}
 <!-- 注冊表單 -->
<el-form ref="form" size="large" autocomplete="off" v-if="isRegister" :model="registerData" :rules="rules">
<el-form-item>
     <h1>注冊</h1>
</el-form-item>
<el-form-item prop="username">
<el-input :prefix-icon="User" placeholder="請輸入用戶名" v-model="registerData.username"></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input :prefix-icon="Lock" type="password" placeholder="請輸入密碼" v-model="registerData.password"></el-input>
</el-form-item>
<el-form-item prop="rePassword">
<el-input :prefix-icon="Lock" type="password" placeholder="請輸入再次密碼" v-model="registerData.rePassword"></el-input>
</el-form-item>

請求跨域

在研究該問題前,我們先思考發(fā)生的原因:

我們前段頁面的接口為localhost:5173而后端接口為localhost:8080,于瀏覽器的同源策略限制,向不同源(不同協議、不同域名、不同端口)發(fā)送ajax請求會失敗。

因此我們要想辦法避免服務器向服務器發(fā)送請求

解決辦法:配置代理:讓請求在5173端口中,變成向8080發(fā)送請求,就不會存在同源策略

request.js中配置baseURL的值為/api

const baseURL = '/api';
const instance = axios.create({baseURL})

vite.config.js中配置

export default defineConfig({
  server:{
    proxy:{
      '/api':{//獲取路徑中包含了/api的請求
        target:'http://localhost:8080',//后臺服務所在的源
        changeOrigin:true,//修改源
        rewrite:(path)=>path.replace(/^\/api/,"")//把/api替換為空字符串
      }
    }
  }
})

這樣發(fā)送給5173的命令變成了https://localhost:5173/api/******,而到達服務器時,又被文件轉換為https://localhost:8080/********這樣便躲過了同源策略

優(yōu)化axios響應攔截器

在代碼編寫過程中,發(fā)現

import {userRegisterService,userLoginService} from '@/api/user.js'

const register = async () =>{
    //registerData是一個響應式對象,需。value
   let result =  await userRegisterService(registerData.value)
    if(result.code === 0){
    //成功
     alert(result.msg? result.msg:'注冊成功')
    } else{
      //失敗
     alert('注冊失敗')
   }

}

//綁定登錄數據,復用注冊表單的數據模型
//表單數據校驗。復用注冊的數據校驗
//登錄函數
import{useRouter} from 'vue-router'
const router = useRouter()
const login = async() =>{
    //調用接口,完成登錄
    let result = await userLoginService(registerData.value);
     if(result.code === 0){
     //成功
    alert(result.msg? result.msg:'登錄成功')
    } else{
      //失敗
     alert('登錄失敗')
    }

}

有許多重復代碼,

let result = await userLoginService(registerData.value);
     if(result.code === 0){
     //成功
    alert(result.msg? result.msg:'登錄成功')
    } else{
      //失敗
     alert('登錄失敗')
    }

于是便將其整合,結算為一個js文件

const instance = axios.create({baseURL})

//添加響應攔截器
instance.interceptors.response.use(
    result=>{
        //判斷業(yè)務狀態(tài)碼
        if(result.data.code === 0 ){
            return result.data;
        }
        //操作失敗
        // alert(result.data.msg?result.data.msg:'服務異常')   換成好看的
        ElMessage.error(result.data.msg?result.data.msg:'服務異常')
        //異步操作的狀態(tài)轉換為失敗
        return Promise.reject(result.data)

    },
    err=>{
        alert('服務異常');
        return Promise.reject(err);//異步的狀態(tài)轉化成失敗的狀態(tài)
    }
)

export default instance;

代碼簡化為

//調用后臺接口完成注冊
import {userRegisterService,userLoginService} from '@/api/user.js'
const register = async () =>{
    //registerData是一個響應式對象,需。value
   let result =  await userRegisterService(registerData.value)
//    if(result.code === 0){
//     //成功
//     alert(result.msg? result.msg:'注冊成功')
//    } else{
//      //失敗
//      alert('注冊失敗')
//    }
    // alert(result.msg? result.msg:'注冊成功')  換成好看的
    ElMessage.success(result.msg? result.msg:'注冊成功')
}

//綁定登錄數據,復用注冊表單的數據模型
//表單數據校驗。復用注冊的數據校驗
//登錄函數
import{useRouter} from 'vue-router'
const router = useRouter()
const login = async() =>{
    //調用接口,完成登錄
    let result = await userLoginService(registerData.value);
//     if(result.code === 0){
//     //成功
//     alert(result.msg? result.msg:'登錄成功')
//    } else{
//      //失敗
//      alert('登錄失敗')
//    }
    // alert(result.msg? result.msg:'登錄成功')換成好看的
    ElMessage.success(result.msg? result.msg:'登錄成功')
    //跳轉到首頁 路由完成跳轉
    router.push('/')
}

主頁面布局

在編寫多個頁面后,我們發(fā)現,每次登錄的首頁以及跳轉需要改進,由此我們引入了路由(Vue Router)

路由,決定從起點到終點的路徑的進程

在前端工程中,路由指的是根據不同的訪問路徑,展示不同組件的內容

Vue Router是Vue.js的官方路由

使用步驟

  • 安裝vue-router    npm install vue-router@4
  • 在src/router/index.js中創(chuàng)建路由器,并導出
  • 在vue應用實例中使用vue-router
  • 聲明router-view標簽,展示組件內容
//導入vue-router
import { createRouter, createWebHistory } from 'vue-router'
//導入組件
import LoginVue from '@/views/Login.vue'
import LayoutVue from '@/views/Layout.vue'
//定義路由關系
const routes = [
    { path: '/login', component: LoginVue },
    { path: '/', component: LayoutVue }
]
//創(chuàng)建路由器
const router = createRouter({
    history: createWebHistory(),
    routes: routes
});
export default router
import router from '@/router'
app.use(router)

子路由 

對于一個頁面的多個跳轉:

//定義路由關系
const routes = [
    {path:'/login', component:LoginVue},
    {
        path:'/', 
        redirect: '/article/manage',
        component:LayoutVue,
        //子路由
        children:[
            {path:'/article/category', component:ArticleCategoryVue},
            {path:'/article/manage', component:ArticleManageVue},
            {path:'/user/avatar', component:UserAvatarVue},
            {path:'/user/info', component:UserInfoVue},
            {path:'/user/resetPassword', component:UserResetPasswordVue},
        ]
    },
]

//創(chuàng)建路由器
const router = createRouter({
    routes:routes,
    history:createWebHistory()
})

export default router

子路由便是很好的辦法,處理一個路由頁面中還有很多頁面需要跳轉的問題

總結

到此這篇關于vue搭建簡易前端的文章就介紹到這了,更多相關vue搭建前端內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Element中select多數據加載優(yōu)化的實現

    Element中select多數據加載優(yōu)化的實現

    本文主要介紹了Element中select多數據加載優(yōu)化的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue 運用mock數據的示例代碼

    vue 運用mock數據的示例代碼

    本篇文章主要介紹了vue 運用mock數據的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue之表單事件數據綁定詳解

    Vue之表單事件數據綁定詳解

    這篇文章主要為大家介紹了Vue之表單事件的數據綁定,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11
  • Vue計算屬性的使用

    Vue計算屬性的使用

    本篇文章主要介紹了Vue計算屬性的使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue組件實例解析

    vue組件實例解析

    Tag組件其實是一個很小的組件,業(yè)務價值很低,主要用于Vue新手入門。主要實現Vue常用的父組件改變子組件的值,view改變model,model的變化反應到view上,事件的綁定等功能。下面跟著小編一起來看下吧
    2017-01-01
  • Vue3警告:Failed to resolve component:XXX的詳細解決辦法

    Vue3警告:Failed to resolve component:XXX的詳細解決辦法

    最近在一個vue3項目中遇到了報錯,整理了些解決辦法,這篇文章主要給大家介紹了關于Vue3警告:Failed to resolve component:XXX的詳細解決辦法,文中介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 如何在vue 中引入使用jquery

    如何在vue 中引入使用jquery

    這篇文章主要介紹了如何在vue 中引入使用jquery,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue $attrs的使用全面解析

    vue $attrs的使用全面解析

    這篇文章主要介紹了vue $attrs的使用全面解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題

    vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題

    這篇文章主要介紹了vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue3使用el-tooltip插槽達到換行效果

    vue3使用el-tooltip插槽達到換行效果

    本文主要介紹了vue3使用el-tooltip插槽達到換行效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08

最新評論