Spring Boot+Vue

Spring Boot+Vue 前后端分离是一种非常流行且高效的开发模式,以下是关于其相关方面的详细介绍:

前端(Vue)部分

• 项目搭建

• 使用 Vue CLI 创建项目,它提供了丰富的插件和配置选项,能够快速生成项目基础结构。例如,执行`vue create my-vue-app`命令,根据提示选择需要的特性,如 Babel、ESLint 等,即可创建一个 Vue 项目。

• 项目目录结构清晰,`src`目录下包含`components`(组件)、`views`(页面视图)、`router`(路由配置)、`store`(状态管理)、`assets`(静态资源)等子目录,方便进行模块化开发。

• 页面开发

• 组件化开发:将页面拆分成多个独立的组件,每个组件负责特定的功能和样式。例如,一个商品列表页面可以拆分成商品列表组件、商品详情组件、分页组件等。通过在父组件中引入并使用子组件,实现页面的组装。组件之间可以通过 props 传递数据,也可以通过事件进行通信。

• 路由管理:利用 Vue Router 实现页面的跳转和管理。在`router/index.js`文件中定义路由规则,将不同的 URL 路径映射到对应的组件。例如:

  ```javascript

    const routes = [

      {

        path: '/',

        name: 'Home',

        component: Home

      },

      {

        path: '/about',

        name: 'About',

        component: () => import('../views/About.vue')

      }

    ]

    ```

• 状态管理:对于复杂的应用,使用 Vuex 进行状态管理。Vuex 通过定义全局的状态存储,使得组件之间能够方便地共享状态。例如,一个购物车应用中,购物车商品列表的状态可以存储在 Vuex 中,多个组件通过调用 Vuex 的 action 和 mutation 来更新购物车状态,通过 getters 获取购物车状态。

 

• 与后端交互

 

• 使用 axios 库发送 HTTP 请求与后端进行数据交互。在项目中安装 axios,然后创建一个请求实例,配置请求的 baseURL、headers 等参数。例如:

 

  ```javascript

    import axios from 'axios'

    const instance = axios.create({

      baseURL: 'http://localhost:8080', // 后端接口地址

      timeout: 10000,

      headers: {'X-Custom-Header': 'foobar'}

    })

    ```

• 在组件中调用 axios 实例发送请求获取数据。例如,获取用户列表数据:

  ```javascript

    instance.get('/users').then(response => {

      this.users = response.data

    }).catch(error => {

      console.error(error)

    })

    ```

 

 

• 对于登录等操作,发送请求将用户名和密码等信息发送给后端,后端返回 token 等认证信息,前端将其存储在本地存储(如 localStorage)中,后续请求携带 token 进行认证。

 

 

后端(Spring Boot)部分

 

 

• 项目搭建

 

• 使用 Spring Initializr(Spring Boot 项目。选择项目的基本信息,如 Group(包名)、Artifact(项目名)、Java 版本等,同时添加所需的依赖,如 Spring Web、Spring Data JPA、MyBatis 等,然后生成项目压缩包并解压到本地。

• 项目结构清晰,`src/main/java`下是 Java 代码目录,包含 controller、service、dao、entity 等包;`src/main/resources`下包含配置文件,如`application.properties`或`application.yml`,用于配置数据库连接、服务器端口等信息。

 

• 接口开发

 

• Controller 层:定义 RESTful 风格的接口,通过`@RestController`注解标记控制器类,使用`@RequestMapping`、`@GetMapping`、`@PostMapping`等注解定义接口路径和请求方法。例如:

 

  ```java

    @RestController

    @RequestMapping("/users")

    public class UserController {

 

        @GetMapping

        public List<User> getAllUsers() {

            // 调用 Service 层方法获取用户列表

            return userService.findAll();

        }

 

        @PostMapping

        public User addUser(@RequestBody User user) {

            // 调用 Service 层方法添加用户

            return userService.save(user);

        }

    }

    ```

 

 

• Service 层:负责业务逻辑处理。在该层中调用 Dao 层的方法进行数据操作,并对数据进行处理和封装。例如,对用户信息进行加密处理、验证用户输入数据的合法性等。

 

• Dao 层:与数据库进行交互。可以使用 Spring Data JPA 或 MyBatis 等技术。以 Spring Data JPA 为例,定义一个继承自`JpaRepository`的接口,即可实现基本的增删改查操作。例如:

 

  ```java

    public interface UserRepository extends JpaRepository<User, Long> {

        // 可以在这里定义一些自定义的查询方法

        List<User> findByUsername(String username);

    }

    ```

 

 

• 数据交互

 

• 接收前端发送的请求数据,如 JSON 格式的请求体,Spring Boot 会自动将其转换为对应的 Java 对象。例如,前端发送一个包含用户信息的 JSON 对象,后端的`@RequestBody User user`参数会自动接收并转换。

 

• 将处理后的数据以 JSON 格式返回给前端。Spring Boot 默认使用 Jackson 库进行对象与 JSON 的转换,通过在实体类中使用注解如`@JsonProperty`、`@JsonIgnore`等,可以控制 JSON 的序列化和反序列化过程。

 

 

前后端交互与部署

 

 

• 开发阶段交互

 

• 跨域问题:由于前后端端口不同,默认情况下浏览器会阻止跨域请求。可以在 Spring Boot 后端项目中配置跨域资源共享(CORS),允许前端项目访问后端接口。例如,在全局配置类中添加 CORS 配置:

 

  ```java

    @Configuration

    public class GlobalCorsConfig {

        @Bean

        public WebMvcConfigurer corsConfigurer() {

            return new WebMvcConfigurer() {

                @Override

                public void addCorsMappings(CorsRegistry registry) {

                    registry.addMapping("/**") // 允许跨域访问的路径

                            .allowedOrigins("http://localhost:8081") // 允许跨域访问的前端域名和端口

                            .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的请求方法

                            .allowedHeaders("*") // 允许的请求头

                            .allowCredentials(true); // 允许携带 cookie

                }

            };

        }

    }

    ```

 

 

• 接口调试:前后端开发人员可以通过 Postman 等工具直接调用后端接口进行测试,也可以在前端项目中使用 axios 发送请求调试接口。同时,后端可以通过日志输出等方式查看请求参数、响应数据等信息,以便定位问题。

 

• 部署阶段

 

• 前端部署:将 Vue 项目构建生成的`dist`目录(包含静态资源文件)部署到服务器的静态资源目录下,如 Nginx 的`html`目录。配置 Nginx 服务器,设置静态资源的访问路径和路由转发规则。例如:

 

  ```nginx

    server {

        listen 80;

        server_name example.com;

 

        location / {

            root /usr/share/nginx/html;

            try_files $uri $uri/ /index.html;

        }

    }

    ```

 

 

• 后端部署:将 Spring Boot 项目打包成 jar 包,上传到服务器,通过命令`java -jar app.jar`启动应用。可以使用 Docker 容器进行部署,编写 Dockerfile 构建镜像,然后运行容器。同时,配置数据库连接信息、服务器端口等参数,确保后端应用能够正常运行并提供接口服务。

 

• 前后端整合:确保前端页面能够正确访问后端接口,可以通过配置前端项目的代理规则,在开发阶段将请求代理到后端服务器。在生产环境中,通过 Nginx 等反向代理服务器将前端页面请求和后端接口请求分别转发到对应的服务器和端口,实现前后端的整合部署。

 

这种前后端分离的开发模式使得前后端可以独立开发、独立部署,提高了开发效率和项目的可维护性。同时,前后端通过定义好的接口进行交互,使得项目的扩展性和灵活性更强。

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

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

相关文章

第十四章:计算机新技术

文章目录&#xff1a; 一&#xff1a;云计算 二&#xff1a;大数据 三&#xff1a;物联网 四&#xff1a;人工智能 五&#xff1a;移动网络与应用 六&#xff1a;电子商务 七&#xff1a;虚拟实现 八&#xff1a;区块链 一&#xff1a;云计算 概念云基于⽹络&#xff0…

【大数据2025】MapReduce

MapReduce 基础介绍 起源与发展&#xff1a;是 2004 年 10 月谷歌发表的 MAPREDUCE 论文的开源实现&#xff0c;最初用于大规模网页数据并行处理&#xff0c;现成为 Hadoop 核心子项目之一&#xff0c;是面向批处理的分布式计算框架。基本原理&#xff1a;分为 map 和 reduce …

主从复制

简述mysql 主从复制原理及其工作过程&#xff0c;配置一主两从并验证。 主从原理&#xff1a;MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二…

【博客之星评选】2024年度前端学习总结

故事的开端...始于2024年第一篇前端技术博客 那故事的终末...也该结束于陪伴了我一整年的前端知识了 踏入 2025 年&#xff0c;满心激动与自豪&#xff0c;我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新&#xff0c;这次能走到这…

Ubuntu 24.04 LTS 服务器折腾集

目录 Ubuntu 更改软件源Ubuntu 系统语言英文改中文windows 远程链接 Ubuntu 图形界面Windows 通过 openssh 连接 UbuntuUbuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locationsUbuntu 开启 SMB 服务&#xff0c;并通过 windows 访问Ubuntu安装Tailscale&am…

《TikTok停服:信息安全警钟长鸣》

一、TikTok 停服事件回顾 2025 年 1 月 18 日晚&#xff0c;TikTok 通知美国用户&#xff0c;由于美官方禁令于 19 日起生效&#xff0c;TikTok 软件将暂时对用户停止服务。这一消息犹如一颗重磅炸弹&#xff0c;瞬间在全球范围内掀起轩然大波。美国用户对此猝不及防&#xff0…

1166 Summit (25)

A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…

C++,设计模式,【目录篇】

文章目录 1. 简介2. 设计模式的分类2.1 创建型模式&#xff08;Creational Patterns&#xff09;&#xff1a;2.2 结构型模式&#xff08;Structural Patterns&#xff09;&#xff1a;2.3 行为型模式&#xff08;Behavioral Patterns&#xff09;&#xff1a; 3. 使用设计模式…

掌握提示词工程:大模型使用入门指南

掌握提示词工程&#xff1a;大模型使用入门指南 近年来&#xff0c;大语言模型&#xff08;如 GPT、Claude 等&#xff09;的强大能力令人印象深刻&#xff0c;但要想充分发挥这些模型的潜力&#xff0c;仅仅依靠其预训练能力还不够。提示词工程&#xff08;Prompt Engineerin…

如何使用 useMemo 和 memo 优化 React 应用性能?

使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时&#xff0c;性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑&#xff0c;其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…

Agent Laboratory: Using LLM Agents as Research Assistants 论文简介

加速机器学习研究的智能实验室——Agent Laboratory 1. 引言 随着人工智能技术的飞速发展&#xff0c;机器学习领域正以前所未有的速度推进科学发现和技术创新。然而&#xff0c;传统的科学研究模式往往受到时间、资源和专业知识限制&#xff0c;阻碍了研究者们探索新想法的能…

【网络协议】【http】【https】ECDHE-TLS1.2

【网络协议】【http】【https】ECDHE-TLS1.2 ECDHE算法 1.客户端和服务器端事先确定好使用哪种椭圆曲线&#xff0c;和曲线上的基点G&#xff0c;这两个参数都是公开的&#xff0c; 双方各自随机生成一个随机数作为私钥d&#xff0c;并与基点 G相乘得到公钥Q(QdG)&#xff0c…

规避路由冲突

路由冲突是指在网络中存在两个或多个路由器在进行路由选择时出现矛盾&#xff0c;导致网络数据包无法正确传输&#xff0c;影响网络的正常运行。为了规避路由冲突&#xff0c;可以采取以下措施&#xff1a; 一、合理规划IP地址 分配唯一IP&#xff1a;确保每个设备在网络中都有…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)

大模型UI&#xff1a;Gradio全解11——Chatbot&#xff1a;融合大模型的聊天机器人&#xff08;4&#xff09; 前言本篇摘要11. Chatbot&#xff1a;融合大模型的多模态聊天机器人11.4 使用Blocks创建自定义聊天机器人11.4.1 简单聊天机器人演示11.4.2 立即响应和流式传输11.4.…

【线性代数】行列式的概念

d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1​,i2​,⋯,in​∑​(−1)σ(i1​,⋯,in​)a1…

关于php语言api接口开发的流程

确定接口需求&#xff1a;首先明确接口的功能和需求&#xff0c;包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由&#xff1a;根据接口需求&#xff0c;设计具体的接口路由&#xff0c;即URL路径&#xff0c;用于访问接口。 搭建PHP环境&#xff1a;确保你的服务器上…

STM32 FreeRTOS内存管理简介

在使用 FreeRTOS 创建任务、队列、信号量等对象时&#xff0c;通常都有动态创建和静态创建的方式。动态方式提供了更灵活的内存管理&#xff0c;而静态方式则更注重内存的静态分配和控制。 如果是1的&#xff0c;那么标准 C 库 malloc() 和 free() 函数有时可用于此目的&#…

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…