文章目录

  • 前后端详解
  • 什么是前端?什么是后端?
  • 前端和后端的联系
  • 前后端 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 前后台 如何区分?

前台,指的是用户直接能看到的页面,所有人都可以访问。

移动端后台架构 移动端和后端_前端_02


后台,指的是有权限的运营人员或特殊用户(比如淘宝卖家)用权限登录后才能看到的页面,除了能看到普通用户看不到的报表外,在后台还能修改前台显示给普通用户看的内容。

移动端后台架构 移动端和后端_业务逻辑_03


前台不等于前端。前台的界面是前端编写的;前台的业务逻辑是后端编写的代码实现的。

后台不等于后端。后台的界面同样是前端编写的;后端的业务逻辑同样是后端编写的代码实现的。

前台和后台指的是页面,前端和后端指的是代码和写代码的人

前后端开发详解

前端 Vs 后端 开发内容

  1. 运行环境不同
    Web前端代码主要在客户端(PC、手机、pad)运行;
    Web后端代码主要在服务端运行,服务器可以在提供服务厂家的数据中心,也可以在云端。
  2. 与用户紧密关系不同
    前端重用户体验,主要是考虑怎样能让用户觉得用起来更舒服,考虑界面布局、交互效果、大数据量页面加载速度等等,主要是偏向用户看得见的部分,客户端(pc、手机、pad)上浏览web页面,处理各个浏览器平台的兼容和对界面的渲染差异,对UI库的依赖较强;
    后端更多是考虑业务逻辑、数据库表结构设计、数据的事务操作、跨平台API设计、负载均衡、应用和服务部署等等,更多的是考虑用户看不到的部分,保证业务逻辑处理数据的严谨,保证用户访问数据吞吐的性能。
  3. 需求变更带来的影响不同
    前端主要怕系统原型的频繁变更,布局样式、交互效果的需求变更;
    后端主要怕业务逻辑变更,或者当使用规模增大之后对稳定性带来的影响。

以开发一个网站为例,前端开发人员团队设计网站的外观,并通过测试不断修改;后端开发人员团队开发软件,并构建支持前端的数据库架构。

具体来说,假如我要开发一个类似b站的网站,那么要做的工作如下:

  • 前端开发人员设计网站主页和各个页面的外观以及内容布局,对应的岗位是UI(User Interface)设计师。UI设计师主要的工作并非是敲代码,而是设计我们用户看到的网页都长啥样子,里面都有哪些内容
  • 移动端后台架构 移动端和后端_后端开发_04

  • 前端开发人员通过使用HTML、CSS和JS等语言和框架把UI设计师设计出来的页面实现出来。
  • 移动端后台架构 移动端和后端_后端开发_05

  • 后端开发人员要设计数据库,并实现与数据库有关的增删查改的业务逻辑。比如以b站的注册页面为例:
  • 移动端后台架构 移动端和后端_前端_06

  • 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等框架,涉及到数据结构、设计模式、后端开发架构和开发效率(比如:业务功能和方法封装等等)一些系列问题。

对于技术经理或者架构师来说

这个阶段编程已经不是主要工作了,但必须具备上面的技能,还需要具备架构能力,跟开发者已经不在一个水平上了,主要区别在于技术领导力,本文只探讨前后端开发,就不再往下延伸了。