为什么后端开发需要单独的服务器?

问题描述 投票:0回答:2

我正在开发自己的网站。到目前为止,我已经使用 React 作为前端,使用 Flask 作为后端。我从事前端开发已经有一段时间了,但我才刚刚开始进入后端。

根据我有限的理解,像 Flask 和 ExpressJS 这样的框架会创建自己的服务器并托管前端可以使用的数据。在我看来,他们会自动创建网站来托管和接收数据。在我的网站中,我路由后端执行我想要的操作,并使用来自前端的 POST 和 GET 获取请求进行通信。

虽然它有效,但对我来说,它似乎过于复杂。为什么后端需要自己的服务器?似乎没有必要为前端创建代理并获取数据。为什么网站不能只在后台运行自定义代码,为什么需要像 Flask 或 ExpressJS 这样的服务在后台运行?这些后端框架在后台运行Python或NodeJS,但是如果网站本身可以在后台运行Python或NodeJS不是更简单吗?

我还发现,在 React 这样的框架中,您可以导入内容并使用模块——就像在 NodeJS 中一样。虽然导入某些模块有效,但不允许使用

require
关键字,并且正常的 NodeJS 代码将无法工作。因此,后端将无法工作。这是为什么——为什么不能直接运行后端代码呢?相反,您必须通过获取并指定标头才能基本上将信息从前端转换到后端。

请原谅我对 Web 开发的业余理解,但前端/后端系统对我来说似乎过于复杂。

node.js web frontend frameworks backend
2个回答
1
投票

为什么后端需要自己的服务器?

客户端将数据存储在哪里,以便当您再次打开页面时数据仍然存在?您可以使用

localStorage
但这被锁定到特定的浏览器。如果有人在不同的设备上登录或使用不同的浏览器怎么办?

客户首先从哪里获得申请?您的应用程序需要以易于下载的形式打包,并且需要一个加载地址。即使您使用的是 GitHub Pages 这样的静态托管服务,这也被视为“后端”。

后端存在并需要自己的服务器有很多原因。任何具有持久状态且预计能跨不同会话工作的应用程序都需要至少其中之一。


0
投票

回顾更多的经验,我想我可以回答这个问题。

令我困惑的是,开发人员要经历后端库和 API 路由配置的所有麻烦。这似乎是一种非常迂回的编写代码的方式。

要理解开发人员这样做的原因,您必须对后端和前端有基本的了解,它们在原始层面上是相同的。

在网络中,人们使用域并向其添加路由来创建 URL。这些 URL 在被访问时会向服务器发送请求,服务器会执行相应的代码。 Web 框架只是让开发人员能够更高效、更轻松地完成此任务。当您访问 URL 并收到来自服务器的响应时,该响应就是服务器的消息,(通常)由框架打包。这意味着从整个 Google 到普通的未格式化 JSON 的所有内容都是原始的纯文本,带有一些附加信息(标头),告诉您的浏览器如何处理响应。

回到我刚才问的问题,你不能只在前端编写后端代码的原因是,当服务器(用于前端代码的框架)发送响应时,它是只是发送带有一些运行 Javascript 的

script
标签的 HTML。如果你想在前端编写后端逻辑,所有代码都必须通过所述
script
标签运行。这称为客户端代码。

客户端代码的问题是客户端不应该访问服务器操作。如果您试图将文档插入数据库、处理付款或运行任何类型的敏感/耗时/密集型代码,那么在客户端这样做将是不安全且低效的。

相反,您可以做的是运行后端代码。就像前端框架获取您编写的代码并通过“打包”将其提供给世界一样,后端代码只是与打包一起运行的代码。当您向服务器发送请求时,该服务器会在本地执行代码,然后根据本地代码的计算结果发送响应。这解决了运行敏感/耗时/密集代码的问题,因为代码在服务器上运行,然后将评估结果返回给用户。

后端和前端框架是分开的(像 Next.js 这样的框架是例外),只是为了方便。以用户友好的 HTML 形式发送代码与以纯文本或 JSON 形式发送代码相比,会带来不同的挑战。框架只是让您更轻松地完成每个框架需要做的事情。

简而言之,框架可以在“后台”(后端)运行代码,但通常不应该。

© www.soinside.com 2019 - 2024. All rights reserved.