我是Node.js的初学者,我已经实现了一个带有客户端模块和服务器模块的快速应用程序,作为单个项目的一部分。我通过调用
启动服务器node server.js
我正在使用express.static来引用客户端代码并获取客户端的index.html。
app.use(express.static(__dirname + "/client"));
现在,如果我不希望客户端和服务器成为同一项目的一部分,该怎么办?应该如何编写express.static语句?客户端的项目可以位于其他目录中,“_ _ dirname”在这种情况下不起作用。如何使客户端和服务器独立于彼此的目录位置?
答案 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服务器。