SpringBoot+Vue3前后端快速整合入门

前言

最近需要维护一个个人项目,由于笔者是一个大后端,所以借此机会把前端学习过程记录一下,方便后续回顾。

前端项目初始化

安装npm

在前端项目初始化时,我们必须要安装好node,官网地址如下,因为笔者后续会用到vue3所以这里下在的node版本为18.16.0 。

https://nodejs.org/en/download

安装步骤比较简单,就不多赘述了,安装完成后到cmd键入如下命令,若输出node版本号则说明安装成功了。

C:\Users\xxx>node -v
v18.16.0

为了加速后续各种依赖的下载,我们建议注册淘宝镜像,命令为

npm get registry --显示当前的镜像网址
npm config set registry http://registry.npm.taobao.org -- 使用淘宝的镜像网址

完成后全局安装一下vue-cli

npm install -g /cli.0.8

创建前端文件,使用命令初始化前端项目

创建一个名为web的前端项目

vue create web 

首先进入选择页面,我们直接选择第3个选项,即自定义创建前端项目。

Vue CLI v5.0.8
? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint)
> Manually select features

然后进入选择页面使用空格键选择对应选项,完成后如下所示,可以看到笔者勾选了

  1. Babel
  2. Router
  3. Vuex
  4. Linter / Formatter

选择的界面如下,带*号的就是笔者所选择的。

? Check the features needed for your project:() Choose Vue version
>(*) Babel(*) TypeScript( ) Progressive Web App (PWA) Support(*) Router(*) Vuex( ) CSS Pre-processors(*) Linter / Formatter( ) Unit Testing( ) E2E Testing

然后我们就可以进入后续的配置了:

首先我们的vue选择3.0版本

# 选择vue3.0
? Choose a version of Vue.js that you want to start the project with 3.x 

路由选择历史模式

# 使用历史模式的router
? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) y

然后是代码检查,这里我们就选择简单的报错检查就行了

# 代码检查仅用于仅用于预防错误
? Pick a linter / formatter config:
> ESLint with error prevention onlyESLint + Airbnb configESLint + Standard configESLint + PrettierTSLint (deprecated)

接下来是配置选择的时机,我们选择保存时检查即可

# ESLint 保存时触发检查
? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) Lint on save( ) Lint and fix on commit

然后我们选择将配置存到package.json中

# router等配置文件单独存放不和package.json一起
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
> In dedicated config filesIn package.json

最后将模板配置为一个web的模板即可

  # 上述初始化操作保存为一个模板,名字为web
? Save this as a preset for future projects? Yes
? Save preset as: web

自此就生成一个前端文件夹,整体文件结构如下:

在这里插入图片描述

此时,我们不妨键入以下命令尝试将项目启动

 $ cd web$ npm run serve

然后我们到浏览器键入

http://localhost:8080/

自此我们的前端架子就初始化完成了。

在这里插入图片描述

前端项目结构介绍

整体结构如下所示,每个文件夹的含义分别是:

  1. node_modules:类似后端中maven在pom引入依赖后,导入的依赖一样,这个node_modules就是前端依赖引入的位置。
  2. public:存放静态文件的位置。
  3. assets:log文件存放处。
  4. components:编写自己的通用vue组件的文件夹。例如你的网站有通用的header和footer,就可以抽取一个组件,存放到这个位置,然后引入到需要的页面即可。
  5. router:存放页面请求的每一个路由以及路由到达的vue组件位置。
  6. store:存放全局变量的位置。
  7. views:存放视图文件的位置。

├─node_modules└─__tests__
├─public
└─src├─assets├─components├─router├─store└─views

我们在前端根目录还会看到一个package.json和package-lock.json这些都说vue配置依赖版本的文件,其中package-lock.json是我们完成依赖安装后索引版本的文件,后续如果我们删除node_modules在进行npm install的话,对应依赖版本都会以这个文件为主。

在这里插入图片描述

整合ant-design-vue

引入依赖

我们在这步骤需要引入ant-design-vue以及它的样式、标签等,所以我们需要依次键入如下命令,注:这些命令都来自官网,如果版本有变,读者可以到官网cv最新的命令。

npm install ant-design-vue --save
npm install --save -design/icons-vue

然后main.js全局引入对应的这些配置即可

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'// 全局引入ant-design-vue 以及css样式
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';//图标
import * as Icons from '@ant-design/icons-vue';const app = createApp(App);
app.use(Antd).use(store).use(router).mount('#app');// 全局使用图标
const icons = Icons;
for (const i in icons) {app.component(i, icons[i]);
}

配置官网完成基本样式、标签整合

这里笔者就是通过官网复制粘贴+调整,就完成了一个网站的初步搭建,感兴趣的读者可以自行查阅调试,由于没有什么很高深的技巧,所以笔者就不多赘述了。

Ant Design Vue

唯一需要注意的就是选择3.0的文档。

在这里插入图片描述

header、footer组件化

我们都知道网站的头部和页脚都是通用的,所以我们建议将这些部分抽取出来,存放到上文所说的component文件夹中

Footer.vue为例,笔者的代码如下,可以看到代码非常简单,声明样式之后引入defineComponent,并且将这个组件命名为Footer

<template><a-layout-footer style="text-align: center">Ant Design ©2018 Created by Ant UED</a-layout-footer>
</template><script>import {defineComponent} from 'vue';export default defineComponent({name: 'Footer',});
</script><style scoped></style>

然后我们在核心组件app.vue中引入,核心代码如下,可以看到使用import 之后就可以使用 <Footer/>就可以将页脚的样式引入了。

<template><a-layout><Header/><router-view/><Footer/></a-layout></template>
<script lang="ts">import {defineComponent, ref} from 'vue';import Header from '@/components/Header.vue'; // @ is an alias to /srcimport Footer from '@/components/Footer.vue'; // @ is an alias to /src</script >

最后就是核心配置文件main.js,如下所示,他引入的全局都需要用到的组件,通过import 引入,通过use将其整合到app组件中。这就是为什么初始化时我们的app.vue可以直接使用路由等功能。

import {createApp} from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';const app = createApp(App);app.use(store).use(router).use(Antd).mount('#app')

到此位置我们基本的东西都引入了,我们不妨拿这个vue文件测试一下看看引入是否成功

在这里插入代码片

输入如下内容,可以看到笔者直接从官网抄了两个组件贴上去

<template><div class="about"><a-button>Add</a-button> <step-forward-outlined /></div>
</template>

而页面确实输出了对应的样式,由此可知我们的配置步骤成功了。

在这里插入图片描述

前端引入axios

为了能够请求后端接口,我们需要使用如下命令完成axios安装

npm install axios --save

完成后,我们即可直接import使用了,如下所示这就是笔者基于axios发起的get命令示例

  import axios from 'axios';import {defineComponent} from 'vue';export default defineComponent({name: 'Header.vue',setup() {let name="xiaoming";axios.get("http://127.0.0.1:8081/hello/"+name).then((resp) => {console.log(resp.data);alert(resp.data);});}});

后端项目初始化

get请求

为了测试前后端交互,我们编写了一个restful接口。


public class HelloController {("/hello/{name}")public String hello(("name") String name) {return "hello" + name;}
}

因为前后端处于不同端口存在跨域问题,所以我们后端还需要增加一段代码。+



public class CorsConfig implements WebMvcConfigurer {public void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 允许所有路由.allowedOriginPatterns("*") // 允许所有来源.allowedHeaders(CorsConfiguration.ALL) // 允许所有请求头.allowedMethods(CorsConfiguration.ALL) // 允许所有请求方法.allowCredentials(true) // 允许前端带上凭证(例如 cookie).maxAge(3600); // 1小时内不需要再预检(发 OPTIONS 请求)}
}

测试

最后刷新页面,可以看到alert输出后端的响应结果,说明整合成功了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.【Multisim仿真】数电模电学习,仿真软件的初步使用

学习计划路径&#xff1a; >Multisim电路仿真软件熟练掌握 >数字电路基础课程 >逻辑电路设计与应用 >熟练掌握存储器、脉冲波形发生器、D/A和A/D转换器原理 >基本元器件熟练掌握 >晶体管放大电路及负反馈放大电路 >集成运算放大器设计 >电压变电流电路…

解决GateWay报错:Exceeded limit on max bytes to buffer : 262144

场景&#xff1a; 前端传来了一个大的字符串 发现请求不通 一番调试发现SpringGateway 默认内存缓冲区262144字节 网上查了很多种常见的解决方案无效之后 直接重写底层 网友的解决方案 方案1&#xff08;无效&#xff09; 直接修改缓冲区大小 spring:codec:max-in-memory-s…

【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)

00. 目录 文章目录 00. 目录01. GPIO之LED电路图02. GPIO之LED接线图03. LED闪烁程序示例04. LED闪烁程序下载05. LED流水灯接线图06. LED流水灯程序示例07. 蜂鸣器接线图08. 蜂鸣器程序示例09. 下载10. 附录 01. GPIO之LED电路图 电路图示例1 电路图示例2 02. GPIO之LED接线图…

持续集成交付CICD:Jenkins使用GitLab共享库实现自动上传前后端项目Nexus制品

目录 一、实验 1.GitLab本地导入前后端项目 2.Jenkins新建前后端项目流水线 3.Sonarqube录入质量阈与质量配置 4.修改GitLab共享库代码 5.Jenkins手动构建前后端项目流水线 6.Nexus查看制品上传情况 7.优化代码获取RELEASE分支 8.优化Jenkins流水线项目名称 一、实验 …

计算机网络:数据链路层(网桥)

带你速通计算机网络期末 目录 一、冲突域和广播域 二、网桥介绍 三、网桥分类—―透明网桥 四、网桥分类―—源路由网桥 五、多接口网桥―—以太网交换机 总结 一、冲突域和广播域 冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只…

华为数通---配置基本QinQ示例

QinQ简介 定义 QinQ&#xff08;802.1Q-in-802.1Q&#xff09;技术是一项扩展VLAN空间的技术&#xff0c;通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能&#xff0c;可以使私网VLAN透传公网。由于在骨干网中传递的报文有两层802.1Q Tag&#x…

MySQL之DQL语句

DQL语句 DQL&#xff08;Data Query Language&#xff09;查询数据 操作查询&#xff1a;select简单的查询&#xff0c;复杂的查询数据库中最核心的语言&#xff0c;最重要的语句使用频繁的语句 指定查询 查询全部 语法&#xff1a; select 全部字段&#xff08;*&#x…

什么是tomcat?tomcat是干什么用的?

目录 Tomcat 的主要用途包括&#xff1a; 托管Java Web应用程序&#xff1a; Servlet 容器&#xff1a; 以下是关于Servlet容器的一些关键特性和功能&#xff1a; 生命周期管理&#xff1a; 多线程支持&#xff1a; HTTP请求处理&#xff1a; HTTP响应生成&#xff1a;…

金融众筹系统源码:适合创业孵化机构 附带完整的搭建教程

互联网技术的发展&#xff0c;金融众筹作为一种新型的融资方式&#xff0c;逐渐成为创业孵化机构的重要手段。为了满足这一需求&#xff0c;金融众筹系统源码就由此而生&#xff0c;并附带了完整的搭建教程。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.…

《从入门到精通:AJAX基础知识解析,前端开发中利器》基础篇

目录 学习目标&#xff1a; 学习目录&#xff1a; 学习时间&#xff1a; 学习内容&#xff1a; 什么是 AJAX&#xff1f; 怎么用 AJAX &#xff1f; 认识 URL 协议 域名 资源路径 获取 - 新闻列表 URL 查询参数 axios&#xff0d;查询参数 常用请求方法和数据提…

Jenkins离线安装部署教程简记

前言 在上一篇文章基于Gitee实现Jenkins自动化部署SpringBoot项目中&#xff0c;我们了解了如何完成基于Jenkins实现自动化部署。 对于某些公司服务器来说&#xff0c;是不可以连接外网的&#xff0c;所以笔者专门整理了一篇文章总结一下&#xff0c;如何基于内网直接部署Jen…

ELADMIN - 免费开源 admin 后台管理系统,基于 Spring Boot 和 Vue ,包含前端和后端源码

一款简单好用、功能强大的 admin 管理系统&#xff0c;包含前端和后端源码&#xff0c;分享给大家。 ELADMIN 是一款基于 Spring Boot、Jpa 或 Mybatis-Plus、 Spring Security、Redis、Vue 的前后端分离的后台管理系统。 ELADMIN 的作者在 Github 和 Gitee 上看了很多的项目&…

Java项目学生管理系统六后端补充

班级管理 1 班级列表&#xff1a;后端 编写JavaBean【已有】编写Mapper【已有】编写Service编写controller 编写Service 接口 package com.czxy.service;import com.czxy.domain.Classes;import java.util.List;/*** author 桐叔* email liangtongitcast.cn* description*/ p…

【Jenkins】Centos环境安装Jenkins(通过rpm安装)

在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 1、下载安装Jdk17 下载安装 # 更新您的系统&#xff0c;不一定需要 # sudo yum -y update # 安装将用于下载 Java 17 二进制文件的 wget 命令行工具。 s…

计算机网络传输层(期末、考研)

计算机网络总复习链接&#x1f517; 目录 传输层的功能端口UDP协议UDP数据报UDP的首部格式UDP校验 TCP协议&#xff08;必考&#xff09;TCP报文段TCP连接的建立TCP连接的释放TCP的可靠传输TCP的流量控制零窗口探测报文段 TCP的拥塞控制慢开始和拥塞控制快重传和快恢复 TCP和U…

薅github的羊毛-用pages建自己的博客或静态资源站 - 1/2

注册帐号 准备邮箱注册帐号&#xff0c;在注册界面输入用户名、邮箱及密码完成注册。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 1. 在注册成过程中&#xff0c;会往邮箱发送验证码&#xff0c;请如实填写即可 2. 验证码没错的话&#xff0c;就代…

【Maven】加载 Maven 项目报错 status code: 501, reason phrase: HTTPS Required (501)

问题描述 加载 Maven 项目报错&#xff0c;错误信息如下&#xff1a; status code: 501, reason phrase: HTTPS Required (501)尝试使用 -U 标记(强制更新快照)运行 Maven 导入原因分析 这个错误通常表示 Maven 在尝试从远程仓库下载依赖时遇到了 HTTPS 必需的错误。 解决方…

Mac配置环境变量不生效

Mac配置环境变量不生效 Mac中的环境变量介绍 Mac系统的环境变量&#xff0c;加载顺序为&#xff1a; /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 当然/etc/profile和/etc/paths是系统级别的&#xff0c;系统启动就会加载&#xff0c;后面…

将自己的django项目部署到云服务器(腾讯云centos)

最近自己买了个云服务玩&#xff0c;突然就想把自己写的小项目部署到云服务器上&#xff0c;这样就可以实现公网访问了。以下是整个部署过程和遇到的各种问题的解决方案&#xff0c;有想自己部署自己功能的&#xff0c;可以参考着进行哦。 1、设置好腾讯云的远程登录代码 先给…

HarmonyOS(二)—— 初识ArkTS开发语言(下)之ArkTS声明式语法和组件化基础

前言&#xff1a; 通过前面ArkTS开发语言&#xff08;上&#xff09;之TypeScript入门以及ArkTS开发语言&#xff08;中&#xff09;之ArkTS的由来和演进俩文我们知道了ArkTS的由来以及演进&#xff0c;知道了ArkTS具备了声明式语法和组件化特性&#xff0c;今天&#xff0c;搭…