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

时间:2015-12-28 17:32:17

标签: node.js express

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

启动服务器
node server.js

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

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

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

3 个答案:

答案 0 :(得分:1)

在生产中,标准是使用http服务器公开您的客户端应用程序,该服务器更好地提供静态文件,例如nginx的。

答案 1 :(得分:1)

您正在做的就是使用express来提供文件,就好像它是标准的HTTP服务器一样。它很受欢迎,可以像Nginx一样提供这些文件,而不是依靠express来提供文件。 Nginx可以更好地适应这种情况。它还可以使用CDN分发您的内容,使其更贴近您的最终用户。

无论哪种方式,使用express并不可怕,但是如果你计划扩展它可能更容易扩展后端独立于前端,因为后端将比服务静态文件的进程更加耗费资源。 / p>

答案 2 :(得分:0)

如果您正在谈论在您的硬盘上重新定位静态文件但仍然从express提供这些文件,那么您可以使用path模块。

  

如何写出express.static声明?客户的项目可以位于其他目录中,“_ _ dirname”在这种情况下不起作用。

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

app.use(express.static(pathToResources));

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