资产是指您服务器上的静态文件(js、css、图像等),您希望使其对外部世界可见。在 Sails 中,这些文件放置在assets/
文件夹中。当您启动应用程序、将文件添加到assets/
文件夹或更改现有资产时,Sails 的内置资产管道会处理这些文件并将它们同步到一个隐藏文件夹 (.tmp/public/
)。
此中间步骤(将文件从
assets/
移动到.tmp/public/
)允许 Sails 预处理资产以供客户端使用 - 例如 LESS、CoffeeScript、SASS、精灵图、Jade 模板等。
此.tmp/public
文件夹的内容是 Sails 在运行时实际提供的。这大致相当于express中的“public”文件夹,或者您可能从其他 Web 服务器(如 Apache)熟悉的www/
文件夹。
在幕后,Sails 使用来自 Express 的serve-static 中间件 来提供您的资产。您可以在/config/http.js
中配置此中间件(例如,更改缓存设置)。
index.html
与大多数 Web 服务器一样,Sails 遵循index.html
约定。例如,如果您在新的 Sails 项目中创建assets/foo.html
,它将在https://127.0.0.1:1337/foo.html
处访问。但是,如果您创建assets/foo/index.html
,它将在https://127.0.0.1:1337/foo/index.html
和https://127.0.0.1:1337/foo
处访问。
重要的是要注意,静态中间件是在 Sails 路由器之后安装的。因此,如果您定义了一个自定义路由,但您的资产目录中也有一个具有冲突路径的文件,则自定义路由将在到达静态中间件之前拦截请求。例如,如果您创建assets/index.html
,并且在您的config/routes.js
文件中没有定义任何路由,它将作为您的主页提供服务。但是,如果您定义一个自定义路由,'/': 'FooController.bar'
,该路由将优先。