前端概念

前端是一切直接与用户交互的页面或软件(用户看得见、摸得着)的统称,比如各种网站网页、andorid 手机各种 App、苹果手机各种 app、微信小程序、网络游戏客户端等。所以,普通人使用计算机打交道最多的就是前端了。既然有这么多种前端交互形式,其背后当然涉及大量的前端开发技术了。

如果有人对你说自己是前端开发工程师,其实这是一个很笼统的说法,就好比说我是一名老师。如果你是懂行的,肯定会追问他是做哪方面前端开发呢?这就好比问一个老师,你是教语文还是数学或其他学科。

那么,按照前端技术可以将前端大致分为五大类,分别是前端 Web 网页开发、前端Android手机App开发、前端苹果手机App开发、以及微信小程序开、客户端网络游戏开发。当然,使用不同的前端开发技术,在公司也对应有不同的前端开发岗位。目前用得最多的前端开发技术主要是 Web 网页开发技术了,具体而言就是html、css、js、jquery、vue、react 等(还有很多技术没写)。记得 android 智能手机出来时,因为对手机 app 需求量很大,所以从事 android app 前端开发非常火爆,但是现在 app 已经开发得差不多了,所以 android 前端开发工程师需求量就没那么多了。

一个人要想精通前端所有开发技术,这几乎是不可能的,这就好比一个老师想要能够教授所有学科一样。能够精通一两门前端开发技术,其实都已经很牛逼了。

后端概念

后端是一切不直接与用户交互的软件或程序的统称(用户一般感受不到后端的存在)。那后端是干嘛的呢?后端的作用就是保存用户数据和处理前端发送过来的各种请求。说白了,后端是为前端提供服务的,所以后端一般称为后端服务器。如果前端是游戏客户端,那么后端就是游戏服务器端。如果前端是 Web 网页,那么后端就是 Web 服务器啦。如果前端是 App,那么后端就是 app 服务器哈。

和前端技术相比,后端涉及的开发技术更多,遇到的问题也更复杂。想一想就明白了,前端好比顾客,后端好比服务员,谁更累一些嘛。所以,从事后端开发相对而言,待遇也会高一些哈。如果你是想要踏入 IT 行业,首选就要面临选择学习前端还是后端,这个需要根据自己的兴趣还有条件掂量一下哈。

前面说过目前前端开发主要是针对 Web 页面开发,那么后端开发主要也就是针对 Web 服务器开发。而 Web 服务器开发技术哪家强?首先,你得知道有多少家技术嘛?比如 node.js、php、python 、asp、asp .net、ruby、 java 等。既然有这么多家呀,到底哪家强呢?只能告诉你,各有各的美。当然,我也得告诉你,目前大型企业级 Web 服务器开发使用最多的技术就是 Java,称为 JavaEE。这也是 Java 技术的主要应用方向,很多童鞋学习 Java 就是为了以后出来从事 JavaEE 企业级开发。当然,Java 技术还有一个重要应用方向,那就是大数据啦。

前后端分离概念

现在我们对前端和后端有一些基本概念了吧。简单说,前端就好比电影里的演员,后端就好比电影里的导演。在你眼前晃来晃去、风光无限的是演员就好比前端,而默默无闻的幕后英雄是导演就好比后端。

那前端和后端哪个重要呀?就好比电影,有了好的演员,如果没有好的导演和剧本,那也白搭;有了好的导演和剧本,如果遇到票房毒药演员,也是毁三观。所以,前端和后端都很重要,缺一不可。

那前后端分离是怎么回事?是不是演员和导演要分家。当然不是,前后端分离是一种演员和导演合作的方式罢了,可以让演员和导演更好的配合,共同完成一部电影。所以,前后端分离是一种架构模式,能够更好的开发企业级 Web 项目。

前后端分离已成为互联⽹项⽬开发的业界标准使⽤⽅式,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器 ,⻋载终端,安卓,IOS等)打下坚实的基础,这个步骤是系统架构从猿进化成⼈的必经之路。

前后端分离的核心思想是前端 html 页⾯通过 ajax 调⽤用后端的 restuful api 接⼝并使用 json 数据进行交互。

前后端分离带来开发人员分离

以前的 JavaWeb 项⽬⼤多数都是 Java程序员自编自导,也就是既搞前端,⼜搞后端。

随着时代的发展,渐渐的许多⼤大⼩小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,⼀个⼈如果什么都会,那么他毕竟什么都不不精。

⼤中型公司需要专业⼈才,⼩公司需要全才,但是对于个⼈职业发展来说,专才比全才会更有市场竞争力。

  1. 对于后端 Java 开发工程师:

应该把精⼒放在 Java 基础,设计模式,JVM 原理,spring、springmvc 以及 mybatis 原理及源码,linux,mysql 事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,Java 性能优化,以及相关的项⽬管理等。

记住后端追求的是:三⾼(⾼并发,⾼可⽤,⾼性能),安全,存储,业务等。
  1. 对于前端 Web 开发工程师:

应该把精⼒放在 html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8 引擎,javascript 多线程,模块化,⾯向切⾯编程,设计模式,浏览器兼容性,性能优化等。

记住前端追求的是:页⾯表现,速度流畅,兼容性,⽤户交互体验等。

这就是所谓的术业有专攻,这样你的核⼼竞争力才会越来越强,正所谓你往生活中投⼊什么,生活就会反馈给你什么。并且前后端的发展都越来越⾼深,技术越来越复杂,你想什么都会,那你毕竟什么都不可能精。

通过公司将团队分成前后端团队,让两边的开发⼯程师更加专注各⾃的领域,独⽴治理,然后构建出⼀个全栈式的精益求精的团队。

前后端分离的优势

  1. 可以实现真正的前后端解耦。前端服务器使⽤ nginx。前端/WEB服务器放的是 css,js,图片等⼀系列静态资源,前端服务器负责控制⻚⾯引用、跳转、路由,前端⻚⾯异步调用后端的接口,后端/应⽤服务器使⽤ tomcat,加快整体响应速度。

  2. 发现 bug 可以快速定位是谁的问题,不会出现互相踢皮球的现象。⻚⾯逻辑,跳转错误,浏览器兼容性问题,脚本错误,⻚⾯样式等问题,全部由前端⼯程师来负责。接⼝数据出错,数据没有提交成功,应答超时等问题,全部由后端⼯程师来解决。双⽅互不⼲扰,前端与后端是相亲相爱的⼀家人

  3. **在高并发情况下可以同时水平扩展前后端服务器 **。⽐如淘宝的⼀一个⾸⻚就需要 2000+ 台前端服务器做集群来抗住日均多少亿+的⽇日均pv

  4. 减少后端服务器 的并发/负载压力。除了接⼝以外的其他所有 http 请求全部转移到前端 nginx 上,接口的请求调⽤tomcat,参考 nginx 反向代理tomcat。且除了了第一次页面请求外,浏览器会大量调用本地缓存

  5. 后端服务暂时超时或者宕机了,前端页⾯也会正常访问,只不过数据刷不出来⽽已

  6. 支持多段应用。如果你需要有微信相关的轻应用,那样你的接⼝完全可以共用,如果也有 app 相关的服务,那么只要通过⼀一些代码重构,也可以⼤量复用接口,提升效率

  7. ajax 异步加载。⻚⾯显示的东西再多也不怕

  8. nginx 支持⻚面热部署,不⽤重启服务器 ,前端升级更无缝

  9. 增加代码的维护性他易读性(前后端耦合在一起的代码读起来相当费劲)

  10. 提升开发效率,因为可以前后端并⾏开发

  11. 前端⼤量的组件代码得以复用,组件化使开发效率得以提升

前后端分离的劣势

  1. 要求前后端开发工程师配合更加密切。在开需求会议的时候,前后端工程师必须全部参加,并且需要制定好接⼝⽂档,后端⼯程师要写好测试⽤例

  2. 加重了前端团队的工作量,减轻了后端团队的⼯作量,这一点可能只对前端工程师来说是劣势吧:)

总结

  1. 前后端分离并⾮仅仅只是⼀种开发模式,⽽是⼀种架构模式(前后端分离架构)。千万不要以为只有在撸代码的时候把前端和后端分开就是前后端分离了了,需要区分前后端项⽬。前端项目与后端项目是两个项目,放在两个不同的服务器 ,需要独⽴部署,两个不同的工程,两个不同的代码库,不同的开发人员。

  2. 前后端工程师需要约定交互接⼝,实现并行开发,开发结束后需要进行独立部署,前端通过 ajax 来调⽤ http 请求调⽤后端的 restful api。前端只需要关注页面的样式与动态数据的解析和渲染,⽽后端专注于具体业务逻辑等。

JavaEE 前后端分离以及优缺点的更多相关文章

  1. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(2)

    1.restful api介绍 1.前后端分离的优缺点 1.为什么要用前后端分离 1.pc.app.pad多端适应 2.SPA(单页面应用)开发模式开始流行 3.前后端分离职责不清 4.开发效率问题, ...

  2. 前后端分离构架 与 json ajax简介

    前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服 ...

  3. 从壹开始前后端分离 [.netCore 填坑 ] 三十三║ ⅖ 种方法实现完美跨域

    缘起 哈喽大家周四好,趁着大家在团建的时候花一个下午学点儿东西,也是督促大家学习哟,希望大家看到老张的文章,可以有一丢丢的学习动力.不过话说过来,该吃的团建还是要去的,不能学我呀 [ /(ㄒoㄒ)/~ ...

  4. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探

    更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...

  5. 细说 Django — web 前后端分离

    一.所谓的前后端分离 1.渊源 前端发展史 2.特点 前端:负责 View 和 Controller 层 后端:只负责 Model 层,业务处理/数据等 3.优缺点 优点:解耦,解放前端,职责明确 缺 ...

  6. [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

    [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员 ...

  7. NET Core3前后端分离开发框架

    NET Core前后端分离快速开发框架 https://www.cnblogs.com/coldairarrow/p/11870993.html 引言 时间真快,转眼今年又要过去了.回想今年,依次开源 ...

  8. SpringMVC+Spring+mybatis+maven+搭建多模块框架前后端分离开发框架的完整demo,拿走不谢。——猿实战02

            猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...

  9. 从零玩转SpringSecurity+JWT整合前后端分离

    从零玩转SpringSecurity+JWT整合前后端分离 2021年4月9日 · 预计阅读时间: 50 分钟 一.什么是Jwt? Json web token (JWT), 是为了在网络应用环境间传 ...

随机推荐

  1. C语言利用for循环打印菱形

    C语言利用for循环打印菱形(高度为奇数) 这次用的方法是上下部分分开打印,先打印上部分,再打印下部分. 先举个简单的例子打印,再改进代码,登堂入室从而理解. 例:打印一个高度(高度必须为奇数)为 5 ...

  2. Kafka优雅应用

    Kafka API实战 注意版本问题这个,kafka-client要和kafka的版本一致 <dependency> <groupId>org.apache.kafka< ...

  3. 关于 Spring 中 getBean 的全流程源码解析

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你提出问题,就要给出解决方案! 最近有粉丝小伙伴反馈,与自己的上级沟通总是遇到障碍, ...

  4. Go-24-异常处理机制

    error 接口 type error interface(){ Error() string } 在Go语言中处理错误的方式通常是将返回的错误与nil进行比较.nil值表示没有发生错误,而非nil值 ...

  5. 如何查看显著性SNP在数据中的频率?

    我们做完GWAS的关联分析后需要查看显著性SNP在我们数据中的频率分布情况.这时候我们需要用到plink和我们做关系分析所用的二进制文件datas. 第一步,我们用R语言读取分析结果,即*.assoc ...

  6. 解决mysql You can't specify target table for update in FROM clause错误

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  7. 痛!痛!痛!我们的好兄弟Git,一路走好!

    文章是正经文章,标题不要在意,哈哈 Git作为现在主流的版本控制工具,但是如何在软件开发过程中进行合理的分支管理是一个见仁见智的问题. 接下来我会对比下现有的几种比较普遍的分支管理方式和之前在阿里时候 ...

  8. C#中普通缓存的使用

    缓存的概念及优缺点在这里就不多做介绍,当然缓存包含多种有普通缓存.客户端缓存.DNS缓存.反向代理缓存以及分布式缓存等等.今天主要聊一聊C#通过编码来实现普通的缓存.话不多说直接上代码. 一.首先,新 ...

  9. Linux安装MySQL8高版本压缩包(通用)

    前言 前段时间领导让我部署测试环境,希望安装高版本的MySQL,过程遇到很多问题,特此记录帮助迷失的人们 下载 MySQL官方下载地址:https://dev.mysql.com/downloads/ ...

  10. jquery 和 bootstrap 的使用

    jquery 和 bootstrap 的使用参考 bootstrap简介 jqury在线手册 jquery快速入门教程 jQuery 核心函数和方法 jQuery API jQuery CDN jQu ...