使用 Express 提供静态文件还是使用 Express 仅访问后端?

Serve Static Files Using Express or Use Express To Only Access Backend?

出于什么原因,您会使用路由通过 Express 提供静态 HTML/CSS/JS 文件,而不是直接访问这些文件,然后使用 Express 纯粹与后端交互?

例如,我可以直接访问我在某处托管的网页,即 www.test.com/login.html,该网页又使用 JS 向某处托管的 Express 服务器发出获取请求。

或者我可以单独指向我的域通过其 IP 地址与 Express 服务器交互,并让 Express 提供这些静态文件。

为什么我会用一个而不是另一个?

希望这是有道理的,如果我错过了一个技巧,我们深表歉意 - 这一切都比较新!

谢谢

For what reason would you serve static HTML/CSS/JS files via Express using routes?

如果您的文件是真正静态的(其中根本没有动态内容),那么由谁提供它们并不重要。您可以从任何地方为他们服务。然后您将必须管理两个域并确保您的服务器已正确设置为 CORS 访问。您甚至可以使用相同的域并使用像 NGINX 这样的代理,它只提供静态内容,同时将其他所有内容转发到您的 Express 服务器。

如果您要动态生成任何内容(例如许多使用模板引擎并从服务器的数据库生成 HTML 内容的网站),那么为您的来自 Express 服务器的内容。

我不建议通过直接 IP 地址与您的 Express 服务器连接,因为在扩展、更改托管设施、负载平衡等方面,这远不如使用 DNS 名称灵活...所以,如果您要从其他地方提供静态内容,那么要么在同一域上使用代理,要么使用两个单独的域。

从 Express 服务器上获取静态内容的主要原因是当您想要提高可伸缩性并且您当前的负载对于 Express 服务器来说太大了。在这种情况下,通常提高可伸缩性的最简单方法是将静态文件服务移交给另一个系统。如果您的网站规模仍然很小,那么我不建议让事情变得比他们需要的更复杂。在低规模上保持简单。随着您的负载增加,然后投资于将静态服务剥离给另一台主机。