术语“前端”是否与“客户端”同义?如果是这样,是否总是这样?


18

作为一个相对较新的(自学成才的)Web开发人员,我经常听到术语“ 前端”,“ 客户端”,“ 后端”和“ 服务器端”。对我来说,前端和后端始终分别是客户端和服务器端的同义词。

但是,随着我开始使用诸如CodeIgniter之类的MVC框架,我遇到了一些前端实例,这些实例基本上指的是最终用户看到的任何东西(包括服务器端代码),而后端则指的是任何东西。最终用户看不到(包括CMS)。对我来说,客户端和服务器端的含义更为具体。它们之间有很明显的界线。另一方面,前端和后端则没有。

我记得在与另一位Web开发人员的一次交谈中,他将CodeIgniter(全部)称为前端,这使我陷入了循环。我不确定是否要纠正他并说CodeIgniter是我的后端,或者我对这两个术语的定义完全错误。

搜索前端和后端的定义在某些方面使我有些困惑,尽管它们确实澄清了一些事情。我只想知道这四个术语之间的界线,以及它们在Web开发的上下文中(特别是在LAMP堆栈上)如何组合在一起。


1
我曾与一个使用“前端”和“后端”来表示“正面”和“背面”的家伙一起工作。无论他是“正确”是另一个问题。
user16764

我们应该改用“后验”一词。开玩笑的 我希望有另外一句话。“后端”的同义词并不令人鼓舞。
Erik Aronesty

Answers:


17

我认为这些术语没有正式的定义,正如您所指出的,在某些情况下存在重叠。

front-endclient-side重叠。
server-side并且back-end重叠。

如果我要分开头发,我会提供以下粗略界限:

  • client-side是在用户计算机上运行的应用程序。它可以是一个独立的应用程序(更多),也可以引用基于Web浏览器的界面(可能性较小)。
  • front-end它还面向最终用户,并且通常在基于Web浏览器的界面中运行。我还没有听说过胖客户被称为front-end
  • back-end指在另一台服务器上或在用户计算机的后台运行的进程和服务。通常,它指的是不在最终用户计算机上的进程。但是,正如您提到的,关键是最终用户不一定知道正在运行的进程。
  • server-sideback-end进程的扩展,但明确增强了以下事实:进程在其他地方而不是在最终用户的计算机上运行。

作为示例,为了强调这些术语之间的混淆,我将以Minecraft为例。

我的世界有一个

  • client-side 您使用自己的JVM在本地运行jar文件时的应用程序。
  • front-end 如果您选择在Web浏览器中运行客户端应用程序
  • back-end 在独立模式下可以在计算机上本地运行的进程
  • server-side 如果您选择登录托管Minecraft服务器应用程序的服务器,请执行此步骤。

如果您深入研究Minecraft的一些统计信息,您会发现它们只是为游戏指定了clientserver组件;他们不一定在乎这些组件的运行位置。


要直接回答您的问题:

术语“前端”是否与“客户端”同义?

有点,但不是真的。如果您要讨论基于Web的世界之外的内容,那么这些术语之间会有细微差别。如果您严格属于网络世界,那么是的,它们在功能上是同义词。

如果是这样,是否总是这样?

在网络世界中,我会说“是”。在其他领域,我会说不,正如我提供的粗略定义中所述。


那就是我的想法。感谢您帮助我解决这个问题。
DC_

2
后端通常用于表示网站/应用程序的客户端管理部分。
Florian Margaine 2013年

19

服务器端在服务器上运行。客户端在客户端上运行。后端处理数据。前端正在显示它。

看这个网页。从数据库中提取所有注释是服务器端的后端工作。将数据放置在模板中是前端服务器端的工作。AJAX投票小部件和精美的文本输入框是前端,客户端。


4
+1指出前端/后端概念与客户端/服务器端概念之间的正交性
Francesco Feltrinelli

1

我通常发现使用客户端和服务器端来描述开发人员/开发人员并不那么模糊。我们正在处理/格式化数据的那部分客户端可以看作是后端组件。另一方面,所有模板都倾向于在后端发生,而“针对前端”则往往导致人们将它们称为前端Java或C#开发。很少见,但我已经在工作说明中看到了。

但是可以,通常来说,前端是发生交互的部分。后端是所有交互都变成有用的东西的部分。


0

这个问题年龄较大,但让我添加我的2c:

在我自己的Web开发中,我使用“前端”一词来表示代码(或其他资源),这些代码在浏览器中处理了一段时间。现在,我使用术语“客户端”,因为它可能会使esp感到困惑。在做网络应用程序时。(单页应用)

因为在后端侧简单地,还有一个“前端”,一般来说,这意味着负责输出用应用程序(浏览器)的一部分。因此,“前端”实际上可以表示两种不同的含义。但是,“客户端”一词无法更清楚地描述与实际客户端(在本例中为浏览器)相关的内容。

PS:嗯,也许我现在也应该将昵称更改为“ client_dev”;)


0

Web应用程序中的客户端在用户/客户的控制下,服务器端在开发人员的控制下。这就是为什么要在服务器上进行数据验证的原因之一。

术语“ 前端”和“ 后端”通常是客户端服务器端的同义词,在很多情况下都可以。但是,也有重要的反例。对我而言,前端是向用户显示内容的任何东西。

在下图中,您可以看到典型的技术/概念以及它们如何适合(前端,后端)/(客户端,服务器端)象限。

在此处输入图片说明

前端和后端开发人员

前端和后端开发人员是两个非常常见的角色。当您遇到诸如可在服务器端渲染的React和包括jinja模板引擎的 Flask之类的内容时,这条线会变得有些模糊。

尽管我将Web SQL数据库和索引数据库API之类的技术放在“客户端后端”象限中,但通常知道的角色是前端开发人员角色。

  • 前端开发人员应该了解HTML,CSS,DOM和常规浏览器功能(例如caniuse)。通常,他们知道一些jQuery或React。尽管按照我的定义是后端,但我希望前端开发人员了解客户端存储
  • 后端开发人员应该了解诸如nginx,gunicorn,Apache或node.js之类的Web服务器。他们应该知道至少一个SQL数据库(Postgres,MariaDB / MySQL等),键值存储(Redis),API开发(REST和GraphQL)。LAMP是前一段时间的典型堆栈。我不希望后端开发人员对浏览器有所了解!

UI设计器与前端开发人员

UI设计器和前端开发器是另外两个角色。所以一个区别是,一个是设计师,一个是开发商。

目的:

  • UI设计人员起草了用户体验
  • 前端开发人员确保看起来像预期的效果(根据草稿构建真实的东西)

工具:

  • UI设计人员大多使用Adobe Photoshop / Illustrator / Sketch / Balsamiq / Invision。
  • 前端开发人员使用React,Vue,Angular

API:REST和GraphQL

API由后端团队提供,并且由前端用于将数据填充到应用程序中。后端是跨设备的持久性存储,前端是表示层。API是两者的通信渠道。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.