分离Express.js服务器和客户端项目

我是Node.js的初学者,我实现了一个快速的应用程序,包括客户端模块和服务器模块作为单个项目的一部分。 我通过调用启动服务器

node server.js 

我使用express.static来引用客户端代码并获取客户端的index.html。

 app.use(express.static(__dirname + "/client")); 

现在,如果我不希望客户端和服务器成为同一项目的一部分呢? express.static语句应该如何写? 客户的项目可以位于其他目录中,“__dirname”在这种情况下不起作用。 客户和服务器应该如何独立于对方的目录位置?

在生产中,将客户端应用程序暴露给服务静态文件(如nginx)的http服务器是标准的。

你所要做的就是像express一个标准的HTTP服务器一样使用express来提供文件。 它受欢迎的服务这些文件像Nginx而不是依靠快递服务的文件。 Nginx可以更好地适应这种事情。 也可以使用CDN来分发内容,使其更接近最终用户。

无论哪种方式,使用express并不可怕,但是如果您打算扩展后端,则可能更容易将后端从前端独立扩展,因为后端将比静态文件提供更多的资源。

如果您正在讨论将静态文件重定位到您的硬盘上,但是仍然从express服务它们,那么您可以使用path模块。

express.static语句应该如何写? 客户的项目可以位于其他目录中,“__dirname”在这种情况下不起作用。

 var path = require('path'); var pathToResources = path.join('/path/to/resources', 'client'); app.use(express.static(pathToResources)); 

但是,如果你想使用不同的服务器(起源)来提供内容,那么你不需要指定它(只要确保在另一台服务器上正确设置了cross-origin ,那么一台服务器就可以作为静态内容服务器另一个是“`express“后端api服务器。