文章目录
- 前后端详解
- 什么是前端?什么是后端?
- 前端和后端的联系
- 前后端 Vs 前后台 如何区分?
- 前后端开发详解
- 前端 Vs 后端 开发内容
- 前端 Vs 后端 技术栈
- 前端 Vs 后端 岗位区别
前后端详解
什么是前端?什么是后端?
前端
- 狭义上指web前端,在电脑上或者手机上浏览到一个个页面,用到html、css、js这三类标记语言。
- 广义上指大前端,包括web前端,APP,各类小程序。APP又包括移动端APP和PC端软件。
- 前端也指人或工种,指的是制作网页,编写前端代码的开发人员。
后端
- 实现前端的业务逻辑和数据库交互。
- 用java、python等高级编程语言编写的用于实现业务逻辑的代码。
- 后端也指人或工种,指的是负责实现业务逻辑和数据库设计与交互的开发人员。
- 具体来说,前端根据其实现的形式,常见的有:
- 移动端APP
根据手机系统的不同,有细分为苹果IOS APP 和 谷歌Android APP。除此之外,还有一些非常小众的手机系统APP。 - PC端软件
例如我们常用的Word、Excel、PowerPoint;电脑版的QQ、微信、QQ音乐;上网页用的浏览器等,都是PC端的软件。PC端也因系统的差异,前端也会进一步的细分。 - 网页web
网页基于HTML、CSS和JavaScript实现。Web网页具有编程语言统一、与平台无关的特点,我们可以通过电脑或手机上的浏览器,甚至内嵌了网页浏览器的微信、QQ、支付宝等,实现网页的访问。 - 小程序
例如,微信小程序“流海云印”和“风雨同行”;支付宝小程序“蚂蚁森林”。
是一种新生的事物,某些软件当用户规模足够巨大时,就可以设定一套规范,然后让前端程序员们直接为这些软件,而不是不同的系统,开发“程序中的程序”。
这样的好处在于,用户不用需要手机上装各种各样的APP,一个软件里就能解决大部分事情。
相对于用户看得见的前端,那用户“看不见”的部分,就是由后端负责了,后端程序猿要负责业务逻辑的实现、订单、用户资料等数据的增删查改。
一款产品的后端,一般只会用一种编程语言编写。一些功能特别丰富的产品可能会用一种编程语言为核心,另外用1~2种语言实现一些这类语言擅长的模块,例如用Java做核心语言,但配套的数据平台用Python写之类的。
由于在同一款产品中,后端编程语言不像前端一样根据系统/设备不同各种开花。所以,后端程序猿就可以一个人负责多个业务模块的后端编写,甚至轮流负责不同模块的编写。
后端需要去实现各种业务逻辑,订单流传、登录、退出及权限管理,实现数据的存储导出,进行不同系统间的对接等等。
前端和后端的联系
前端展示的数据都是从后端拿过来的。
前端的代码会下载到浏览器,浏览器解释执行后就是一个网页。后端的代码跑在公司的服务器,两者互相协同。
前后端 Vs 前后台 如何区分?
前台,指的是用户直接能看到的页面,所有人都可以访问。
后台,指的是有权限的运营人员或特殊用户(比如淘宝卖家)用权限登录后才能看到的页面,除了能看到普通用户看不到的报表外,在后台还能修改前台显示给普通用户看的内容。
前台不等于前端。前台的界面是前端编写的;前台的业务逻辑是后端编写的代码实现的。
后台不等于后端。后台的界面同样是前端编写的;后端的业务逻辑同样是后端编写的代码实现的。
前台和后台指的是页面,前端和后端指的是代码和写代码的人。
前后端开发详解
前端 Vs 后端 开发内容
- 运行环境不同
Web前端代码主要在客户端(PC、手机、pad)运行;
Web后端代码主要在服务端运行,服务器可以在提供服务厂家的数据中心,也可以在云端。 - 与用户紧密关系不同
前端重用户体验,主要是考虑怎样能让用户觉得用起来更舒服,考虑界面布局、交互效果、大数据量页面加载速度等等,主要是偏向用户看得见的部分,客户端(pc、手机、pad)上浏览web页面,处理各个浏览器平台的兼容和对界面的渲染差异,对UI库的依赖较强;
后端更多是考虑业务逻辑、数据库表结构设计、数据的事务操作、跨平台API设计、负载均衡、应用和服务部署等等,更多的是考虑用户看不到的部分,保证业务逻辑处理数据的严谨,保证用户访问数据吞吐的性能。 - 需求变更带来的影响不同
前端主要怕系统原型的频繁变更,布局样式、交互效果的需求变更;
后端主要怕业务逻辑变更,或者当使用规模增大之后对稳定性带来的影响。
以开发一个网站为例,前端开发人员团队设计网站的外观,并通过测试不断修改;后端开发人员团队开发软件,并构建支持前端的数据库架构。
具体来说,假如我要开发一个类似b站的网站,那么要做的工作如下:
- 前端开发人员设计网站主页和各个页面的外观以及内容布局,对应的岗位是UI(User Interface)设计师。UI设计师主要的工作并非是敲代码,而是设计我们用户看到的网页都长啥样子,里面都有哪些内容
- 前端开发人员通过使用HTML、CSS和JS等语言和框架把UI设计师设计出来的页面实现出来。
- 后端开发人员要设计数据库,并实现与数据库有关的增删查改的业务逻辑。比如以b站的注册页面为例:
- UI设计师设计b站的页面样子如上图所示,其他的前端开发人员编写代码,代码经过浏览器的渲染后,就真正成了我们用户看到的注册网页。
当新用户注册时,输入的昵称、密码和电话号码信息就会从前端传递给后端,后端再使用SQL语言,将数据插入到数据库中,存储下来。这样用户就实现了注册。
前端 Vs 后端 技术栈
前端 | 后端 | |
编程语言 | HTML,CSS,JavaScript | PHP,Python,SQL,Java,Ruby,.NET,Perl |
框架 | Angular.JS,React.JS,Backbone.JS,Vue.JS,Sass,Ember.JS,NPM | Laravel,CakePHP,Express,CodeIgniter,Rubyon Rails,Pylon,ASP.NET |
数据库 | Local Storage,Core Data,SQLite,Cookies,Sessions | MySQL,Casandra,Postrge SQL,MongeDB,Oracle,Sybase,SQL Server |
服务器 | Ubuntu,Apache,Nginx,Linux,Windows | |
其他 | AJAX,AMP,Atom,Babel,BEM,Blaze,Bourbon,Broccoli,Dojc,Flux,GraphQL,Gulp,Polymer,Socket.IO,Sublime Text |
前端 Vs 后端 岗位区别
对于初学者来说
前端:入门简单,先易后难,能看到自己做出来的展示页面,有成就感
后端:入门难,深入更难,枯燥乏味,没有太大成就感,看一堆业务逻辑代码
对于程序员来说
在实际的开发过程中,这个阶段对前后端的要求还是蛮低的,尤其是后端,新员工经过培训之后都可以参与到后端开发中,这些都是比较浅的技术层面,没有太高的技术门槛,唯一需要做的是先编码成为熟练工种。
前端开发人员精通HTML、CSS和JS,能熟练使用JQuery,并能熟练应用于页面布局、页面样式和屏幕分辨率自适应以及交互效果的开发等工作。
后端开发人员熟练使用一门编程语言(比如:Java、C#、Python、C++等)和懂一些设计模式,会编写SQL语言并懂数据库设计。
对于工程师来说
对于有了一定经验的前端软件工程师来说,这个阶段需要懂Node.js、Vue.js、React.js等前端框架,涉及到前端开发架构和开发效率(比如:组件、模版和验证/解析方法封装等等)一系列问题。
对于有了一定经验的后端软件工程师来说,这个阶段需要懂Spring/MVC、iBatis等框架,涉及到数据结构、设计模式、后端开发架构和开发效率(比如:业务功能和方法封装等等)一些系列问题。
对于技术经理或者架构师来说
这个阶段编程已经不是主要工作了,但必须具备上面的技能,还需要具备架构能力,跟开发者已经不在一个水平上了,主要区别在于技术领导力,本文只探讨前后端开发,就不再往下延伸了。