当前位置: 首页 > news >正文

怎么样查询建设网站周口河南网站建设

怎么样查询建设网站,周口河南网站建设,广南网站制作,wordpress easydigital目录 一、环境搭建 1、新建springboot项目 2、Maven配置 3、配置端口号 4、创建包 5、测试端口是否配置成功 6、定义统一的返回类型 Result类 7、定义全局异常处理 (1)创建自定义异常常量类 ResultCodeEnum (2)创建自定…

目录

一、环境搭建

1、新建springboot项目

2、Maven配置

3、配置端口号

4、创建包

5、测试端口是否配置成功

6、定义统一的返回类型 Result类

7、定义全局异常处理 

(1)创建自定义异常常量类 ResultCodeEnum

(2)创建自定义异常类 CustomException

(3)定义统一异常处理 GlobalExceptionHandler

二、Vue前端搭建

1、创建vue项目

2、vue目录介绍

3、启动vue项目

4、管理员后台设计 - 顶部区域设计

(1)左侧logo区域

(2)中间页签区域

① 安装Element

② 导航栏

(3)右侧头像区域

5、管理员后台设计 - 左侧导航栏设计

(1)安装并导入导航栏图标

(2)引入导航栏代码 

 (3)设置导航栏css样式

6、管理员后台设计 - 右侧主页设计

(1)创建后台Home.vue

(2)添加路由

(3)设计css样式

7、404页面

8、前台页面设计 

(1)创建Front.vue

(2)创建前台Home.vue

(3)添加路由

(4)设计css样式

9、安装axios实现前后端数据交互

 (1)安装axios

(2)创建request.js

 (3)前后端交互测试

(4)引入跨域配置

10、动态配置文件env设置

11、设置vite懒加载


一、环境搭建

1、新建springboot项目

2、Maven配置

左上角打开Settings,配置Maven

3、配置端口号

4、创建包

Spring Boot 项目各包的作用与含义  

(1)controller包
- 处理 HTTP 请求 
- 接收前端参数,调用 service 层并返回响应

(2)service包
- 实现 核心业务逻辑
- 调用 mapper 层操作数据库 

(3)mapper包
- 数据库交互层,直接执行 SQL 操作。  
- 使用 MyBatis 访问数据库。  

(4)entity包  
- 定义 数据库表对应的 Java 实体类   

(5)common包
- 存放 通用工具类、常量、配置
- 可能包含 全局返回封装(如 Result 统一响应格式)

(6)exception包  
- 定义 自定义异常  
- 提供 全局异常处理,统一返回错误信息。  


层级调用关系:  

  • controller → service → mapper → entity  
  • common 和 exception 为辅助模块,支撑整个项目

包间关系简述:

  • controller 负责接收前端的请求并返回响应,它就像个前台接待,把活儿交给后面的 service 去处理
  • service 是真正的业务核心,各种复杂的逻辑都在这里实现,同时它还会调用 mapper 去跟数据库打交道
  • mapper 就是个数据库操作工,负责增删改查,而 entity 包则定义了数据库表对应的 Java 实体,相当于数据模型的模板
  • common 是个工具箱,放一些通用的配置、工具类和常量,哪里需要哪里搬
  • exception 专门管异常,不管是系统错误还是业务异常,都能统一处理,避免乱七八糟的错误直接抛给前端

5、测试端口是否配置成功

package com.example.springbase.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController // 表示该类是一个控制器
@RequestMapping("/test") // 给整个控制器设置公共路径前缀,如http://localhost:9999/test
public class TestController {@GetMapping("/hello") // 定义一个GET请求接口,当访问http://localhost:9999/test/hello会使用该方法public String hello(){return "sprintboot启动成功!";}
}

点击运行类运行,在网页输入网址localhost:配置的端口号/test/hello,若显示则说明端口配置成功

6、定义统一的返回类型 Result类

common包下新建Result类,作用是:让所有接口的响应格式保持一致,方便前后端协作

       通常我们会封装一个包含 状态码code 返回数据data 和 提示信息msg 的通用对象,这样无论是成功还是失败,前端都能按照固定格式解析数据,而不用针对每个接口单独处理。

       这个 Result 类就像是给接口响应设计的一个标准包装盒。相当于你网购时,商家发货时总要有个统一的包装箱,里面要有订单号(code)、发货单(msg)和商品本身(data),这个类就是做这个事的。

注:alt+insert     快速创建代码,可以快速创建类中get、set、tostring等方法

public class Result {private String code;private String msg;private Object data;public Result(){}public static Result success(){Result result = new Result();result.setCode("200");result.setMsg("请求成功");return result;}public static Result success(Object data){Result result = new Result();result.setCode("200");result.setMsg("请求成功");result.setData(data);return result;}public static Result error(){Result result = new Result();result.setCode("500");result.setMsg("请求失败");return result;}public static Result error(String code,String msg){Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}public static Result error(String msg){Result result = new Result();result.setCode("500");result.setMsg(msg);return result;}public String getCode() {return code;}public String getMsg() {return msg;}public Object getData() {return data;}public void setCode(String code) {this.code = code;}public void setMsg(String msg) {this.msg = msg;}public void setData(Object data) {this.data = data;}
}

测试一下,将TestController类中测试方法进行修改,改为返回Result类

再次刷新页面,成功显示说明咱们的Result类配置成功!

7、定义全局异常处理 

首先在pom.xml文件引入依赖(这个依赖相对于给项目装了个工具箱,内置很多方便工具)

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version>
</dependency>

用来获取日志记录器(Logger)的,通俗来说就是给你的Java类装了个"录音笔",专门用来记录程序运行时的各种信息。

(1)创建自定义异常常量类 ResultCodeEnum

创建位置:common包下新建文件夹enums,用于存放常量类

作用:统一管理项目的状态码和提示信息,相当于给系统所有可能的操作结果(成功/失败/异常等)建立一个标准的"响应代码字典" 

 

package com.example.springbase.common.enums;public enum ResultCodeEnum {SUCCESS("200", "成功"),PARAM_ERROR("400", "参数异常"),TOKEN_INVALID_ERROR("401", "无效的token"),TOKEN_CHECK_ERROR("401", "token验证失败,请重新登录"),PARAM_LOST_ERROR("4001", "参数缺失"),SYSTEM_ERROR("500", "系统异常"),USER_EXIST_ERROR("5001", "用户名已存在"),USER_NOT_LOGIN("5002", "用户未登录"),USER_ACCOUNT_ERROR("5003", "账号或密码错误"),USER_NOT_EXIST_ERROR("5004", "用户不存在"),PARAM_PASSWORD_ERROR("5005", "原密码输入错误"),;public String code;public String msg;ResultCodeEnum(String code, String msg) {this.code = code;this.msg = msg;}
}

(2)创建自定义异常类 CustomException

创建位置:exception包下

 

public class CustomException extends RuntimeException{private String code;private String msg;public CustomException(String code, String msg) {this.code = code;this.msg = msg;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public CustomException(ResultCodeEnum resultCodeEnum) {this.code = resultCodeEnum.code;this.msg = resultCodeEnum.msg;}
}

(3)定义统一异常处理 GlobalExceptionHandler

创建位置:exception包下

专门用来统一处理项目中发生的异常,它的作用相当于一个"异常拦截器",当程序报错时,它会自动捕获并处理,避免直接把难懂的异常堆栈信息抛给前端用户

@ControllerAdvice("com.example.controller")
public class GlobalExceptionHandler {private static final Log log = LogFactory.get();@ExceptionHandler(Exception.class)@ResponseBody // 返回json串public Result error(Exception e) {log.error("异常信息:", e);return Result.error();}@ExceptionHandler(CustomException.class)@ResponseBody // 返回json串public Result error(CustomException e) {  //自定义异常log.error("异常信息:", e);return Result.error(e.getCode(), e.getMsg());}
}
  • @ControllerAdvice("com.example.controller")
    表示只监控com.example.controller包下的所有控制器(Controller),如果这些控制器里的方法抛出异常,就会被这个类捕获。

  • @ExceptionHandler(Exception.class)
    声明这个方法专门处理Exception类型的异常(包括其所有子类,相当于能抓所有类型的错误)。

  • @ResponseBody
    让返回的结果自动转成JSON格式(比如返回Result.error()会变成{"code":"500","msg":"请求失败"})。

二、Vue前端搭建

1、创建vue项目

(1)首先确认安装node v20.15.1,后打开项目文件夹,输入cmd进入命令框

(2)在命令框内输入npm create vue@latest,回车运行命令,并安装下图选择

成功运行,可以在项目目录中看到新生成的vue目录,注意:这里【跳过所有示例代码,创建一个空白的Vue项目】选择【

(3)继续在命令框输入命令进行初始化

初始化完成后,生成前端项目默认首页

2、vue目录介绍

以下是vue文件目录:

(1)node_modules【相当于工具箱仓库】

  • 存放项目所有的第三方依赖库

  • 自动管理,不应手动修改

(2)public【相当于前院】

  • 存放无需构建处理的静态资源
  • 这些文件会被直接复制到最终构建目录

(3)src【相当于房子主体建筑】

  • 项目核心源代码目录
  • 包含以下重要子目录和文件
  • assets【相当于装修材料贮藏室】
    • 存放需要经过构建处理的静态资源(如图片、样式等)
  • components【相当于可移动的家具】
    • 像沙发、餐桌这些可移动的东西(可复用组件)

    • 比如按钮、导航栏这种到处都能用的

  • router【相当于房子地图】
    • 记录哪个网址对应哪个房间(路由配置)
  • views【相当于各个房间】
    • 主页客厅(Home.vue)、书房(About.vue)等

    • 每个房间有不同功能

(4)App.vue【相当于房子布局】

  • 决定房子基本结构,比如哪里放客厅、哪里放厨房

(5)main.js【相当于房子地基】

  • 从这里开始建造整个房子(Vue应用初始化)

(6)index.html【相当于大门】

  • 访客最先看到的东西

(7)jsconfig.json【相当于给编译器的导航地图】

(8)package.json 【相当于购物清单】

  • 记录需要哪些工具(依赖库)和施工步骤(脚本命令)
  • 和后端的pom.xml依赖库文件类似

(9)package-lock.json【相当于精确的购物清单】

  • package.json给出一个模糊的依赖,可能会出现我的电脑可以运行,但你的电脑不能运行

(10)vite.config.js【相当于施工图纸】

  • 告诉建筑队(Vite)怎么盖这个房子

3、启动vue项目

(1)App.vue文件内仅保留下图所示代码,其他全部删掉

(2)在package.json中启动vue项目

前端页面布局设计总体步骤:在vue文件中设置布局-->在css文件中具体设置大小、颜色等-->在main.js/index.js绑定css文件

在views文件夹下新建管理员页面Manager.vue,主要负责设计布局

在assets文件夹下创建global.css全局样式、manager.css管理员页面样式,css文件主要负责细节样式设置

4、管理员后台设计 - 顶部区域设计

布局:【左:logo区域  中:页签  右:头像、用户名】

(1)左侧logo区域

① 在assets文件夹下新建img文件夹,并导入logo图片

② 在index.js中引入manager页面路由

{path:'/manager',component:() => import('@/views/Manager.vue')}

③ 在Manager.vue进行顶部左侧布局

      <!--顶部左侧logo区域--><div class="manager-header-left"><img src="@/assets/img/hamb.png" alt=""><div class="title">容堡点餐管理系统</div></div>

④ 在manager.css进行样式设计

/*顶部区域*/
.manager-header{height: 60px;background-color: #FF9F1C;display: flex;align-items: center;box-shadow: 0 1px 4px rgba(0,21,41,.08);
}/*顶部-左侧logo区域*/
.manager-header-left{background-color: #FF9F1C;width: 300px;height: 100%;padding-left: 10px;display: flex;align-items: center;
}/*顶部-左侧logo图片大小*/
.manager-header-left img{width:45px;height: 45px;
}/*顶部-左侧标题字体样式*/
.manager-header-left .title{font-weight: bold;font-size: 20px;margin-left: 10px;color: white;
}

⑤ 在global.css进行全局样式设计

/* 全局设置:所有元素使用 border-box 盒模型(宽度包含 padding 和 border) */
* {box-sizing: border-box;
}/* 重置 body 元素的默认样式 */
body {margin: 0;          /* 清除默认外边距 */padding: 0;         /* 清除默认内边距 */color: #333;        /* 设置默认文字颜色为深灰色 */font-size: 14px;    /* 设置默认字体大小为 14 像素 */
}/* 去除所有链接(<a> 标签)的下划线 */
a {text-decoration: none;
}/* 定义卡片(card)组件的样式 */
.card {background-color: #fff;      /* 白色背景 */border-radius: 5px;         /* 圆角 5 像素 */padding: 10px;              /* 内边距 10 像素 */box-shadow: 0 0 10px rgba(0,0,0,0.1);  /* 轻微阴影效果(注意原代码的 rgba 写法有误,已修正) */
}

⑥ 在Manager.vue引入manager.css样式

⑦ 在main.js引入global.css全局样式 

 

最终效果展示↓

(2)中间页签区域

① 安装Element

Element官网网址:Element - The world's most popular Vue UI framework

页签需要先安装Element-Plus,在idea下方点击命令框terminal,跳转到vue文件,输入指令

npm install element-plus --save

注意:这里如果显示"无法识别npm "的错误提示,可以用管理员身份启动idea,再次输入指令即可 

如果显示下图,说明安装成功!

接着在main.js导入Element

② 导航栏

在Element官网找到Breadcrumb面包屑导航栏,复制下面的代码,粘贴至Manager.vue的顶部中间处

<!--顶部中间页签区域-->
<div class="manager-header-center"><el-breadcrumb separator="/"><el-breadcrumb-item>活动管理</el-breadcrumb-item><el-breadcrumb-item>活动列表</el-breadcrumb-item><el-breadcrumb-item>活动详情</el-breadcrumb-item></el-breadcrumb>
</div>

在manager.css文件修改中部导航栏样式

最终效果展示↓

(3)右侧头像区域

把默认头像导入img文件夹

在Element搜索dropdown下拉框样式,复制下面的代码,粘贴至Manager.vue的顶部右侧处,并进行修改

      <!--顶部右侧头像区域--><div class="manager-header-right"><el-dropdown style="cursor: pointer"> <!--设置鼠标悬停为指针样式 --><div style="padding-right: 20px;display: flex;align-items: center"><!--头像样式 --><img style="width: 35px;height: 35px;border-radius: 50%;" src="@/assets/img/avtar.png" alt=""><span style="margin-left: 5px;color: white">管理员</span></div><template #dropdown><el-dropdown-menu slot="dropdown"><el-dropdown-item>个人资料</el-dropdown-item><el-dropdown-item>修改密码</el-dropdown-item><el-dropdown-item>退出登录</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div>

在manager.css文件修改样式 

最终效果展示↓

最后顶部区域效果展示↓

5、管理员后台设计 - 左侧导航栏设计

(1)安装并导入导航栏图标

在Termial命令框内输入指令cd vue,然后输入以下指令

npm install @element-plus/icons-vue

在main.js导入图标

import * as ElementPlusIconsVue from '@element-plus/icons-vue'for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}

(2)引入导航栏代码 

<!--下方区域左侧导航栏--><div class="manager-main-left"><el-menu :default-active="router.currentRoute.value.path":default-openeds="['1', '2']"router><el-menu-item index="/manager/home"><el-icon><HomeFilled /></el-icon><span>系统首页</span></el-menu-item><el-sub-menu index="1"><template #title><el-icon><Menu /></el-icon><span>信息管理</span></template></el-sub-menu><el-sub-menu index="2"><template #title><el-icon><Menu /></el-icon><span>用户管理</span></template><el-menu-item index="/manager/admin"><template #title><el-icon><User /></el-icon><span>管理员信息</span></template></el-menu-item></el-sub-menu></el-menu></div>
  1. :default-active

    • 绑定当前路由路径router.currentRoute.value.path,使菜单能高亮显示当前页面对应的菜单项

  2. :default-openeds

    • 默认展开index为'1'和'2'的sub-menu子菜单

    • 数组中的值对应sub-menu的index属性

  3. router

    • 开启此属性后:

    • 点击菜单项时会自动进行路由跳转

    • 菜单项的index会被当作path使用

    • 需要配合vue-router使用

 (3)设置导航栏css样式

.el-menu{width: 200px;height: 100%;background-color: white;
}/*子菜单标题样式*/
:deep(.el-sub-menu__title) {color: #8d8b8b !important;        /* 设置文字颜色为浅灰色 */height: 50px;                 /* 固定高度 */line-height: 50px;            /* 行高与高度相同实现垂直居中 */background-color: rgba(255, 159, 28, 0.05) !important;  /* 橙色背景 */
}/* 当前激活菜单项样式 */
.el-menu .is-active {color: #fff !important;        /* 白色文字 */background-color: rgba(255, 159, 28, 0.55) !important;  /* 淡橙背景 */
}/* 非激活菜单项的悬停状态 */
.el-menu-item:not(.is-active):hover {color: #fff !important;        /* 悬停时白色文字 */background-color: rgba(255, 159, 28, 0.55) !important;  /* 悬停时橙色背景 */
}/* 子菜单项颜色 */
.el-menu-item{color: #8d8b8b !important;
}/* 子菜单标题的悬停状态 */
.el-sub-menu__title:hover {color: #fff;                  /* 悬停时文字变为白色 */
}/* 嵌套菜单项的缩进样式 */
.el-menu--inline .el-menu-item {padding-left: 40px !important;  /* 增加左侧缩进 */
}

最终效果展示↓

6、管理员后台设计 - 右侧主页设计

(1)创建后台Home.vue

<template><div><div class="card">您好!欢迎使用容堡在线点餐系统!</div></div>
</template>

(2)添加路由

在index.js加入Home.vue路由路径

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path:'/manager',component:() => import('@/views/Manager.vue'),children:[{path:'home',component:() => import('@/views/manager/Home.vue'),}]}],
})export default router

然后在Manager.vue编写代码

<!--下方区域右侧主页--><div class="manager-main-right"><RouterView /></div>

(3)设计css样式

/*下方-右侧主页样式*/
.manager-main-right {flex: 1;width: 0;background-color: #f8f8ff;padding: 10px;
}

最终效果展示↓

7、404页面

(1)先找一张404图片加入img文件夹

(2)在views文件夹下新建404.vue

<template><div><div style="height: 100vh; display: flex; justify-content: center; align-items: center"><div style="width: 30%"><img src="@/assets/img/404.png" alt="" style="width: 100%"><div style="font-size: 30px; text-align: center">找不到页面啦!<router-link to="/">请返回主页</router-link></div><!--to: 指定目标路由路径(此处为根路径 "/")--></div></div></div>
</template>

(3)在index.js引入路由

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path:'/',redirect:'/manager/home'}, // 访问/时自动跳转到/manager/home{ // 管理台主布局路由(嵌套路由)path:'/manager',component:() => import('@/views/Manager.vue'),children:[{ path:'home',meta:{name:'活动详情'},component:() => import('@/views/manager/Home.vue'),}]},// 404页面{ path:'/404',component:() => import('@/views/404.vue')},// 捕获所有未匹配的路由{ path:'/:pathMatch(.*)',redirect:'/404'} // 动态路径参数匹配任意路径,重定向到404页面],
})export default router

 最终效果展示↓

8、前台页面设计 

(1)创建Front.vue

<template><div><div class="front-header"><!--前台-顶部左侧--><div class="front-header-left"><img src="@/assets/img/hamb.png" alt=""><div class="title">项目前台</div></div><!--前台-顶部中间--><div class="front-header-center"><el-menu :default-active="router.currentRoute.value.path" router mode="horizontal"><el-menu-item index="/front/home">首页</el-menu-item><el-menu-item index="/front/person">个人中心</el-menu-item></el-menu></div><!--前台-顶部右侧--><div class="front-header-right"><div v-if="!data.user.id"> <!--如果没有登录--><el-button>登录</el-button><el-button>注册</el-button></div><div v-else><el-dropdown style="cursor: pointer; height: 60px"><div style="display: flex; align-items: center"><img style="width: 40px; height: 40px; border-radius: 50%;" src="@/assets/img/avtar.png" alt=""><span style="margin-left: 5px;">管理员</span><el-icon><arrow-down /></el-icon></div><template #dropdown><el-dropdown-menu><el-dropdown-item>退出登录</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div></div></div><!--前台-主体--><div class="main-body"><RouterView /></div></div>
</template><script setup>
import router from "@/router/index.js";   // 获取 router 实例
import { reactive } from "vue";const data = reactive({user: {}
})
</script><style scoped>
@import "@/assets/css/front.css";  /*引入css样式*/
</style>

(2)创建前台Home.vue

<template><div class="main-content">前台首页</div>
</template>

(3)添加路由

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path:'/',redirect:'/manager/home'}, // 访问/时自动跳转到/manager/home{ // 管理台主布局路由(嵌套路由)path:'/manager',component:() => import('@/views/Manager.vue'),children:[{ path:'home',meta:{name:'活动详情'},component:() => import('@/views/manager/Home.vue'),}]},{ // 前台布局路由(嵌套路由)path:'/front',component:() => import('@/views/Front.vue'),children:[{ path:'home',meta:{name:'活动详情'},component:() => import('@/views/front/Home.vue'),}]},// 404页面{ path:'/404',component:() => import('@/views/404.vue')},// 捕获所有未匹配的路由{ path:'/:pathMatch(.*)',redirect:'/404'} // 动态路径参数匹配任意路径,重定向到404页面],
})export default router

(4)设计css样式

.front-header {display: flex;height: 60px;line-height: 60px;border-bottom: 1px solid #eee;
}.front-header-left {width: 350px;display: flex;align-items: center;padding-left: 30px;
}.front-header-left img {width: 40px;height: 40px;border-radius: 50%;
}.front-header-left .title {color: #333;cursor: pointer;margin-left: 10px;font-size: 20px;font-weight: bold;
}.front-header-center {flex: 1;
}.front-header-right {padding-right: 20px;
}.main-content {width: 80%;margin: 5px auto;
}/*Element-Plus样式覆盖*/
.el-menu--horizontal {border: none !important;height: 59px;
}
.el-tooltip__trigger {outline: none;
}

最终效果展示↓

9、安装axios实现前后端数据交互

 (1)安装axios

 npm i axios -S

(2)创建request.js

import axios from "axios";
import {ElMessage} from "element-plus";const request = axios.create({baseURL: 'http://localhost:9999', //这里填后端设置的端口号timeout: 30000  // 后台接口超时时间
})// request 拦截器
// 可以自请求发送前对请求做一些处理
request.interceptors.request.use(config => {config.headers['Content-Type'] = 'application/json;charset=utf-8';return config
}, error => {return Promise.reject(error)
});// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(response => {let res = response.data;// 如果是返回的文件if (response.config.responseType === 'blob') {return res}// 兼容服务端返回的字符串数据if (typeof res === 'string') {res = res ? JSON.parse(res) : res}return res;},error => {if (error.response.status === 404) {ElMessage.error('未找到请求接口')} else if (error.response.status === 500) {ElMessage.error('系统异常,请查看后端控制台报错')} else {console.error(error.message)}return Promise.reject(error)}
)export default request

 (3)前后端交互测试

在管理员Home.vue中加入接口测试

<script setup>
// 1. 导入自定义的请求工具
// request.js封装了axios的HTTP请求工具import request from "@/utils/request.js";// 2. 发起GET请求
// 使用封装的request工具调用RESTful APIrequest.get('/test/hello').then(res=>{console.log(res) // 在控制台输出响应数据})
</script>

按F12 在console看到出现【跨域错误】

(4)引入跨域配置

在后端代码新建config文件夹,新建CorsConfig

package com.example.springbase.common.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;/*** 跨域配置*/
@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置return new CorsFilter(source);}
}

 运行后端代码,回到网页在控制台看到返回的数据,说明前后端跨域成功!

10、动态配置文件env设置

.env.development 是前端项目中专门用于开发环境的配置文件,它存储开发阶段所需的变量

生产环境.env.production)隔离,确保开发和生产环境使用不同的配置。

接着在request引入配置好的URL

重新运行后端代码,成功实现动态URL配置

11、设置vite懒加载

Vite 的懒加载是一种优化技术,它允许将代码拆分成多个小块,在需要时才动态加载,而不是在应用初始化时一次性加载所有代码。

vite.config.js文件中加入相关组件

// 预加载项目必需的组件optimizeDeps: {include: ["vue","vue-router","axios","element-plus/es/components/base/style/css","element-plus/es/components/message/style/css","element-plus/es/components/message-box/style/css","element-plus/es/components/form/style/css","element-plus/es/components/form-item/style/css","element-plus/es/components/button/style/css","element-plus/es/components/input/style/css","element-plus/es/components/input-number/style/css","element-plus/es/components/switch/style/css","element-plus/es/components/upload/style/css","element-plus/es/components/menu/style/css","element-plus/es/components/col/style/css","element-plus/es/components/icon/style/css","element-plus/es/components/row/style/css","element-plus/es/components/tag/style/css","element-plus/es/components/dialog/style/css","element-plus/es/components/loading/style/css","element-plus/es/components/radio/style/css","element-plus/es/components/radio-group/style/css","element-plus/es/components/popover/style/css","element-plus/es/components/scrollbar/style/css","element-plus/es/components/tooltip/style/css","element-plus/es/components/dropdown/style/css","element-plus/es/components/dropdown-menu/style/css","element-plus/es/components/dropdown-item/style/css","element-plus/es/components/sub-menu/style/css","element-plus/es/components/menu-item/style/css","element-plus/es/components/divider/style/css","element-plus/es/components/card/style/css","element-plus/es/components/link/style/css","element-plus/es/components/breadcrumb/style/css","element-plus/es/components/breadcrumb-item/style/css","element-plus/es/components/table/style/css","element-plus/es/components/tree-select/style/css","element-plus/es/components/table-column/style/css","element-plus/es/components/select/style/css","element-plus/es/components/option/style/css","element-plus/es/components/pagination/style/css","element-plus/es/components/tree/style/css","element-plus/es/components/alert/style/css","element-plus/es/components/radio-button/style/css","element-plus/es/components/checkbox-group/style/css","element-plus/es/components/checkbox/style/css","element-plus/es/components/tabs/style/css","element-plus/es/components/tab-pane/style/css","element-plus/es/components/rate/style/css","element-plus/es/components/date-picker/style/css","element-plus/es/components/notification/style/css","element-plus/es/components/image/style/css","element-plus/es/components/statistic/style/css","element-plus/es/components/watermark/style/css","element-plus/es/components/config-provider/style/css","element-plus/es/components/text/style/css","element-plus/es/components/drawer/style/css","element-plus/es/components/color-picker/style/css",],},

简单脚手架页面展示

http://www.dtcms.com/a/535107.html

相关文章:

  • 网站建设公司国内技术最强垂直型网站名词解释
  • 网站开发的技术流程建设网站需要从哪方面考虑
  • 用easyui皮肤做漂亮的网站有没有人通过网站建设卖东西的
  • 在服务器上布网站怎么做抖音企业号官网入口
  • 服装网站建设比较好中国发达国家还有多远
  • 自己做的旅游网站简介网页制作教学
  • python 做网站 用哪个框架好四川省造价工程信息网
  • 咸阳学校网站建设公司创建简易个人网站
  • 美食网站 怎么做找承包工程的平台
  • 网站内部链接优化方法北京市住房城乡建设厅网站首页
  • 关于网站策划的说法错误的是网页设计入门与应用
  • 通州宋庄网站建设如何设计网站首页
  • 银川做网站的有哪些网站建站前seo注意
  • 证券投资网站做哪些内容河南工程建设 协会网站
  • 外贸品牌网站设计公司wordpress最新列表
  • 崇明网站怎么做seo南通网站建设团队
  • 广州番禺区职业技术学校中职芜湖做网站优化
  • 西部数码网站管理助手ftp怎么制作公众号微信
  • 贵阳建设网站培训山东网站营销
  • 中英双语网站建设漫画网站开发源码
  • 哪个网站上做ppt比较好看的自己做网站并让别人访问
  • 网站icp查询现在有哪些免费推广平台
  • 沈阳网站网站建设中职网站建设课件
  • 吴博 wordpress360优化大师下载官网
  • 餐饮公司网站建设设计得很好的企业网站
  • 你第一个物流网站建设方案个人网站建设发布信息
  • 天津网站推广方法成都室内设计公司排名
  • 天津网站设计建设wordpress文章阅读书
  • 非凡软件站常见的网络营销方式
  • 图标网站导航制作怎么做高端网站制作网站设计