博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 2.0 | SpringBoot 整合前端框架 Vue
阅读量:4105 次
发布时间:2019-05-25

本文共 3458 字,大约阅读时间需要 11 分钟。

1.简介

与 Angular,React 是目前前端三大框架,Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

2.SpringBoot 2.0 与 Vue 的 整合

1.安装 Vue

我们可以通过 的方式来进行安装,在安装好 npm 的前提下,我们可以通过下面方法构建一个vue 项目。

# 全局安装 vue-cli 脚手架$ cnpm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init webpack my-project# 进入项目$ cd my-project# 下载依赖$ npm install# 运行项目$ npm run dev# 打包项目$ npm run build

执行 $ npm run dev 后,访问 http://localhost:8080/#/ 即可进入 vue 主页。

2.vue 实现代码

这是 vue 的主要目录,我们的代码写在该目录下

在这里插入图片描述
以上图片来自:https://www.cnblogs.com/goldlong/p/8027997.html
在这里插入图片描述
components 是组件,这里面编写了我们要访问的视图代码
以 Login 为例实现登录功能

router 文件里面配置了路由,通过指定的 url 访问到特定的组件

index.js 文件代码如下

import Vue from 'vue'import Router from 'vue-router'import HelloWorld from '@/components/HelloWorld'import Login from '@/components/Login'import Test from '@/components/Test'Vue.use(Router)export default new Router({  routes: [    {      path: '/hello',      name: 'HelloWorld',      component: HelloWorld    }, {      path: '/',      name: 'Login',      component: Login    },  {      path: '/test',      name: 'Test',      component: Test    }  ]})

在utils 里面,我们定义了不同类型的请求发送数据给后端的 API

/** *@author :hly *@gkhub :https://gkhub.com/huangliangyun @blog :blog.csdn.net/Sirius_hly *@date :2018/11/24 */import axios from 'axios'let base = ''export const postRequest = (url, params) => {  return axios({    method: 'post',    url: `${base}${url}`,    data: params,    transformRequest: [function (data) {      // Do whatever you want to transform the data      let newData= ''      for (let k in data) {        newData+= encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&'      }      return newData    }],    headers: {      'Content-Type': 'application/x-www-form-urlencoded'    }  })}

自此,我们与 SpringBoot 后端交互的代码就已经基本实现了,vue 和 SpringBoot 是两个项目,他们配置了不同的端口,如果要如果要间接访问,我们还需要进行跨域的配置。

找到 vue 项目下 config 的 index.js 文件

在这里插入图片描述
修改proxyTable,target 是 SpringBoot 的 地址和端口

//跨域    proxyTable: {      //别名      '/': {        target: 'http://localhost:8081',        changeOrigin: true,        pathRewrite: {          '^/': ''        }      }    },

完成后启动项目。

在这里插入图片描述

3.SpringBoot 实现代码

关键代码如下,接收 vue 端发送过来的数据,根据查询的结构,以 json 的形式返回 vue 端。

@Controllerpublic class UserController {    @Autowired    UserDao userDao;    @RequestMapping(value = "/login",method = RequestMethod.POST)    public ResultBean login(@RequestParam(value="username",required=false)String username,@RequestParam(value="password",required=false)String password , HttpServletResponse response) throws IOException {        System.err.println(username+": "+password);        if(password.equals(userDao.selectUserByUsername(username).getPassword())) {            response.setContentType("application/json;charset=utf-8");            PrintWriter out = response.getWriter();            out.write("{\"status\":\"success\",\"msg\":\"登录成功\"}");            out.flush();            out.close();        }else {            response.setContentType("application/json;charset=utf-8");            PrintWriter out = response.getWriter();            out.write("{\"status\":\"error\",\"msg\":\"登录失败\"}");            out.flush();            out.close();        }        return  null;    }}

4.SpringBoot 与 Vue 的集成

我们通过执行 $ npm run build 命令,打包 vue 项目,会生成一个 dist 文件,我们把这个文件直接复制到 SpringBoot 项目的 static 下,只启动 SpringBoot 项目 ,访问 http://localhost:8081/index.html#/ 就能看到我们的 vue 页面。

在这里插入图片描述

在这里插入图片描述

公众号:【星尘Pro】

github:

推荐阅读

你可能感兴趣的文章
9、如何控制框架页面或<iframe>内嵌页面在指定页面(区域)打开页面? [除了div+css,框架页面也不能忘记]...
查看>>
[WPF系列]-基础 TextBlock
查看>>
Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
查看>>
.Net MVC4 上传大文件,并保存表单
查看>>
Leetcode657.Robot Return to Origin机器人能否返回原点
查看>>
MVC过滤器基本使用
查看>>
PHP 数组和对象的相互转化
查看>>
ubuntu里打开rar,zip文件方法
查看>>
jdk和tomcat环境变量配置
查看>>
C语言博客作业--嵌套循环
查看>>
java表达式和三目运算符
查看>>
H3C配置console口密码
查看>>
微信小程序简易教程
查看>>
flannel源码分析---初始化部分
查看>>
[PAT] 1041 Be Unique (20 分)Java
查看>>
SetWindowLong
查看>>
[转] 支持源文件索引符号服务器的构建和使用
查看>>
centOS7网络配置
查看>>
nginx代理tcp协议连接mysql
查看>>
Spark-Streaming之window滑动窗口应用
查看>>