'serving static files'到底是什么意思?



到目前为止,我一直在开发客户端应用程序,而没有任何自己的服务器在其后面运行,使用Webstorm的内置Web服务器来提供我的内容。

当人们使用Node with Express作为他们的Web服务器时,我经常看到的是关于您应该将html文件与Node或客户端代码放在一起的争论。

我知道html或css中包含的javascript文件最好存储在客户端目录中?

所以我的第一个问题是,对于像这样的文件夹结构

app/
  client/ js files
  server/ node files

您应该将html页面包含在服务器或客户端目录中吗?

第二:

有时我看到人们用express.static来表示静态文件,这里的静态文件到底意味着什么?如今,大多数网站不再是静态文档,而是javascript通过操纵DOM来更改的文件,所以我认为任何html文件都不应该被视为静态文件?

据我所见,使用Node而不是内置的Web服务器的唯一优势是,如果我想访问数据库。

如今,大多数网站不再是静态文档,而是javascript通过操纵DOM来更改的文件,所以我认为任何html文件都不应该被视为静态文件?

页面本身的文件仍然是静态的。也就是说,您不是在用服务器端代码动态地创建它们。在这种情况下,浏览器中发生的事情并不重要。。。这个想法是,您不需要动态生成这些文件,因为它们的内容不会更改。

我知道html或css中包含的javascript文件最好存储在客户端目录中?

将文件存储在服务器上的位置并不重要。重要的是,您通常不希望从Node.js应用程序中提供静态文件。像express.static这样的工具只是为了方便。有时,您的应用程序流量可能较低。在这些情况下,使用Node.js应用程序提供文件是完全可以接受的。对于任何流量负载不错的服务器,最好将静态服务留给真正的web服务器,如Nginx,因为这些服务器比Node.js应用程序效率高得多。

您应该将应用程序代码(提供动态响应的代码,如API服务器)保留在Node.js应用程序中。

把你的Node.js应用程序放在像Nginx这样的代理后面也是一个好主意,这样代理就可以处理所有的客户端交互(比如用勺子喂慢客户端),让你的Node.js应用程序做它最擅长的事情。不过,在交通流量较低的情况下,这并不重要。

有时我看到人们用express.static表示静态文件,这里的静态文件到底意味着什么?

我相信你指的是通常在快递应用程序的app.js文件中找到的这段代码:

app.use(express.static(path.join(__dirname, 'public')));

express.static()是一个中间件,它将目录名映射到路径目录以便于查找。通常你会有:

- public
  |_ javascripts
  |_ stylesheets
  |_ images

如果你的javascripts目录中有一个脚本,你不必键入完整的路径来包含它

./javascripts/script.js

静态文件最好被认为是NPM或Bower之类的东西不包括的文件。它们是您自己的脚本、样式表、图像等。这与页面的动态或静态无关。

关于你的第一个问题:

如果您使用node,我个人不确定是否需要这种项目体系结构。如果您在客户端应用程序中使用node和Ember.js或Angular之类的东西,那么我个人会将实际的应用程序脚本放在public/javascripts/目录中。但那只是我。

在一天结束的时候,选择一个你喜欢的项目结构,并坚持下去。然而,如果其他人正在处理这个项目,请坚持常见的惯例。它让生活更轻松。

最新更新