前端和后端Web开发之间的区别

在本文中,我想帮助您从概念上在Web开发的背景下从前端过渡到后端。

首先定义什么是前端。前端是我们用来在浏览器内部识别程序的术语。我们也称其为客户端Web开发。

在前端,您担心创建和分发在客户端计算机上运行的应用程序,该计算机可以是便携式计算机,台式计算机或移动设备。您构建要分发的内容,然后在每个客户端浏览器中运行。

在后端,您设计并构建一个在单个服务器上运行的应用程序(开始时),每个客户端都可以访问该应用程序。该应用程序在您控制的环境中的服务器中运行,然后使用该应用程序的服务器端呈现将其发送给浏览器,或者您创建了一个将JSON数据分发给客户端的API(最近很常见,特别是与诸如React,Vue等前端框架/库配对。

您已经可以看到这里有一个重叠部分。后端可用于服务将在浏览器中运行的面向前端的应用程序。

HTML,CSS,JavaScript,图像,动画,React,Vue,Svelte,CSS-in-JS,前端状态管理,性能优化,所有这些主题(还有更多!)都与前端编程相关联。

某些应用程序只需要前端部分。例如,我的网站没有后端。这是一个使用Hugo生成的静态网站,我在该网站上所做的所有工作都被视为前端编程:例如CSS,标记以及我用来增强搜索功能的JavaScript。

前端编程有其独特的挑战集:例如,浏览器对功能的支持。或低端设备上应用程序的性能。构建单页应用程序。

后端开发与前端开发完全不同。首先,您退出浏览器环境,该环境一方面正在释放,但也可能不堪重负。

为什么?好吧,您还有更多选择。

在浏览器中,编程语言选择始终是JavaScript。或一种可编译为JavaScript的语言,例如TypeScript,Elm等。

在后端,您可以使用任何您想要的东西。我通常的选择是Node.js,因为基于JavaScript,我可以成为一种语言的专家,并且可以使用JavaScript在前端和后端工作。

但是您可以使用如下框架:

  • 基于Python的Django
  • 基于PHP的Laravel
  • 基于Ruby的Rails
  • 基于Elixir的Phoenix
  • 基于TypeScript的Deno

以及其他许多方面,包括Java和.NET等面向企业的生态系统。

我什至没有提到Go和Rust,这是两个不错的选择。

这可能是后端编程的最大优势:您可以使用多种语言选择语言,因此可以使用自己喜欢的语言。但是,如果您不确定自己喜欢什么,也可能导致“分析瘫痪”。

在后端,我们没有在前端需要面对的问题。我经常听到的一件事是前端开发太快了。每天都会弹出新事物,并且最好的工具每月都在变化。这不是虚假陈述。相比之下,后端看起来更像是一个节奏较慢的生态系统,尤其是在众所周知且成熟的环境和工具中,而且编写良好的后端可以感觉很现代了很多年,而我们在前端却不能说同样的话。

当然,在后端,我们有自己的一系列问题。例如,如何在数据库中存储数据。如何选择合适的数据库。 SQL与NoSQL。微服务与整体。如何以及在哪里部署我们的应用程序。如何处理更多流量。如何安全地处理数据和请求。如何测试和处理错误处理。如何选择正确的架构。

然后,我们将讨论与DevOps重叠的主题,例如如何使用Docker和Kubernetes,如何设置持续集成和持续交付工作流程,如何处理Linux,基础架构和服务器级网络。我们需要面对各种选择,例如使用我们自己的VPS服务器或使用诸如Heroku之类的PAAS,或者使用AWS Lambda进行无服务器化。根据您工作的公司和团队的不同,您可能还需要准备解决这些主题。

当然,我们需要弄清楚如何将后端连接到前端。如何建立API。 GraphQL与REST。如何处理身份验证。如何快速扩展API。这些主题涉及前端和后端,以使他们彼此交谈。

有很多东西,您可以找到关于这些主题的整本书,这就是为什么我们将前端开发人员和后端开发人员区分开来,为什么成为一个能够解决所有这些问题的全栈开发人员是一项有价值的技能。

当然,您不必知道所有这些内容就可以成为前端或后端开发人员。您需要全面了解这些内容,以了解您尚不了解的内容(尚未)。但是,专门研究一个特定的细分市场并在这一方面变得出色也是一个好主意。

例如,您可以是不了解如何处理高级Linux配置的后端开发人员,而可以依靠诸如Heroku之类的PAAS来为您执行此操作。或使用AWS Lambda完全避免这种情况。

我认为重要的是要知道什么时候最好学习和自己动手,而不是使用支持您工作的工具。