怎样创建一个前后端分离项目:Vue+SpringBoot

前后端怎样分离

  1. 前端只需要独立编写客户端代码,后端也只需要独立编写服务端代码提供数据接口即可。
  2. 前端通过Ajax请求来访问后端的数据接口,将Model展示到View中即可。
  3. 前后端开发者只需要提前约定好接口文档(URL、参数、数据类型.….),然后分别独立开发即可,前端可以造假数据进行测试,完全不需要依赖于后端,最后完成前后端集成即可,真正实现了前后端应用的解耦合,极大地提升了开发效率。
  4. 前端应用:负责数据展示和用户交互。
  5. 后端应用:负责提供数据处理接口。
  6. 前后分离项目结构图:
    在这里插入图片描述

创建前端项目

  1. 采用vue ui命令可视化创建工具Vue前端项目。
  2. 可视化工具创建需要vue版本在3.0以上,如果你的vue版本是2.X(vue -v命令查看版本号),你需要更新vue版本,操作如下:
  • Step1:进入cmd终端。
  • Step2:输入npm uninstall vue-cli -g命令,全局卸载vue-cli旧版本(不先卸载直接安装的话,有可能会失败)
  • Step3:输入npm install vue-cli -g命令,重新下载。
  1. vue ui创建项目:
    1)选择一个你要存放VUE项目的文件夹,在文件目录输入cmd回车进入终端,输入vue ui命令,如下图操作:在这里插入图片描述
    2)输入vue ui命令后,会自动启动浏览器,进入下图界面:
    在这里插入图片描述
    3)在Vue项目管理器中选择创建——》在此创建项目——》输入项目名,去除GIT仓库选项,下一步——》手动——》勾选Router和Vuex,去掉Linter/Formatter,下一步——》勾选Use history mode for router?,创建项目——》创建项目,不保存预设——》等待项目创建完成 (具体操作看下图)在这里插入图片描述
    4)等待一段时间创建好后界面后跳转到如下界面:在这里插入图片描述
    5)测试项目,在上面界面选择任务——》serve——》运行——》访问页面localhost:8080,出现Vue的界面表示创建成功(具体操作如下图)在这里插入图片描述
    6)关闭Vue项目管理器,在终端ctrl+c——》y——》关闭
    在这里插入图片描述
  2. 用Webstrom或者IDEA打开我们创建的项目:(以IDEA为例)
    找到我们创建项目的目录,直接Open即可。
  3. IDEA直接启动VUE项目:选择Terminal,输入命令npm run serve启动,访问localhost:8080进行测试。在这里插入图片描述
  4. 关闭的话一样是在Terminal输入Ctrl+c——》y关闭即可。
  5. 开始搭建我们的测试页面:Employees.vue
<template>
    <div>
        <table>
            <thead>
            <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>性别</td>
                <td>部门</td>
            </tr>
            </thead>
            <tbody>
            <tr v-for="item in employees">
                <th>{{item.id}}</th>
                <th>{{item.name}}</th>
                <th>{{item.sex}}</th>
                <th>{{item.department}}</th>
            </tr>
            </tbody>
        </table>
    </div>
    
</template>

<script>
    export default {
        name: "Employees",
        data(){
            return {
                employees: [
                    {
                        id: 1,
                        name: '张三',
                        sex: '男',
                        department: '运维部'
                    },
                    {
                        id: 2,
                        name: '李四',
                        sex: '男',
                        department: '销售部'
                    },
                    {
                        id: 3,
                        name: '张红',
                        sex: '男',
                        department: '开发部'
                    }
                ]
            }
        }
    }
</script>

<style scoped>

</style>

data里面伪造了的三个数据进行测试,配置好路由进行测试:/src/router/index.js

  {
    path: '/employees',
    name: 'Employees',
    component: () => import('../views/Employees')
  }

输入npm run serve启动项目,访问localhost:8080/employees
在这里插入图片描述
到这里前端可以暂时停一下,开始搭建后端项目

创建后端项目

  1. 创建一个SpringBoot web项目项目,至于怎样创建可以查看这篇文章:【Spring Boot】快速上手SpringBoot
  2. 如果你想更多的了解SpringBoot,推荐教程:Spring全家桶文章整合
  3. 导入依赖:pom.xml
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

  1. 数据库配置文件和设置端口为8181,避免与前端端口冲突:application.yaml(在resources目录下创建)
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
    driver-class-name: com.mysql.cj.jdbc.Driver


server:
  port: 8181

  1. 在test数据库下创建employees表,并插入数据
CREATE TABLE employees
(
	id INT(10) NOT NULL COMMENT '主键ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	sex VARCHAR(5) NULL DEFAULT NULL COMMENT '性别',
	department VARCHAR(10) NULL DEFAULT NULL COMMENT '部门',
	PRIMARY KEY (id)
);

INSERT into employees VALUES (1,'李莉','女','设计部');
INSERT into employees VALUES (2,'王波','男','开发部');
INSERT into employees VALUES (3,'张美','女','运维部');
INSERT into employees VALUES (4,'李晓勇','男','销售部');
  1. 创建与数据库对应的实体类
@Data
public class Employees {
    private Integer id;
    private String name;
    private String sex;
    private String department;
}
  1. 创建DAO接口:进行数据库的交互
@Mapper
@Repository
public interface EmployeeMapper extends BaseMapper<Employees> {
}
  1. 编写controller层代码:
@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    EmployeeMapper employeeMapper;

    @GetMapping("/all_employees")
    public List<Employees> allEmployees(){
        return employeeMapper.selectList(null);
    }

}

  1. 访问:http://localhost:8181/employee/all_employees,看到下面JSON数据表示后端搭建成功。
    在这里插入图片描述

跨域问题

现在前端测试页面已经写好,后端的数据接口也已经写好:

  1. 前端数据通过Ajax请求来访问后端的数据接口,在前端项目命令端输入vue add axios执行,安装axios插件,可以直接使用。
  2. 现在前端需要通过axios来访问后端的数据接口,在Employees.vue中加上:created()方法会在页面加载前完成。
        created() {
           //get获得url里面的JSON数据后,通过then回调,赋值给前面data()中的employees数组
            axios.get('http://localhost:8181/employee/all_employees').then((resp)=> {
                this.employees = resp.data;
            })
        }

完整代码:

<template>
    <div>
        <table>
            <thead>
            <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>性别</td>
                <td>部门</td>
            </tr>
            </thead>
            <tbody>
            <tr v-for="item in employees">
                <th>{{item.id}}</th>
                <th>{{item.name}}</th>
                <th>{{item.sex}}</th>
                <th>{{item.department}}</th>
            </tr>
            </tbody>
        </table>
    </div>
    
</template>

<script>
    export default {
        name: "Employees",
        data(){
            return {
                employees: [
                    {
                        id: 1,
                        name: '张三',
                        sex: '男',
                        department: '运维部'
                    },
                    {
                        id: 2,
                        name: '李四',
                        sex: '男',
                        department: '销售部'
                    },
                    {
                        id: 3,
                        name: '张红',
                        sex: '男',
                        department: '开发部'
                    }
                ]
            }
        },
        created() {
            axios.get('http://localhost:8181/employee/all_employees').then((resp)=> {
                this.employees = resp.data;
            })
        }
    }
</script>

<style scoped>

</style>
  1. 两个不同的端口进行数据交互需要设置跨域请求,这里使用一种较简单的方式:使用@CrossOrigin注解在后端接口:
@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    EmployeeMapper employeeMapper;

    @GetMapping("/all_employees")
    @CrossOrigin
    public List<Employees> allEmployees(){
        return employeeMapper.selectList(null);
    }

}
  1. 分别启动前端和后端项目,访问http://localhost:8080/employees(数据来自后端)
    在这里插入图片描述
  • 49
    点赞
  • 268
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Spring Boot技术栈是一个用于构建独立、可扩展和可配置的Java应用程序的框架。它基于Spring框架,帮助开发者更快地搭建应用,并提供了许多开箱即用的功能和工具。 以下是Spring Boot技术栈的主要组件和特性: 1. Spring框架:Spring Boot建立在Spring框架的基础上,提供了依赖注入、面向切面编程等核心功能。 2. 自动配置:Spring Boot通过自动配置功能,根据应用的依赖和配置参数自动配置应用程序。开发者只需提供必要的配置,即可快速搭建应用。 3. 起步依赖:Spring Boot提供了一系列的起步依赖,可以方便地引入常用的库和框架,简化了项目的构建和管理。 4. 嵌入式容器:Spring Boot内置了嵌入式的Tomcat、Jetty或Undertow容器,可以直接运行应用程序,无需部署到外部容器。 5. Actuator:Actuator提供了对应用程序的监控和管理功能,包括健康检查、指标收集、日志查看等。 6. 数据访问:Spring Boot支持多种数据访问方式,包括JPA、Spring Data JPA、MyBatis等。 7. 安全性:Spring Boot提供了安全框架和认证授权功能,可以轻松实现应用的安全保护。 8. 日志管理:Spring Boot集成了常用的日志框架,如Logback和Log4j2,可以方便地进行日志记录和管理。 9. 测试支持:Spring Boot提供了丰富的测试支持,包括单元测试、集成测试等,方便开发者进行自动化测试。 总结来说,Spring Boot技术栈可以帮助开发者快速构建Java应用程序,提供了一系列的工具和特性,简化了应用的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值