第27周JavaSpringboot 前后端联调
电商前后端联调课程笔记
一、项目启动与环境搭建
1.1 项目启动
在学习电商项目的前后端联调之前,需要先掌握如何启动项目。项目启动是整个开发流程的基础,只有成功启动项目,才能进行后续的开发与调试工作。
1.1.1 环境安装
环境安装是项目启动的前提条件,主要包括安装 Node.js 和 Yarn 两个重要的工具。Node.js 是一个 JavaScript 运行时环境,用于服务器端的 JavaScript 代码执行;Yarn 则是一个快速、可靠、安全的依赖管理工具,能够帮助开发者方便地安装、管理和更新项目所需的各类依赖包。
-
Node.js 安装:推荐安装长期支持版(LTS),版本需与课程保持一致,以避免出现兼容性问题。安装过程中,要注意选择正确的操作系统版本,并按照安装向导逐步完成安装。Node.js 的安装较为简单,通常只需下载安装包并运行即可。
-
Yarn 安装:Yarn 的安装同样需要根据操作系统选择合适的安装方式。对于 Mac OS 系统,可以使用 Homebrew 进行安装;对于 Windows 系统,可以从官网下载安装包并运行安装向导。安装完成后,可以通过在命令行输入
yarn --version来验证 Yarn 是否安装成功。
1.1.2 项目启动流程
安装完环境后,接下来就可以启动项目。首先,需要在项目的根目录下运行 yarn install 命令来安装项目所需的依赖包。这一步骤会根据项目配置的 package.json 文件,自动下载并安装所列出的所有依赖。安装完成后,运行 yarn serve 命令即可启动项目。项目启动后,会在控制台输出本地和网络访问地址,通过浏览器访问这些地址,就可以查看项目的运行效果,确保项目能够正常启动和访问。
1.2 项目目录介绍
了解项目的目录结构对于开发和维护项目至关重要。一个清晰、合理的目录结构能够帮助开发者快速定位文件、理解项目架构,并提高开发效率。
-
dist 文件夹:该文件夹是项目部署上线后生成的,包含经过压缩和优化的 CSS、图片、JS 文件等静态资源,用于服务器的部署和发布。这些文件是项目在生产环境中实际运行所使用的,经过了打包和优化,以提高加载速度和性能。
-
node_modules 文件夹:存放项目所依赖的第三方模块和包,这些依赖通过 Yarn 安装。在开发过程中,这些模块为项目提供了丰富的功能支持,无需开发者从头编写所有代码,提高了开发效率。
-
public 文件夹:用于存放公共静态资源文件,如 HTML 文件、图片、图标等。这些文件在项目运行时会直接被引用,不需要经过编译或处理。
-
src 文件夹:这是项目的主要开发目录,包含了项目的源代码和核心文件。其中,assets 文件夹用于存放图片等资源;components 文件夹用于存放可复用的组件;pages 文件夹包含了各个页面的代码;router 文件夹用于配置项目的路由。
-
package.json:该文件定义了项目的元数据,包括项目名称、版本、依赖关系等信息。在项目开发中,它起到了项目配置文件的作用,用于管理项目的依赖和脚本。
-
readme:提供项目的操作说明,包括如何安装、启动、打包项目等命令。它是项目文档的一部分,帮助开发者快速了解和上手项目。
-
yarn.lock:该文件用于锁定项目依赖的版本,确保在不同环境下安装的依赖版本一致,避免因版本差异导致的兼容性问题。
1.3 项目启动流程
项目启动流程是开发过程中的关键步骤,正确的启动流程能够确保项目顺利运行,为后续的开发和调试打下良好基础。
-
安装依赖:在项目根目录下运行
yarn install命令,安装项目所需的依赖包。这一步骤会根据 package.json 文件中的配置,自动下载并安装所有依赖,确保项目能够正常运行。 -
启动项目:运行
yarn serve命令启动项目。项目启动后,会在控制台输出本地和网络访问地址,如http://localhost:8080。 -
访问项目:通过浏览器访问输出的地址,查看项目是否能够正常加载和显示。如果页面显示正常,说明项目启动成功;如果遇到问题,则需要根据错误信息进行排查和解决。
二、前台页面联调
2.1 跨域问题
跨域问题是前后端联调过程中常见的问题之一,它通常发生在前端请求后端接口时,由于域名、端口或协议不同,导致浏览器出于安全考虑拦截了请求。
2.1.1 问题现象
在实际操作中,可能会遇到部分接口请求成功,而部分接口请求失败的情况。这种情况下,通常会在浏览器的控制台中看到跨域错误提示,如 CORS 错误。这意味着前端发送的请求被浏览器拦截,无法正常到达后端服务器,导致页面数据无法加载或显示。
2.1.2 原因分析
跨域问题的根本原因在于浏览器的同源策略。同源策略限制了不同源的网页或应用程序之间相互访问对方的资源。当前端和后端的域名、端口或协议不同时,浏览器会认为它们属于不同的源,从而触发同源策略的限制,拦截跨域请求。
2.1.3 解决方案
解决跨域问题需要从后端进行配置,允许特定域名的跨域请求。具体步骤如下:
-
添加跨域配置类:在后端项目中,创建一个跨域配置类,并添加相应的注解和配置。例如,在 Spring Boot 项目中,可以通过实现
WebMvcConfigurer接口,并重写addCorsMappings方法,来全局配置跨域允许的域名、方法等。 -
处理预检请求:浏览器在发送实际请求之前,会先发送一个预检请求(OPTIONS 方法),以判断后端是否允许跨域请求。在后端代码中,需要对 OPTIONS 请求进行特殊处理,直接放行,避免拦截影响后续的真实请求。
2.2 接口调用与数据处理
在前台页面联调过程中,除了解决跨域问题,还需要正确调用后端接口,并处理返回的数据,以确保页面能够正常显示。
2.2.1 修改项目配置
在项目中,需要将配置的 IP 地址修改为本地 IP(127.0.0.1),以确保前后端在同一本地环境运行。这样可以避免因网络问题或外部服务器配置导致的请求失败,提高开发效率和调试的准确性。
2.2.2 数据处理
前端在接收到后端返回的数据后,可能需要进行一定的处理和格式化,以满足页面展示的需求。例如,对于时间数据,可能需要截取特定的部分进行显示;对于数值数据,可能需要进行单位转换或格式化等操作。
三、后台页面联调
3.1 ECharts 图表工具
ECharts 是一个广泛使用的开源可视化图表库,支持多种图表类型,如柱状图、折线图、饼图等,能够帮助开发者以直观的方式展示数据。
3.1.1 简介
ECharts 提供了丰富的图表类型和强大的配置选项,能够满足大多数数据可视化的需求。它具有以下特点:一是支持多种图表类型,包括常见的柱状图、折线图、饼图,以及复杂的地图、热力图等;二是高度可定制化,开发者可以通过丰富的配置项,调整图表的外观、样式、交互等;三是兼容性好,能够在主流的浏览器和移动设备上正常运行。
3.1.2 使用方法
使用 ECharts 需要先通过 npm 安装,然后在项目中导入 ECharts 组件。在代码中,初始化 ECharts 实例,设置配置项,如标题、坐标轴、数据系列等,即可绘制出所需的图表。在开发过程中,可以根据实际需求,灵活调整图表的配置,实现丰富的可视化效果。
3.2 后端接口格式调整
为了确保前后端数据交互的顺利进行,后端接口的返回格式需要严格按照接口文档规范,包括状态码、消息和数据等信息。
3.2.1 接口格式规范
后端接口在返回数据时,应包含统一的格式,通常包括状态码(status)、消息(message)和数据(data)三个部分。状态码用于标识请求是否成功,消息用于提供额外的信息,数据则包含具体的业务数据。这种规范化的接口格式,能够帮助前端更好地理解和处理返回的数据。
3.2.2 数据处理与包装
在实际开发中,后端需要对返回的数据进行必要的处理和包装,确保数据的完整性和正确性。例如,对于查询请求,后端需要将查询结果进行格式化,按照接口规范返回;对于修改请求,后端需要在执行操作后,返回相应的状态码和消息,告知前端操作结果。
3.3 前端数据处理与展示
前端在接收到后端返回的数据后,需要进行进一步的处理和展示,以满足用户的视觉和交互需求。
3.3.1 数据截取与格式化
对于后端返回的时间等数据,前端可能需要进行截取和格式化,以满足页面展示的简洁性和美观性。例如,对于包含年月日时分秒的时间字符串,可能只需要截取年月日部分进行显示。
3.3.2 图表样式配置
使用 ECharts 等图表工具时,可以通过配置项调整图表的样式,如颜色、渐变效果、坐标轴等,提升数据可视化的美观度和可读性。开发者可以根据实际需求,灵活设置图表的样式,实现个性化的数据展示效果。
四、项目部署
4.1 打包流程
项目部署的第一步是进行打包,将开发环境中的项目转换为生产环境可用的静态资源。
4.1.1 运行打包命令
在项目根目录下运行 yarn build 命令,启动项目的打包流程。打包过程中,Webpack 等工具会对项目中的代码进行优化、压缩和整合,生成适合生产环境的静态文件。
4.1.2 打包结果
打包完成后,项目会生成一个 dist 文件夹,其中包含了经过优化和压缩的 HTML、CSS、JS 等静态资源文件。这些文件是项目在服务器上运行所必需的,可以直接部署到生产环境中。
4.2 服务器部署
将打包后的文件部署到服务器上,并进行相应的配置,使项目能够正常运行和访问。
4.2.1 上传文件
将 dist 文件夹中的文件上传至服务器的指定目录。可以使用 FTP、SCP 等工具进行文件传输,确保文件完整性和权限正确。
4.2.2 服务器配置
在服务器上,需要配置相应的 Web 服务器软件,如 Nginx,以指向上传的文件目录,并设置静态资源的访问路径。同时,还需要配置相关的环境变量、安全设置等,确保项目的稳定运行。
4.2.3 环境配置
根据项目的实际需求,配置线上环境,包括数据库连接、API 地址等参数。确保项目在服务器上能够正确访问后端服务和数据。
五、总结
5.1 关键知识点回顾
通过对电商项目前后端联调课程的学习,掌握了多个关键知识点,这些知识点对于实际开发工作具有重要的指导意义。
-
项目启动:包括环境安装、依赖管理和项目启动流程,能够熟练启动和运行项目。
-
联调问题:深入理解了跨域问题的原因和解决方案,以及接口格式调整和前后端数据交互处理的方法。
-
图表工具:学会了使用 ECharts 进行数据可视化,包括图表的绘制、样式配置和数据处理。
-
项目部署:掌握了项目打包、服务器部署和环境配置的流程,能够将项目成功部署到生产环境。
5.2 实际开发中的注意事项
在实际的开发过程中,需要注意以下几点,以提高开发效率和代码质量。
-
严格按照接口文档规范开发:避免因格式不匹配导致的联调问题,确保前后端数据交互的顺利进行。
-
遇到问题时,通过分析现象、对比差异、尝试解决方案等步骤逐步排查:培养良好的问题解决能力,能够快速定位和解决问题。
-
实际开发中,联调过程可能涉及更多细节问题:如字段缺失、请求方法错误等,需与团队成员密切沟通协作解决。保持团队之间的良好沟通,及时发现和解决问题,确保项目的顺利推进。
相关文章:
第27周JavaSpringboot 前后端联调
电商前后端联调课程笔记 一、项目启动与环境搭建 1.1 项目启动 在学习电商项目的前后端联调之前,需要先掌握如何启动项目。项目启动是整个开发流程的基础,只有成功启动项目,才能进行后续的开发与调试工作。 1.1.1 环境安装 环境安装是项…...
QT中的布局管理
在 Qt 中,布局管理器(如 QHBoxLayout 和 QVBoxLayout)的构造函数可以接受一个 QWidget* 参数,用于指定该布局的父控件。如果指定了父控件,布局会自动将其管理的控件添加到父控件中。 在你的代码中,QHBoxLa…...
.net 6.0 webapi支持 xml返回xml json返回json
// 添加控制器并配置格式化器 var builder WebApplication.CreateBuilder(); builder.Services.AddControllers(options > {options.Filters.Add<ContentTypeFilter>();options.ReturnHttpNotAcceptable true; // 强制要求Accept头匹配// 添加 XML 格式化器options.…...
docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境
docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境 docker-compose.yml services:mysql-8.0:container_name: mysql-8.0image: mysql:8.0restart: always#ports:#- "3306:3306"volumes:- ./etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro- ./var/log…...
Android7上移植I2C-tools
一,下载源码 cd hardware/libhardware/tests git clone https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git 二, 在 i2c-tools 目录添加 Android.mk 编译文件 LOCAL_PATH: $(call my-dir)################### i2c-tools ###############…...
Centos 7 修改语言和输入源为中文+修改终端快捷键复制为Ctrl+C、粘贴为Ctrl+V
目录 修改语言和输入源为中文 1、设置 2、Region & Language(区域和语言) 3、Add an Input Source(添加输入源) 4、修改语言为中文 5、Restart(重启) 6、Log Out (注销) …...
DeepSeek-进阶版部署(Linux+GPU)
前面几个小节讲解的Win和Linux部署DeepSeek的比较简单的方法,而且采用的模型也是最小的,作为测试体验使用是没问题的。如果要在生产环境使用还是需要用到GPU来实现,下面我将以有一台带上GPU显卡的Linux机器来部署DeepSeek。这里还只是先体验单…...
疯狂安卓入门,crayandroid
系列文章目录 文章目录 系列文章目录第一组 ViewGroup 为基类帧布局约束布局 第二组 TextView 及其子类button时钟 AnalogClock 和 TextClock计时器 第三组 ImageView 及其子类第四组 AdapterView 及其子类AutoCompleteTextView 的功能和用法ExapndaleListViewAdapterViewFlipp…...
批量测试IP和域名联通性
最近需要测试IP和域名的联通性,因数量很多,单个ping占用时间较长。考虑使用Python和Bat解决。考虑到依托的环境,Bat可以在Windows直接运行。所以直接Bat处理。 方法1 echo off for /f %%i in (E:\封禁IP\ipall.txt) do (ping %%i -n 1 &…...
Python——计算机网络
一.ip 1.ip的定义 IP是“Internet Protocol”的缩写,即“互联网协议”。它是用于计算机网络通信的基础协议之一,属于TCP/IP协议族中的网络层协议。IP协议的主要功能是负责将数据包从源主机传输到目标主机,并确保数据能够在复杂的网络环境中正…...
一招解决Pytorch GPU版本安装慢的问题
Pytorch是一个流行的深度学习框架,广泛应用于计算机视觉、自然语言处理等领域。安装Pytorch GPU版本可以充分利用GPU的并行计算能力,加速模型的训练和推理过程。接下来,我们将详细介绍如何在Windows操作系统上安装Pytorch GPU版本。 查看是否…...
股票交易所官方api接口有哪些?获取和使用需要满足什么条件
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
MoonSharp 文档五
目录 13.Coroutines(协程) Lua中的协程 从CLR代码中的协程 从CLR代码中的协程作为CLR迭代器 注意事项 抢占式协程 14.Hardwire descriptors(硬编码描述符) 为什么需要“硬编码” 什么是“硬编码” 如何进行硬编码 硬编…...
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
最近在思考一个问题:如何能够更好的分享主流框架源码学习笔记(主要是源码部分)?让有缘刷到的同学既可以有所收获,还能保持对相关技术架构探讨学习热情和兴趣。以及自己也保持较高的分享热情和动力。 今天尝试用一个SQL查询作为引…...
如何重置 MySQL root 用户的登录密码?
重置 MySQL root 密码的核心步骤是绕过权限验证登录数据库并更新密码字段。以下是具体方法: 方法一:通过 --SKIP-GRANT-TABLES 模式修改密码 停止 MySQL 服务 Windows:在命令行执行 net stop mysql(服务名可能为 mysql80 或 mysql…...
ArrayList底层结构和源码分析笔记
参考视频:韩顺平Java集合 ArrayList特点 ArrayList 可以加入 null,包括多个。 ArrayList 是由数组来实现数据存储的 ArrayList 基本等同于 Vector,除了 ArrayList 是线程不安全(执行效率高)。在多线程情况下…...
Centos离线安装gcc
文章目录 Centos离线安装gcc1. gcc是什么?2. gcc下载地址3. gcc的安装4. 安装结果验证 Centos离线安装gcc 1. gcc是什么? GCC(GNU Compiler Collection)是 GNU 项目下的开源编译器套件,主要用于将 C、C 等编程语言的源…...
flutter 图片资源路径管理
1. 创建统一资源管理类 创建一个单独的 Dart 文件(比如 manager.dart),将所有图片路径集中管理。这样在引用图片时,不需要每次都手动输入完整路径,只需通过常量引用即可。 //manager.dartclass Manager { static co…...
[内网渗透] 红日靶场2
环境配置 靶场地址: http://vulnstack.qiyuanxuetang.net/vuln/wiki/ 环境配置可以看这个: https://www.bilibili.com/video/BV1De4y1a7Ps/?spm_id_from333.337.search-card.all.click&vd_sourcecf73ac8de9b7c0322b1bccf77de91c5dNAT模式分配111段, DHCP也要更改 再添加…...
【cocos creator】游戏优化,内存,性能,包体积大小,加载,drawcall优化
参考: https://blog.csdn.net/qq_47012987/article/details/140169024 内存泄露排查 使用chrome测试cocos creator内存泄漏问题手游内存优化cocos creator优化Creator资源自动释放逻辑:所有 cc.Asset 实例都拥有成员函数 addRef 和 decRef,分…...
MySQL 企业版 TDE加密后 测试和问题汇总
一、测试keyring file 1.1 当keyring file文件丢失或者被篡改 结论:不影响当前正在运行的数据库,但是在重启服务后会启动失败出现报错。 tail -n 100 /var/log/mysql/error.log 报错信息如下: 2025-03-12T08:04:54.668847Z 1 [ERROR] [M…...
Unity 封装一个依赖于MonoBehaviour的计时器(下) 链式调用
[Unity] 封装一个依赖于MonoBehaviour的计时器(上)-CSDN博客 目录 1.加入等待间隔时间"永远执行方法 2.修改为支持链式调用 实现链式调用 管理"链式"调度顺序 3.测试 即时方法编辑 "永久"方法 链式调用 4.总结 1.加入等待间隔时间&qu…...
petalinux环境下给linux-xlnx源码打补丁
在调试88e1512芯片时官方驱动无法满足我的应用方式,因此修改了marvell.c源码,但是在做bsp包重新创建新工程时发现之前的修改没有生效,因此查找了一下资料发现可以通过打补丁的方式添加到工程文件中,便于管理。 操作步骤 一、获取…...
套接字缓冲区以及Net_device
基础网络模型图 一般网络设计分为三层架构和五层设计: 一、三层架构 用户空间的应用层 位于最上层,是用户直接使用的网络应用程序,如浏览器、邮件客户端、即时通讯软件等。这些程序通过系统调用(如 socket 接口)向内核…...
2024下半年真题 系统架构设计师 案例分析
案例一 软件架构 关于人工智能系统的需求分析,给出十几个需求。 a.系统发生业务故障时,3秒内启动 XXX,属于可靠性 b.系统中的数据进行导出,要求在3秒内完成,属于可用性 c.质量属性描述,XXX,属…...
AI学习——深度学习核心技术深度解析
一、深度学习的本质与核心思想 定义:通过多层非线性变换,自动学习数据层次化表征的机器学习方法 核心突破: 表征学习:自动发现数据的内在规律,无需人工设计特征端到端学习:直接从原始输入到最终输出&…...
c++介绍智能指针 十二(2)
智能指针share_ptr,与unique_ptr不同,多个shar_ptr对象可以共同管理一个指针,它们通过一个共同的引用计数器来管理指针。当一个智能指针对象销毁时,计数器减一。当计数器为0时,会将所指向的内存对象释放。 #include<memory>…...
西门子S7-1200 PLC远程调试技术方案(巨控GRM532模块)
三步快速实现远程调试 硬件部署 准备西门子S7-1200 PLC、巨控GRM552YW-C模块及编程电脑。GRM552YW-C通过网口与PLC连接,支持4G/5G/Wi-Fi/有线网络接入,无需复杂布线。 软件配置 安装GVCOM3配置软件,注册模块(输入唯一序列号与密…...
vue启动 localhost无法访问
1. localhost 和 127.0.0.1 虽然都指向本机,但它们有细微的区别: - localhost 是一个域名,需要通过 DNS 解析或本地 hosts 文件解析为 IP 地址 - 127.0.0.1 是直接的 IP 地址,不需要解析过程 2. 无法访问 localhost 的可…...
Mac上更改默认应用程序
Mac上为某些文件设置默认打开应用的时候,刚开始是通过打开方式,其他里面,勾选始终以此方式打开,但实际上这个功能并不太好用,经常会让人误以为已经设置好了。但是实际上只是在当前目录起作用。真正解决这个问题可以按照…...
