前端程序员和后端有什么不同?
当今世界,几乎所有的行业与领域都有互联网的影子,而 web 开发是产品向互联网靠近必不可少的一步。互联网的确是一件了不起的事情,它可以让你方便地获取到全球的信息,也可以将你需要分享的内容快速地送达世界各地。而在这其中,网站代表万维网上的内容,建设网站的正是所谓的程序员们。
本世纪初,互联网开始在国内蓬勃发展,那时的网页处于 web 1.0 时代,整个信息是单向流动的。读者只能被动接收信息,而无法产生互动。
混沌之初作为当时互联网的引领者,新浪很有代表性,下图是新浪网 2002 年的网页快照:
整个网站就是表格 (table) 中加入数据,不需要复杂的技术支撑,也没有繁多的业务场景。获取数据到展现数据没有清晰的界定,程序员根本不用区分前端还是后端。更重要的是,那时有计算机的人不多,懂编程的人更是凤毛麟角,甚至会写 hello world 已经是大神级人物了,而就是这样的简单网站就可以支撑起一个上市公司,在如今看来,这样的水平只能称得上是“小学生”作业。PHP语言的兴起更是模糊了前端和后端的职责,程序员将数据从数据库中读取以后,通过服务器直接发送到浏览器。整个过程一气呵成,一个人能完整的工作,就不需要分开了。难怪有了那句真理——PHP是世界上最好的语言。淘宝网最初就是采用的PHP,多年的迭代以后,才有了现在的模样。
逐渐分离随着人们对互联网的认识越来越高,用户不但是网站内容的浏览者,也想成为网站内容的制造者,web 2.0 时代由此诞生。
Web2.0 更注重用户的交互体验,互联网上的每一个用户由被动地接收互联网信息,到主动创造互联网的信息发展,用户的参与感陡然升高。对网站的交互性、体验性、稳定性、安全性等等都提出了更高的要求。同时,互联网瞬息万变,各种需求铺天盖地,一个人的精力无法快速实现业务需求,也很难对各种技术精通掌握。任务拆分与职责划分迫在眉睫,于是各大公司开始探索前后端分离方案。
后端开发语言众多,C、C++、Java、Python、Go等等,Java 语言常年稳坐头把交椅,这里主要以 Java 来介绍前后端发展的历程。在 Java 发展初期,浏览器请求经过控制器处理以后,根据请求信息分发给适当的 JSP 相应用户请求。为了适应前后端分离,前端工程师将设计原型制作成html+css,后端工程师将 html 改造成 jsp,并集成服务接口。但是这样的开发是强依赖的,前端没有完成任务,后端很多工作无法开展。再者 JSP 自身性能问题比较严重,不太适合快速发展的互联网场景,维护 JSP 页面也是一件令人崩溃的事。Ajax 时代Ajax 的大量引入,使得前端开发负责开发页面,后端开发负责开发服务接口,然后通过 Ajax 传输 JSON 数据。前端开发采用 DOM 操作对页面进行数据绑定,最终由前端把页面渲染输出到浏览器,呈现给用户。前端不会涉及到后台的任何代码,专注于 HTML、CSS、Javascript,开发时可以通过模拟 JSON 数据来渲染页面,不依赖后端的进度。后端更是专注于复杂的业务场景,着重服务的稳定性与准确性。此时,前端主要使用的技术栈除了基本前端技术,莫过于 jQuery、Bootstrap等,每遇到新需求就得新建页面,写一堆重复代码,页面性能优化空间有限,动效还需要借助 Flash 等插件,兼容性欠佳。稍微复杂的业务场景,前端开发者几乎都无法参与其中,前端开发人员也被认为挑战性不高,薪资方面也时常“受到歧视”。同一时刻,Java 后端开发则是以 Spring 为首的 SSH、SSM框架肆意横行,只要搞定数据库数据库的增删改查,就能称之为合格的后端开发。要是在业余学习一点点html、css、jQuery 相关技术,也能前后端通吃,好像前后端界限明显了,但是区分度不高。遍地开花网民数据的急速攀升与用户体验的日益丰富,使得前后端在各自的领域迅猛发展,形成了如今真正意义上的前后端分离。前端的繁荣盛况离不开一大功臣——Node.js,Node.js适合用在高并发、I/O密集、含有业务逻辑的场景,并且本身采用 Javascript 开发,前端人员接入成本低,上手难度小。下图演示用 Node.js 来做为桥梁架接服务器端API输出的JSON:
浏览器请求 Node.js 服务器,Node.js 再请求后端服务,后端服务的接口返回的数据在 Node.js 服务器处理,然后渲染出 HTML 页面,最后直接将 HTML 返回给浏览器。前端领域近几年的技术与框架层出不穷,HTML5 将 html 限定为控制元素位置,CSS3 在控制外观方面加入了更多可能,预处理其Sass、Less更是锦上添花,特别是 Javascript 发展异常凶猛。谷歌的 Angular、脸书的 React、国内骄傲产品 Vue 接连出现,前端开发进入一次全面封装的时代,组件化开发思想大行其道,npm 的广泛使用又一次将其推上高潮。单页面应用让页面真正的动起来,不同用户,不同场景可以呈现完全不同的数据与风格,“千人千面”让用户体验更上一层楼。此外,移动端的爆发和小程序的兴起,更是加速了前端领域的发展,各种打包与构建工具的不断迭代,使得前端有了自己的闭环,再也不是低人一等的工种。此时,后端的技术栈也进入了新时代。引入 nginx 负载均衡应对外部用户的高并发请求,引入微服务理念的 SpringCoud、Dubbo 等做业务拆分,大数据量下数据库也开始分库分表,为了加速数据查询引入 Redis 等内存数据库,还加入 Kafka 或 Rabbitmq 等消息服务来异步解耦复杂业务。各种中间件迅速崛起,中台的重要性愈加明显,“大中台,小前台”战略被各大公司纷纷效仿。与时俱进的前端与后端从前后端的产生背景来看,前后端从混沌状态,到逐渐分家,再到如今“各自为营”,是互联网发展必然导致的结果。任何技术方案都不是银弹,前后端目前也在飞速发展。从当前的时间节点来看:前端思维倾向于用户体验,而后端思维则更倾向于业务的技术实现。前端开发人员将数据以优美的方式展现给用户,以用户为中心,再加之流畅的页面与良好的交互体验,把持着产品的“面子工程”。为此新型了很多UI设计师、UX交互体验设计师等职业。后端开发人员控制提供哪些数据,以数据为中心,准确、安全、稳定、高效地提供业务数据是后端程序员一直追求的目标,把持着产品的“里子”。为此也新型了中间件工程师、DBA 工程师等职业。前端和后端开发工作相似而内容完全不同,也有开发者精力旺盛,对前后端技术运筹帷幄,当起了全栈工程师。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有