一步步从后端渲染到前后端分离经验分享(1)

概念普及

后端渲染

后端采用JSP,freemarker,jdea,babel等渲染框架对前端模板进行预编译。

假设有这么一组数据你想展示在界面上:

name
MrXu
MrXu0
MrXu1
<#list list as item>
   <div class="font">姓名:${item.name}</div>   
</#list>

以上采取的是freemarker语法进行的html预编译,编译的结果如下:

<div class="font">姓名:MrXu</div>   
<div class="font">姓名:MrXu1</div>
<div class="font">姓名:MrXu2</div>

在没有Vue,React,Angular的年代(此处指代任何的前端渲染框架),不借助后端渲染工具你想界面上根据数据实现界面效果你需要多少步骤:

  • 1.ajax请求
  • 2.写一大堆加号拼接数据:
    var model +="<div>" +list[i].name + "</div>"
  • 3.获取某个元素添加到元素里面

现在大部分人应该都没感受过拼接字符串的恐惧。

前后端分离

你如果了解APP跟后端的开发,你会很简单的了解这个概念。APP开发的时候如果接口文档齐全都不需要跟后端开发人员产生交流就可以实现一个完整的项目(理想状态下)。像现在的各种前端脚手架,都能够帮你快速的实现一个简易的前端项目。

原因

像很多非互联网公司,技术并不是第一生产力,做项目还是比较保守的,不可能快速迭代技术。一切以“稳”字为主。如果没有巨大的诱惑是不会迭代技术的,毕竟像Jquery,十几年的沉淀,几乎满足各种要求,非常稳定。

那么这个巨大的诱惑是什么呢?看我慢慢分析。

我们公司优先推出的是一套APP,现在要开发微信商城。这样就确保了后端其实已经有一套成熟的接口能够满足业务需要了。如果前端还采用后端渲染的模式将面临其中大部分的接口重写,维护俩遍的问题。这可不是一个很小的工作量,并且还会一直迭代这就是目前面临的主要问题,于是我给公司提供了以下三种方案:

  • 1.采用后端渲染的方式,部分界面我自己借助框架渲染,例如购物车这种大量界面交互的界面。开发速度快。但是后期转型极其麻烦
  • 2.后端统一配置前端界面,将路由权限放宽,由前端自由把握,不在采用后端渲染,所有界面完全由前端自由渲染。开发方向往前端偏移,但是开发速度较快,后期转型要容易的多
  • 3.采用网上的各种脚手架进行SPA开发模式。一步到位,不存在转型问题,但是开发速度慢

以上的开发速度是基于我自己的公司现状分析的,上面的第三种模式开发速度3其实是最快的,其次是2最后是1,现在之所以慢是因为公司目前缺少符合这方面的人才。我虽然技术方面没有问题,对相关的技术站早已经学会了,但是没有实操经验。在时间充足的情况下我还挺有把握的,但是项目工期是在太紧张了,我可不想闲着没事就加班到凌晨4,5点的。最后我从延长时间,减少需求,添加人员三方面着手。希望能够给与支持。不过没有一方面能够满足我的,所以只能够采取折中的办法,使用了方案二,先把首版推上去。推上去之后再进行一次大的重构,从而彻底实现前后端分离。

技术选型

目前比较火的前端渲染框架主要是Angular,React,Vue。我选择了比较轻量级的Vue,原因主要出于以下几点:
- 1.简单易学,Angular目前使用的是TS开发这使得学习成本提高,React官网对中文支持很差,Vue是中国人搞的,所以中文翻译挺棒的,而且主要用于Web开发。
- 2.支持不打包只引入资源即可跑项目,适合目前的方案

界面布局采用rem布局,原因如下:
- 1.可以跟设计图同尺寸作图,很方便
- 2.公司一直采用这种方式,已经习惯了这个套路。

不过也带来了很多麻烦,这里先卖个关子,后面再说。

数据请求axios:
- 1.采用了promise的方式,相当于对现在的ajax的一个扩展
- 2.拥有钩子机制,可以监控拦截请求前,请求后状态。

MintUI:
- 1.这是我接触的第一个集成自Vue的UI框架
- 2.能够支持一次性加载和分开加载
- 3.教程中文,上手简单
- 4.由饿了么团队开发,大厂家莫名的细分

所以选择这个有些任性,嘿嘿。以上的选择也是为了后期进行完整的分离方案设计的,能够最简化工作量的移植。

后期完整的前后端分离方案

采用Vue的全家桶进行SPA模式开发,获得更好的用户体验。

  • 1.Vue-Router:路由管理系统,模拟浏览器的history机制,使用方便。不反人类
  • 2.VueX:官方的解释是这就像你的眼镜,你自然知道什么时候去用它。
  • 3.axios:用来做数据请求
  • 4.Mint:UI框架
  • 5.npm:包管理工具
  • 6.webpack:打包工具

- 7.Vue:数据渲染框架

对我的文章感兴趣可以关注我的公众号:

微信公众号

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Java前后端分离的架构中,前端后端是独立部署的两个应用程序,因此后端无法直接重定向到前端的Vue页面。通常情况下,前端后端之间通过RESTful API进行通信,前端通过AJAX请求后端API获取数据并渲染页面。 如果你需要实现后端重定向到前端的Vue页面,可以采取以下两种方式: 1. 通过HTTP代理实现重定向 在这种方式中,你可以在后端应用程序中配置一个HTTP代理,将前端Vue应用程序的URL地址映射到后端应用程序的URL地址。当客户端请求前端Vue页面时,后端应用程序会将请求转发到前端Vue应用程序,并将前端Vue应用程序的响应发送给客户端浏览器。 下面是一个使用Nginx作为HTTP代理的示例配置: ``` location /vue-page { proxy_pass http://localhost:8080; } ``` 在上面的配置中,我们将请求URL地址中包含`/vue-page`的请求转发到`http://localhost:8080`地址。在这里,`http://localhost:8080`是前端Vue应用程序的地址。当客户端请求`/vue-page`时,Nginx会将请求转发到前端Vue应用程序,并将前端Vue应用程序的响应发送给客户端浏览器。 2. 重定向到前端路由地址 在这种方式中,你可以在后端应用程序中将请求重定向到前端Vue应用程序的路由地址。当客户端浏览器接收到重定向响应时,会自动跳转到前端Vue应用程序的路由地址,并显示对应的页面。 下面是一个使用Spring Boot实现后端重定向到前端Vue页面的示例代码: ``` @Controller public class MyController { @RequestMapping("/vue-page") public String vuePage() { // 重定向到前端路由地址 return "redirect:/vue-page/home"; } } ``` 在上面的代码中,我们将请求重定向到前端Vue应用程序的`/vue-page/home`路由地址。当客户端浏览器接收到重定向响应时,会自动跳转到前端Vue应用程序的`/vue-page/home`路由地址,并显示对应的页面。 需要注意的是,在采用这种方式时,前端Vue应用程序必须已经加载并启动,否则客户端浏览器无法跳转到前端Vue应用程序的路由地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值