Vue3+Elementplus+Axios 入门教程详解

打印 上一主题 下一主题

主题 756|帖子 756|积分 2268

Vue3+Elementplus+Axios 入门教程详解



  • vue3项目创建
  • 安装第三方框架
  • vue整合第三方框架
  • 创建登录组件
  • vue整合axios
1. vue3项目创建

1.1 创建vue3项目,如:vuepro01
 备注:vue项目不会创建,请参考
Vue3 安装与设置 详细教程_安装vue3-CSDN博客

1.2. 测试项目是否正常启动:
1.2.1 进入项目根目次
   cd vuepro01

1.2.2 实行 npm run serve

1.2.3 访问路径即可

2. 安装第三方框架

2.1 第三方框架
    2.1.1 element-plus  办理界面UI题目(基于vue3的UI框架)
    2.1.2 bootstrap   引用基础样式
    2.1.3 axios  异步ajax举行数据交互(用于向后台发送哀求)
    2.1.4 vue-router  路由框架  (可以帮助我们管理应用程序中的路由,从而使用户可以或许访问应用程序的各个部门)
 2.2 在vuepro01 项目中安装
 2.2.1 进入 vuepro01 根目次,实行如下下令
 npm install  element-plus  
 npm install  bootstrap
  npm install  axios  
  npm install   vue-router
   2.2.1 实行如下:

2.2.3 查抄是否安装乐成,实行:npm ls 

3. vue整合第三方框架

3.1 VSCode 打开 vue项目
3.2 创建router路由的设置文件
3.2.1 在src下创建router目次,在router目次下创建index.js文件
3.2.2 index.js 的基本内容
  1. import {createRouter, createWebHistory} from 'vue-router'
  2. //-异步加载组件
  3. import { defineAsyncComponent } from 'vue'
  4. //-路由规则
  5. const myRoutes = [
  6. ]
  7. //-创建路由对象
  8. const router = createRouter({
  9.     history: createWebHistory(),
  10.     routes: myRoutes
  11. })
  12. //-将路由暴露出去,其他文件才能访问
  13. export default router
复制代码
3.3 在 main.js 中导入 框架
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. //导入axios框架
  4. import Axios from 'axios'
  5. //导入bootstrap样式
  6. import 'bootstrap/dist/css/bootstrap.min.css'
  7. //导入ElementPlus框架
  8. import 'element-plus/dist/index.css'
  9. import ElementPlus from 'element-plus'
  10. //导入 router框架
  11. import Router from './router/index.js'
  12. const app = createApp(App)
  13. app.use(ElementPlus)
  14. app.use(Router)
  15. app.mount('#app')
复制代码
3.4 检测ElementPlus是否加载乐成
3.4.1 打开ElementPlus官网,找到组件,将任意组件复制到App.vue中,检测其是否显示即可
        3.4.1.1 首先将App.vue中不相关的内容删除掉,只剩下vue组件框架的基本内容
  1. <template>
  2. </template>
  3. <script>
  4. export default {
  5.   name: 'App',
  6.   components: {
  7.    
  8.   }
  9. }
  10. </script>
  11. <style>
  12. </style>
复制代码
        3.4.1.2 例如:复制 按钮组件的代码
  1. <template>
  2.   <el-row class="mb-4">
  3.     <el-button>Default</el-button>
  4.     <el-button type="primary">Primary</el-button>
  5.     <el-button type="success">Success</el-button>
  6.     <el-button type="info">Info</el-button>
  7.     <el-button type="warning">Warning</el-button>
  8.     <el-button type="danger">Danger</el-button>
  9.   </el-row>
  10.   <el-row class="mb-4">
  11.     <el-button plain>Plain</el-button>
  12.     <el-button type="primary" plain>Primary</el-button>
  13.     <el-button type="success" plain>Success</el-button>
  14.     <el-button type="info" plain>Info</el-button>
  15.     <el-button type="warning" plain>Warning</el-button>
  16.     <el-button type="danger" plain>Danger</el-button>
  17.   </el-row>
  18.   <el-row class="mb-4">
  19.     <el-button round>Round</el-button>
  20.     <el-button type="primary" round>Primary</el-button>
  21.     <el-button type="success" round>Success</el-button>
  22.     <el-button type="info" round>Info</el-button>
  23.     <el-button type="warning" round>Warning</el-button>
  24.     <el-button type="danger" round>Danger</el-button>
  25.   </el-row>
  26.   <el-row>
  27.     <el-button :icon="Search" circle />
  28.     <el-button type="primary" :icon="Edit" circle />
  29.     <el-button type="success" :icon="Check" circle />
  30.     <el-button type="info" :icon="Message" circle />
  31.     <el-button type="warning" :icon="Star" circle />
  32.     <el-button type="danger" :icon="Delete" circle />
  33.   </el-row>
  34. </template>
  35. <script>
  36. export default {
  37.   name: 'App',
  38.   components: {
  39.    
  40.   }
  41. }
  42. </script>
  43. <style>
  44. </style>
复制代码
  3.4.1.3 启动项目,访问链接,出现如下页面即可

  4. 创建登录组件:Login.vue

  4.1 修改App.vue文件,添加router-view组件
  1. <template>
  2.   <router-view></router-view>
  3. </template>
  4. <script>
  5. export default {
  6.   name: 'App',
  7.   components: {
  8.    
  9.   }
  10. }
  11. </script>
  12. <style>
  13. </style>
复制代码
  4.2 访问ElementPlus官网,找到 Form表单组件,在Login.vue页面举行使用
  1. <template>
  2.         <div class="container">
  3.                 <el-row class="h-60">               
  4.                 </el-row>
  5.                 <el-row>
  6.                         <el-col :span="8">       
  7.                         </el-col>
  8.                         <el-col :span="8" class="bg-primary-subtle p-10">
  9.                                 <el-form :model="loginForm"
  10.                                   class="login-container" label-position="left"
  11.                                  label-width="80px" v-loading="loading"  status-icon>
  12.                                         <h4 class="text-center">系统登录</h4>
  13.                                         <div style="margin: 20px" />
  14.                                         <el-form-item label="邮箱" prop="email">
  15.                                             <el-input v-model="loginForm.email" placeholder="邮箱"></el-input>
  16.                                         </el-form-item>
  17.                                         <el-form-item label="密码" prop="password">
  18.                                             <el-input  type="password" v-model="loginForm.pwd" placeholder="密码"></el-input>
  19.                                         </el-form-item>
  20.                                         <el-form-item class="text-center">
  21.                                             <el-button type="primary" class="m-l-20" @click.native.prevent="toLogin()">Login</el-button>
  22.                                                 <el-button type="Reset" class="m-l-20" >Reset</el-button>
  23.                                         </el-form-item>
  24.                                 </el-form>       
  25.                         </el-col>
  26.                 </el-row>
  27.         </div>
  28. </template>
  29. <script setup>
  30.   import { ref  } from 'vue'
  31.   //data
  32.   let loginForm=ref({
  33.     email:"super@a.com",
  34.     pwd:"123123"
  35.   });
  36.   function toLogin(){
  37.     alert('ok')
  38.   }
  39. </script>
  40. <style>
  41. .h-60{
  42.         height: 60px;
  43. }
  44. .p-10{
  45.         padding: 10px;
  46. }
  47. </style>
复制代码
4.3 创建Home.vue 组件
4.3.1 在src/components 目次下创建 Home.vue
4.3.2 Home.vue 组件内容(简单添加几个笔墨即可,例如:我是首页面)
  1. <template>
  2.     <div>
  3.         我是首页面
  4.     </div>
  5. </template>
  6. <script setup>
  7. </script>
  8. <style>
  9. </style>
复制代码
4.4 路由文件的设置:(项目先启动登录页面)
  1. import {createRouter,createWebHistory} from 'vue-router'
  2. //- 异步加载组件
  3. import {defineAsyncComponent} from 'vue'
  4. //- 路由规则
  5. const myRouter = [
  6.     {
  7.         path: '/',
  8.         redirect: '/login'
  9.     },
  10.     {
  11.         path: '/login',
  12.         name: "Login",
  13.         component: defineAsyncComponent(()=>import('../components/Login.vue'))
  14.     },
  15.     {
  16.         path: '/home',
  17.         name: "Home",
  18.         component: defineAsyncComponent(()=>import('../components/Home.vue'))
  19.     }
  20. ]
  21. //- 创建路由对象
  22. const router = createRouter({
  23.     history: createWebHistory(),
  24.     routes: myRouter
  25. })
  26. //全局守卫  访问非Login界面时,验证是否已登录
  27. router.beforeEach((to,from,next)=>{
  28.     //判断是否已登录 查sessionStorage中是否有isAuthenticated信息
  29.     let isAuthenticated = sessionStorage.getItem("isAuthenticated")
  30.     //判断路由的别名不是登录且未进行登录认证,就跳转去登录
  31.     if(to.name!="Login"&&!isAuthenticated){
  32.         next({name: "Login"})
  33.     }else if(to.name=="Login"&&isAuthenticated){//已登录,不允许退回到登录页面
  34.         next({name:"Home"})
  35.     }else{
  36.         next()
  37.     }
  38. })
  39. //-将路由暴露出去,其他文件才能访问
  40. export default router
复制代码
4.4 启动项目,访问项目


5. vue 整合 axios 发起网络哀求

5.1 Login.vue 发起网络哀求
  1. <template>
  2.         <div class="container">
  3.                 <el-row class="h-60">               
  4.                 </el-row>
  5.                 <el-row>
  6.                         <el-col :span="8">       
  7.                         </el-col>
  8.                         <el-col :span="8" class="bg-primary-subtle p-10">
  9.                                 <el-form :model="loginForm"
  10.                                   class="login-container" label-position="left"
  11.                                  label-width="80px" v-loading="loading"  status-icon>
  12.                                         <h4 class="text-center">系统登录</h4>
  13.                                        
  14.                                         <el-form-item label="用户编号">
  15.                                             <el-input v-model="loginForm.adminCode" placeholder="用户编号"></el-input>
  16.                                         </el-form-item>
  17.                                         <el-form-item label="密码">
  18.                                             <el-input  type="password" v-model="loginForm.password" placeholder="密码"></el-input>
  19.                                         </el-form-item>
  20.                                         <el-form-item class="text-center">
  21.                                             <el-button type="primary" class="m-l-20" @click.native.prevent="toLogin()">Login</el-button>
  22.                                                 <el-button type="Reset" class="m-l-20" @click.native.prevent="toReset()">Reset</el-button>
  23.                                         </el-form-item>
  24.                                 </el-form>       
  25.                         </el-col>
  26.                 </el-row>
  27.         </div>
  28. </template>
  29. <script setup>
  30.   import { ref  } from 'vue'
  31.   import axios from 'axios'
  32.   import {useRouter} from 'vue-router'
  33.   //-路由对象
  34.   const router = useRouter()
  35.   //data
  36.   let loginForm=ref({
  37.     adminCode:"",
  38.     password:""
  39.   });
  40.   function toLogin(){
  41.         let url="http://localhost:8080/nep/admins/getAdminsByCode";
  42.                 //post()请求部分       
  43.         axios.post(url,{
  44.                 adminCode:loginForm.value.adminCode,
  45.                 password:loginForm.value.password       
  46.         })//服务响应后,调用的函数  response 响应对象
  47.           .then(function (response) {
  48.                   //response.data 响应正文
  49.             console.log(response.data);
  50.                 //判断服务器响应状态 200成功  422失败
  51.                 if(response.status==200){
  52.                         //1、记录登录状态  sessionStorage
  53.                         //存储在浏览器的缓存中,超时或浏览器关闭 数据丢失
  54.                         //存:sessionStorage.setItem("自定义键",值)
  55.                         //取: sessionStorage.getItem("自定义键")
  56.                         //sessionStorage.setItem("user_token",response.data.access_token)
  57.                         sessionStorage.setItem("isAuthenticated",true)       
  58.                         //登录成功到首页
  59.                         router.push("/home")
  60.                 }
  61.           })//请求异常处理
  62.           .catch(function (error) {
  63.             console.log(error);
  64.           });
  65.   }
  66.   function toReset(){
  67.         loginForm.value.adminCode = ""
  68.         loginForm.value.password = ""
  69.   }
  70. </script>
  71. <style>
  72. .h-60{
  73.         height: 60px;
  74. }
  75. .p-10{
  76.         padding: 10px;
  77. }
  78. </style>
复制代码
 5.2 启动vue项目,通过vue访问后台接口,举行测试,结果跳转到Home页面,则设置乐成,假如出现其他错误提示,请查抄以上步骤那里设置错误,及时调整。
到此,整个过程整理完毕!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表