网友提问:
前端程序员和后端有什么不同?
优质回答:
前端工作内容:
前端开发主要做的是用户所能看到的前端展示界面。前端开发用到的技术包括但不限于html5、css3、javascript、jquery、Bootstrap、Node.js 、AngularJs等技术。从开始的切页面,到现在复杂的前端单页应用,node服务端应用,移动端react-native等,前端的技术更新速度远远超过服务端的更新速度,这也就要求前端同学,需要不停的学习新的技术来跟上前端技术的升级,一旦松懈,就可能被淘汰。前端现在所覆盖的场景已经越来越广,从传统的前端,已经延伸到服务端,工具链,移动端等。而对于新手来说,前端入门是最容易的,现在很多人直接从主流框架开始学习前端,react, vue 看一看就可以直接开始项目开发了(但是不推荐,还是从HTML, CSS, ECMAScript 基础学期)前端入门容易,但是比较容易陷入API型程序员,各类框架和库都会用,但是都不够深入。服务端入门相对难,但是时间长了,比较容易构建技术壁垒,拉开差距。
后端工作内容:
开发主要做的是逻辑功能等模块,是用户不可见的。后端开发 以java为例 主要用到的 是包括但不限于Struts spring springmvc Hibernate Http协议 Servlet Tomcat服务器等技术。后端适合重逻辑,逻辑思维强的同学,技术难度相对是要比前端深的,虽然会基本的CURD就能从事后端开发,但是在云计算时代,只会CURD是迟早会被淘汰的,docker容器技术,serverless ,函数计算, devops 越来越多的新技术和新架构出来,需要很长时间去慢慢学习和积累,后端的学习是一个漫长的过程。
其他网友回答
当今世界,几乎所有的行业与领域都有互联网的影子,而 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 工程师等职业。前端和后端开发工作相似而内容完全不同,也有开发者精力旺盛,对前后端技术运筹帷幄,当起了全栈工程师。
其他网友回答
前端工程师主要的工作职责分为三大部分,分别是传统的Web前端开发,移动端开发和大数据呈现端开发。Web前端开发主要针对的是PC端开发任务;移动端开发则包括Android开发、iOS开发和各种小程序开发,在移动互联网迅速发展的带动下,移动端的开发任务量是比较大的,随着5G标准的落地,未来移动端的开发任务将得到进一步的拓展;大数据呈现则主要是基于已有的平台完成最终分析结果的呈现,呈现方式通常也有多种选择,比如大屏展示等。
后端工程师的主要职责也集中在三大部分,分别是平台设计、接口设计和功能实现。平台设计主要是搭建后端的支撑服务容器;接口设计主要针对于不同行业进行相应的功能接口设计,通常一个平台有多套接口,就像卫星导航平台设有民用和军用两套接口一样;功能实现则是完成具体的业务逻辑实现。
其他网友回答
一张图说明一切
其他网友回答
前端一般是指WEB前端,负责的是界面数据的展示实现和数据的获取。
后端则是构建应用程序背后的实际逻辑和系统框架以及通过指出从数据库中提取数据并将其传回到前端。主要是负责处理、读取、存储数据以及提供Api接口
前后端需要掌握的主要技能前端:熟练掌握一种原型设计工具,能够将构思通过工具绘制成原型图,并将设计出的原型图通过页面代码的方式表现出来;需要和设计师就原型图进行某些效果实现的探讨;搭建良好的页面结构(先分析布局,划分框架,然后规划结构,编写代码);合理的使用标签、良好的注释、清晰的代码结构等。后端:从数据库或其他数据源写入、读取和处理数据(拥有SQL等技能会非常重要);需要擅长他们正在使用的技术栈的服务器端语言;需要去构建应用程序的体系结构和内部设计。