Meteor 应用程序中特殊的 "public" 文件夹有什么用?

What is the use for the special "public" folder in a Meteor app?

我目前正在使用 Meteor 并尝试了解有关该框架的更多信息。在documentation关于特殊目录下面是关于public/特殊目录的:

All files inside a top-level directory called public/ are served as-is to the client. When referencing these assets, do not include public/ in the URL, write the URL as if they were all in the top level. For example, reference public/bg.png as <img src='/bg.png' />. This is the best place for favicon.ico, robots.txt, and similar files.

我的问题是:由于我引用 public/ 目录中的文件,就像它们位于我的应用程序的根文件夹中一样,将文件放在 public/ 文件夹中有什么不同在根文件夹中?还是只是为了组织?

此外,我上面引用的文档还提供了一些使用资产(一些 png 和 favicon.ico)且没有 JavaScript 或 HTML 文件的示例。我是否可以将一些 JavaScript 代码放在那里,然后通过引用将它们导入另一个文件,就好像这段代码位于我的应用程序的根目录中一样?或者 public/ 目录在某种程度上只是为资产制作的?

我没有找到任何文档来详细解释对这个目录中的文件做了什么(我只找到了上面引用的内容)。因此,如果有任何此类文档可用,那将大有帮助!

与 Rails 不同,Meteor 计划没有严格的文档结构,您可以根据需要自由准备项目。一些文件夹名称但具有唯一含义,并且它们中的文件将以不同的方式处理。 消费者 此处的文件将最简单地加载到客户端。该文件夹中的文件不需要 Meteor.isClient.

之类的东西

服务器 最好在服务器上加载,呃!当文件在该文件夹中时不需要 Meteor.isServer,客户端将看不到这些文件。 public 此目录用于 属性 喜欢的照片。根据您的倡议,您引用 public 文件夹中的内容,就好像它们在根文件夹中一样。例如,如果您有一份报告:public/nude.jpg,那么对于您的应用程序,您可以将其包含在 . 个人 文件仅在服务器方面通过资产 API 可用。 检查 那里的文件不会被加载到任何地方,而是用于检查你的应用程序。 该文件夹中的文件比其他文件夹加载得更早,这使其成为项目中使用的不同库附近的最佳列表。

Public 文件夹是您提供静态文件的方式,当您将文件放在根文件夹中时,默认情况下它不会发送到客户端,您不能在 css,当你把那个文件(比如一个图像)放在你的 public 文件夹中时,你可以从 css 中使用它并像在你的根文件夹中一样引用它,所以如果我把public 文件夹中的 a.jpg 我可以在我的 css 中使用 url(/a.jpg),如果 a.jpg 只是在您的根文件夹中,那将不起作用,这就是文档的意思是当他们说它被用作根文件夹时。

My question is: since I refer to files inside of public/ directory as if they were located in the root folder of my application, what's the different between putting the files in the public/ folder and in the root folder? Or is it just for organization sake?

仅仅因为您可以从 public/ 引用或“导入”文件并不意味着它的功能与普通文件导入的工作方式相同。位于 public 中的文件将按原样提供,而无需通过 Meteor pipleline minified/run。其次,客户端可以访问这些文件,考虑到如何在没有前面的斜线的情况下导入它们并让它们主要用于服务图标之类的东西,这是有道理的。

所以在某种意义上,public 中的此类文件在与您的客户相关的范围内可用 bundle/code 而不是他们的一部分,明白了吗?

这种提供资产的方式并不是 Meteor 独有的,甚至 React 也有 public directory

Also the documentation I quoted above makes some examples using assets (some pngs and favicon.ico) and no JavaScript or HTML files. Am I able to put some JavaScript code in there and then import them in another file by referencing as if this code was located in the root of my app? Or is the public/ directory somewhat made only for assets?

AFAIK,您可以在 public 中拥有任何类型的文件,但是自从

  • 它按原样提供给客户,这意味着它暴露给 public
  • 它没有被缩小(即成为最终应用程序构建代码的一部分)

建议您不要在此目录中包含任何应用程序代码。