“服务静态文件”究竟是什么意思?

时间:2015-03-07 19:07:57

标签: javascript html node.js

到目前为止,我一直在开发我的客户端应用程序而不使用我自己的服务器,使用Webstorm的内置网络服务器来提供我的内容。

当人们使用Node with Express充当他们的网络服务器时,我经常看到的是关于你是否应该将html文件与节点或客户端代码放在一起的争论。

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

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

app/
  client/ js files
  server/ node files

您是否应在服务器或客户端目录中包含html页面?

其次:

有时候我会看到人们使用express.static来表示静态文件,这里的静态文件究竟是什么?今天大多数网站不再是静态文档,而是通过操纵DOM来改变javascript的文件,所以我不认为任何html文件应该被视为静态文件?

据我所知,我使用Node而不是内置网络服务器的唯一优势是,如果我想拥有数据库访问权限。

2 个答案:

答案 0 :(得分:29)

  

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

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

  

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

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

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

将Node.js应用程序放在像Nginx这样的代理之后也是一个好主意,这样代理就可以处理所有客户端交互(例如喂食慢速客户端)离开Node.js应用程序做最好的事情。但是,在低流量情况下,这并不重要。

答案 1 :(得分:7)

  

有时我看到人们使用express.static来表示静态文件,这里静态文件的含义究竟是什么?

我相信您指的是这段代码通常会找到一个快速应用的app.js文件:

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

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

- public
  |_ javascripts
  |_ stylesheets
  |_ images

如果您的javascripts目录中有脚本,则无需输入包含它的完整路径。只是:

./javascripts/script.js

静态文件最好被视为NPM或Bower之类的文件。它们是您自己的脚本,样式表,图像等。它与动态或静态页面无关。

关于你的第一个问题:

如果您正在使用节点,我个人不确定是否需要这种项目架构。如果您为客户端应用程序使用节点和Ember.jsAngular之类的东西,那么我个人会将我的实际应用程序脚本放在public/javascripts/目录中。但那就是我。

在一天结束时,选择您喜欢的项目结构,并坚持下去。但是,如果其他人正在从事该项目,请坚持使用共同的惯例。它让生活更轻松。