vue3项目实战+element-plus
记录自己搭建前端项目的学习过程和开发过程,希望一起学习进步
采用Vue3+element-plus+axios+vue-router+sass……(目前刚开始是用到了这些,随着开发慢慢更新)
npm是比较慢的, 所以我用的是pnpm。安装指令:npm i pnpm
简单介绍下作用
Vue3:前端框架,能看我这个博客的应该不用我介绍了吧~
element-plus:前端组件库,以前我比较喜欢naive的样式,最近发现element的支持虚拟化table,可以渲染大量数据,所以这次就选用这个了
axios:类似ajax,主要用于发送请求
vue-router:vue算是单页面框架,路由可以在你的页面中来回跳转这样子。
sass: 支持嵌套css,也还不错,可用可不用。看喜好(我是觉得有比没有好,多学点,虽然不是很重要的一部分)
第一步,使用vite创建初始的vue项目。vite相当于vue脚手架。是目前官方推荐的(对于现在的我来说,好像也没什么区别,反正就是用来初始化一个项目模板~)
指令:pnpm create vite,随后根据提示设置项目名(好像是全部都得小写,我没试过大写会怎么样),选择项目模板vue,选择脚本语言 JS(如果你懂ts更好,因为vue3的官方文档好像都是ts为主,包括组件库也是ts案例)
第二步,安装需要用到的组件库,或者其他的包。
我写的时候是一个一个引入的,比如我先引入element-plus,然后导入,然后测试是否正确引入。然后做了个登录页面,然后再引入了路由,用作登录之后跳转到home主页面,然后引入axios发送请求,再然后觉得css写的不好,引入了sass……下面我直接写对应的指令:
安装element组件库:
pnpm install element-plus安装sass:pnpm i sass
安装 vue-router:pnpm i vue-router
……
其实要用什么,官网都会写指令,我不继续写了。
第三步,假设你此时写了 登录界面Login,登录成功跳转到主界面Home。此时我们不考虑两个界面具体如何,我们要做的就是可以互相跳转。那么此时需要用到的就是路由(vue-router)
可以在main.js里写,但是似乎一般开发都会将其封装成单独的JS文件,然后引入使用,我这里也是如此,我不贴全部的代码了,只做基础的讲解,节省篇幅,我会把我写的项目放到开源的git仓库,大家一起学习吧!
这个是我们封装的router.js文件,目前只有两个.vue页面,那后期页面多的话,行数更多,所以不会直接在main.js去配置。

//导入路由
import { createRouter,createWebHistory } from "vue-router";
//导入vue页面
import Home from '../components/Home.vue'
import Login from '../components/Login.vue'
//设置路由集合
const routes = [
{ path: '/Home/:id?', component: Home },
{path:'/',component:Login}
]
//创建路由实例
const router = createRouter({
history:createWebHistory(),
routes:routes
})
//导出默认路由规则
export default router
main.js引入我们封装的router.js文件,并且挂载app组件上

import { createApp } from 'vue'
import App from './App.vue'
//这个是导入封装的router文件
import router from './config/router.js'
//这个是导入element-plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//创建vue实例
var app = createApp(App)
//使用导入的一些组件库或者封装的文件
app.use(ElementPlus)
app.use(router)
//绑定到id为app的div
app.mount('#app')
此时基本完成了,然后我们需要在app.vue页面的template中加上router-view。这个会把匹配到的路由的页面渲染到此处。
<template>
<router-view></router-view>
</template>
router-link是跳转到对应路由的组件,目前我是没用到,可以做点击跳转的功能。这儿点比较简单,可以看官网学习。我不写了
第四步,完善登录界面,这点比较考验审美和css的基础。
按照常规的H5来做就可以,不过肯定是在element-plus的基础上。可以去官网找到对应的组件模板。我这里使用的是form组件。具体代码我就不多写了。因为官网大部分都有,我回头会把我遇到的坑单独的写出来,然后大家注意下就好了。(主要是js和ts写法有些不一样,会踩坑)
我的登录界面:本身使用了组件库,基本的样式都有,无非是跳转下大小啦,位置啦,显示的文字啦这些,form还有表单验证,也是可以使用的,挺不错的,很好看也很好用

Home页面目前不重要,主要是在于我们登录成功之后能跳转就好了。
第五步,封装axios,用于请求服务端。
(这里是踩了一下坑的……)跟封装router差不多,也是添加一个axios的js文件。导入axios。如果第一次用,可以去官网看看基本的一些配置说明
Axios 中文文档 | Axios 中文网 | Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js (axios-http.cn)
我只封装了 get,post请求。一般来说这两个就足够了

//引入axios
import axios from 'axios'
//根URl,一般就是公共的请求url
const rootUrl = 'http://XXXX/api'
//axios请求实例:
//url是rootUrl后面的具体方法
//methond代表是哪种请求:get,post等
//data:参数放在请求体内
//params:参数拼接在url上
//success:请求成功之后的操作
//err:请求失败的操作
//axios实例中不懂的可以去官网看一下
function https(url, method, data, params, success, err) {
axios({
method: method,
url: url,
data: data,
baseURL: rootUrl,
headers: {
// 'Content-Type':'application/json'
},
params: params,
timeout: 3500,
withCredentials: false
}).then(res => {
if (res.data.state == 200) {
success(res.data)
}
}).catch(function (error) {
console.log(error);
});
}
//导出方法:只做了get和post
export default ({
get: function (url, data, params, success, err) {
https(url, 'get', data, params, success, err);
},
post: function (url, data, params, success, err) {
https(url, 'post', data, params, success, err);
}
})
封装之后别忘了在main.js导入,并且挂载全局!这里我是踩坑的了,小白可以细看下…先贴代码后写结论
(导入路由的部分没一起贴,讲到哪一部分就贴哪一部分的,省的回头太多了也看的迷糊)

import { createApp } from 'vue'
import App from './App.vue'
//导入封装的axios组件
import httpAxios from './config/axios.js'
var app = createApp(App)
//挂载全局
app.provide('axios',httpAxios);
app.mount('#app')
我踩的坑的地方是挂载全局这块儿:大约在半年前,我记得挂载全局使用的是app.config.globalProperties.$api = api(这个api就是你导入的封装好的axios.js的名字)。但是现在这种方法竟然不行了!搜一些vue3的教程就是这样的呀,看官网其实我觉得讲的也不清楚,笑死,就这样查了大半天时间(主要还是尝试解决以config这种写法)…,后来终于找到了一个可以用的。就是我上面代码贴的app.provide('axios',httpAxios);说句丢人的话,我不精通前端,所以官网的解释我一开始就没看懂55…反正是得到了正确的解决方法就好啦~吼吼吼~ provide 和 inject 通常成对一起使用,所以provide挂载全局之后,需要用的地方就要使用inject 。
比如此时我的login页面。点击登录页面,就要请求接口了。不过写这个博客的时候,我请求的接口是发送邮件的接口,所以这里就以发送邮件为案例。
<script setup>
//导入vue里的组件
import { reactive, ref, inject } from 'vue'
//获取axios,这个就是取刚才挂载的全局axios了,后面的''代表如果没用就是''
const axios = inject('axios', '');
//发送邮箱按钮5秒发送一次
function sendMail() {
//发送请求
if (Login.userEmail != null) {
var params = {
email: Login.userEmail
}
axios.get('XXX', null, params, res => {
console.log(res);
});
}
}
</script>
我标红的一部分我要解释下,xxx就是请求的方法,封装axios的时候不是设置了baseurl吗?所以真正请求的url就是baseurl+xxx这个例如baseurl=http://123.com,xxx表示GetCode方法。真正的请求就是http://123.com/GetCode。一般get请求参数在params,所以第二个参数data我就传null了。第三个参数params,第四个是success的回调函数。如果你还是不理解,可以看看封装的axios里面,大概就会明白了。

到了这里,axios也已经正确的配置好了。接下来就要完善登录之后跳转home页面的具体操作了。现在是2023-8-27-23:52,我还没写完,所以暂时博客就到这里了!后面等我做好之后会继续更新的~~~
我可能博客写的不好,如果有错误希望大佬可以指出来,大家一起学习进步~~~~
git地址前端:反正也不被需要/manage-bbs-vue - 码云 - 开源中国 (gitee.com)
git地址后端:Net6WebAPI: 基于Net6的WebAPI项目。仓储模式,封装了基础增删改查,可根据需求自定义或重写基础接口。 (gitee.com)
(能给我点个star更好嘿嘿!)
vue3项目实战+element-plus的更多相关文章
- Vue3 项目实战
使用Vue3 开发一个小米商城 业务流程 登录---> 产品首页--->产品站--->产品详情 购物车--->订单确认--->订单支付--->订单列表 业务开发流程 ...
- FastAPI小项目实战:电影列表(Vue3 + FastAPI)
假期过半, FastAPI + Vue3项目实战 视频也算录完了,尽管项目简单(2张表 共7个接口 4个页面) 起因 在6月底的时候开始录制了FastAPI官方文档中的新手教程部分(实际还没有官网文档 ...
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- 【Vue3+Express实战】项目开发环境搭建
大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- webpack+vue项目实战(四,前端与后端的数据交互和前端展示数据)
地址:https://segmentfault.com/a/1190000010063757 1.前言 今天要做的,就是在上一篇文章的基础上,进行功能页面的开发.简单点说呢,就是与后端的数据交互和怎么 ...
- AngularJS进阶(三十九)基于项目实战解析ng启动加载过程
基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...
- React项目实战:react-redux-router基本原理
React相关 React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架. JSX 本质上来讲,JSX 只是为React.createElement(component, props, .. ...
- selenium(12)-web UI自动化项目实战(PO模式,代码封装)
web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...
- 【electron+vue3+ts实战便笺exe】二、electron+vue3开发内容
不要让自己的上限成为你的底线 本来以为有万字的..没想到才堪堪近6000字.为了水文的嫌疑,只挑了重点的地方讲,比如component内的组件就挑了右键弹窗去说明,建议在看本文的时候边查看项目,有不懂 ...
随机推荐
- Docker挂载jar包运行脚本
下载镜像 docker pull openjdk:8 执行命令 docker run -d -p 9001:8081 -v /opt/springboot-docker-1.0.jar:/var/li ...
- 在 KubeSphere 中监控集群外部 Etcd
作者:张延英(老Z),电信系统集成公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维. 1. 本文简介 本文源于 KubeSphere 开源社区 8 群里的一个小伙伴 @Jam 提到的 Ec ...
- KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 异源数据同步 → DataX 同步启动后如何手动终止?
开心一刻 刚刚和老婆吵架,气到不行,想离婚女儿突然站出来劝解道:难道你们就不能打一顿孩子消消气,非要闹离婚吗?我和老婆同时看向女儿,各自挽起了衣袖女儿补充道:弟弟那么小,打他,他又不会记仇 需求背景 ...
- [Apache Doris] Apache Doris 架构及代码目录解读
一.系统架构 Doris是一个MPP的OLAP系统,主要整合了Google Mesa(数据模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存储格 ...
- 3.13 Linux建立软硬链接文件(ln命令)
如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的.我们在前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统. ...
- RT-Thread Studio刚新建工程后直接打开main.c编译就board.c里产生报错,解决办法
如题,RT-Thread Studio刚新建工程后直接打开main.c编译就产生报错. 具体为:刚新建了一个stm32F407ZGT6和一个STM32F103RCT6的工程,之后啥代码也没有改,直接打 ...
- Zipkin+Sleuth调用链监控集成和使用
背景与需求 跨微服务的API调用发生异常,要求快速定位出问题出在哪里. 跨微服务的API调用发生性能瓶颈,要求迅速定位出性能瓶颈. 集成 整体结构 整体机构为C/S模式,客户端(Sleuth)来监控采 ...
- Help document of CAD Plus Mobile
Help document for Mac 中文使用帮助 If you have any questions, please send email to 3167292926@qq.com 1. Pe ...
- 干货分享:开启PWM调光之门,一起来做呼吸灯
PWM作为一种灵活且高效的信号调制手段,在电气设备的性能控制和调节中发挥着重要作用,常用于电机控制.灯光调光.音频信号生成.加热控制等应用. 本文将以合宙低功耗4G模组经典型号--Air780E为例, ...