到底什么是前端、后端、后台啊?

RT,平时听人说的什么前端、后端、后台到底是指的什么啊?计算机文盲真心求教啊!谢谢了啊!
关注者
834
被浏览
1,826,054

38 个回答

重要内容先提前放:

最常见的语境下:

前台,后台,指的是具体页面

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

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

前端,后端,很多时候指的是人,即前\后端攻城狮。衍生含义为——前\后端攻城狮的工作内容。

不严谨的说法是:前端是写代码给浏览器看的。后端是写代码给服务器看的。

如果不是专业人士,在做IT项目的时候,请谨慎使用“前端”、“后端”这两个词,容易造成误会。你口中的前\后端,很多时候和程序猿理解的前\后端估计不是一个意思。因此,请尽量使用容错率更高的“前台”、“后台”这两个词。

汉语博大精深,加上每个公司的用词也可能有自己的习惯,因此也有一些语境下,前台约等于前端,后台约等于后端。

以下是具体解释最常见语境下的区分:


先来看看页面层面。

我们来看看什么是前台:

前台,是用户直接能看到的页面,所有人都可以访问。比如上面这种随处可见的导航。


但是项目结束后,乙方外包团队全跑路了,我这里又没人会敲代码,要改这个导航怎么办?

当当当当!后台闪亮登场!

我们可以让乙方交付一种页面,这种页面能帮助我不用敲代码就能修改以上这个导航。

后台,是有权限的运营人员或特殊用户(比如淘宝卖家)用权限登陆后才看得到的页面,除了能看到其他人看不到的报表外,在后台还能修改前台显示给用户看的内容。有了这样一个页面,连我的奶奶都会修改前台显示给用户的内容:

(除此之外,更复杂的场景下,还有“中台”存在。这时前台即展现层,后台即数据层,中台即逻辑层。中台是什么则说来话长,但大体是为了让前台与后台解藕更彻底,以便更快响应用户需求而存在的。)


至于前端(攻城狮)与后端(攻城狮)。不严谨的说法是:

前端是写代码给浏览器看的。后端是写代码给服务器看的。

如果不是专业人士,在做IT项目的时候,请谨慎使用“前端”、“后端”这两个词,容易造成误会。你口中的前\后端,和程序猿理解的前\后端估计不是一个意思。因此,请尽量使用容错率较高的“前台”、“后台”这两个词。


前端和后端解释起来有些麻烦且枯燥,感兴趣的朋友可以继续往下看:


当你在百度敲下“如何找一个女朋友”,并按下搜索按钮后,你的电脑就会发送一个请求给服务器,服务器会根据这个请求,来决定接下来的操作——1)监视你的爱好。存“属性:男屌丝。爱好:女。”去数据库。2)从数据库里挖点什么“把妹神技”吐回给用户,让他觉得很厉害的样子。根据这个过程,用户就收到了他想要的东西,万事大吉。

我勒个去?有33,400,000个方法找女朋友?男同胞们,你们还好意思单身?

绝大多数情况下,互联网就是这样运行的——发东西给服务器,服务器再发回些什么东西。

这其实就是http协议的功能之一,关于http协议,这其实是一个大坑,在这里展开就没完没了了。
至于不符合上面说的绝大多数情况?那很可能就不是http协议拉,比如基于更上一层TCP协议的Websocket,不过这个扯得就会有点远了。
Websocket最常见的应用就是我们经常说的推送。所谓的推送,就是在你不发东西给服务器的情况下,服务器都会像舔狗一样发东西给你。

咦?这个故事就那么简单吗?那还要分什么前端后端?没错,在遥远的年代,确实不分什么前端后端,反正都叫程序猿就对了。

那为什么前端和后端被搞出来了呢?

在上面这个简单的故事中,其实涉及到三个很重要的东西——浏览器、服务器、数据库。

以php项目常见的流程来说(php是某种语言,可以理解成和python、java差不多的东西),其过程一般是类似于下面这张图。下面我们来说说浏览器、服务器和数据库

浏览器是“翻译”程序猿写的代码给用户看的。

“翻译”的过程,很多人称之为渲染(render)。是不是听上去这个词挺高大上的。

写给浏览器看的,主要是html文档,html文档主要会使用html、css、JavaScript三种语言。久而久之,就有一些程序猿因为长期受这方面工作的锤nue炼dai,而变得更擅长这块工作了。

除此之外,是谁根据请求来操作数据库的?是服务器。服务器也是电脑,让电脑自动办事来读写数据库,就需要写程序。能操作电脑的玩意就有很多了,比如经常被提到的java、C++都可以。同样地,有些程序猿搞着搞着,就变得更擅长这部分工作了。

这其实很多时候涉及的是操作系统的命令调用,关于操作系统,又是一个大坑。

虽然很不严谨,圈子里程序猿的生态因此发生了变化:随着互联网开发工作任务的日益加重,越来越多的人开始组队做同一个项目。擅长html、css、JavaScript的程序猿,进化成了前端工程狮,天天倒腾浏览器,他们对用户体验负责。擅长java的程序猿,进化成了后端攻城狮,天天倒腾数据库和服务器,他们对服务器性能及数据负责。

但他们组队工作的时候,一旦发现bug或发生变更,就有可能就会逼的别人无奈地跟着自己一起改。这样的工作效率实在太低了。

为了防止这两种不同的攻城狮工作内容串杂在一起,双方约定,定下一个发送请求的地址,和请求的格式,至此老死不相往来。这种请求的地址和其相应的格式,又被称为API(接口)。至此,做好API文档后,前端和后端终于可以老死不相往来,各自调试各自的代码。这一不相往来的概念,也被称为前后端分离

而前后端分离,也诞生了一种新的"变态"——Node.js,这个玩意虽然是用前端最爱的JavaScript语言,但是可以操作服务器。不过Node.js主要是被前端用来做中间件(可以理解为为了分离的更彻底一点)的,因此很多时候也被纳入前端范畴。
当然随着时代的发展,“变态物种”越来越多……已经不限于Node.js了。
不过现在还是有很多项目是不做所谓的前后端分离的噢!很多轻量级的python、php项目就不做分离。为什么不分离?因为这种项目往往一个人就能搞定……在这样的项目中,你说前端、后端啥的,估计对面程序猿一脸懵逼。

当然,根据互联网的发展,也同时进化出了更多的其他生物:我们发现网页太丑了。好,我们叫擅长美工的人来帮忙,他们成了UI。我们发现用户太能折腾了,老板太能折腾了,甲方太能折腾了。好,我们叫擅长沟通的人来帮忙把客户和老板讲的东西理成结构化的文档,或是把用户的需求收集起来理成将来要做成软件的样子,他们成了产品经理。我们发现往网站上写文章,填内容实在是麻烦,而且要把网站流量做大,还得找个人出出主意,于是,运营也诞生了。我们发现上线后服务器怎么老是不稳定,后端大佬们都去做新项目了,得找个hold的住服务器和机房的专家,然后运维出现了……现如今,哪怕前端和后端都有不同的进化分支了,互联网生态真是越发丰富了呢。

嗯,差不多就是这个意思。

后台应该是管理网站的,一般叫网站管理后台,比如发文章啊,查看浏览数据啊等等,对应的也会有网站前台,即访客能看到的页面,对了,后台肯定不能对访客开放的,没人愿意让访客来修改自己网站文章的。一般呢,你输入http://www.***.com 看到的就是网站前台,有些网站呢,你输入http://www.***.com/admin/ 就能进入到那个网站的管理后台页面了,但是需要输入账户密码。

前端后端算是编程序范畴,其实有的人管这个也叫前台后台,具体语境具体分析吧,我这就不把他俩混淆着说了。但凡你能看到的http://www.***.com也好http://www.***.com/admin/也好,只要你能看到,这些都是前端的功劳,比如一个网站是红色的,过几天变成黄色的了,这就是前端改布局了。

忽然有一天你又看到,唉,这网站可以添加评论了啊,这是因为后端开发出了评论功能模块,当然,你能看到这个评论功能啥样子,这是前端的功劳。于是你就输入几行文字评论几句尝尝鲜,你发现评论成功了,以后你什么时候来这个网站都能发现这条评论在这显示,那是因为你输入的评论内容被后端存储到数据库里了,这里有对应的操作数据库的代码,我们习惯叫增删改查,你写入评论,就是插入数据库,你刷新页面能看到那片评论,就是读取数据库,你觉得你评论的不好,点击编辑该评论,就是改数据库;你觉得评论的不满意,点击删除,那就是删除了。不过这些功能都是程序来执行的哈,后端已经编好一段代码来执行这些操作了后端就去忙别的了(比如喝咖啡打游戏什么的),不是你以为的你在前面输入个什么东西,后端程序员看到了就复制粘贴到数据库里,不是这样的,真不是这样的。。。
当然,你其中点击编辑、点击删除这样的操作,也是前端的范畴,其实此处前端程序起到的是搬运功能,你点击编辑按钮,前端就把你的编辑操作的一些数据通过接口提交给后端程序,后端程序再根据前端传过来的数据再去操作数据库。

以上只是初级的分类,其实前端也能做很多其他的事,比如让网页打开更快之类的,就不多说了,你知道这些就足够了~