如果您删除Gruntfile.js,您的任何资产都不会由sails 管理。
我应该把我的 css 和 javascript 资源放在哪里?
Sails 使用grunt 管理资产。其中一些“管理”涉及在您的项目文件夹结构和服务器的公用文件夹之间同步文件,但与往常一样,我走在了前面。
grunt 的配置基于您的sails 项目根目录中的Gruntfile.js 文件。这个文件有很多内容,但是,我将专注于 javascript 和 css 资产。
您项目的资产
当您第一次创建项目时,您可以选择使用--linker 标志。使用标志的一个例子是sails new projectName --linker。以下是两种场景下/assets文件夹的目录结构:
使用 --linker 标志
/assets
/images
/linker
/js
/styles
/templates
不使用 --linker 标志
/assets
/images
/js
/styles
注意,您可以通过手动创建/linker 文件夹并将其插入/assets 路径来“升级”不是使用--linker 标志创建的项目。然后您可以在/linker 下添加/js、/styles 和/templates。
服务器的公用文件夹
当通过sails lift 启动sails 服务器时,通过grunt 在.tmp 文件夹中创建/同步以下文件夹结构:
.tmp
/public
如果任何其他项目文件夹(例如 /images、/js、/styles、/templates)包含内容,则会将它们复制/同步到 .tmp/public文件夹。区别在于如果存在/linker 文件夹,则在/linker 下创建/js、/styles 和一个额外的/templates 文件夹。
我的layout.ejs 文件会怎样?
如果您使用 /linker 文件夹,sails 将更改您的 layout.ejs 文件以包含指向您的 javascript 和 css 文件的链接。因此,从项目的 /views 文件夹提供的任何页面都可以访问这些文件中包含的 javascript 和 css。
Grunt 使用 layout.ejs 中的注释标签作为这些链接的占位符。例如,放置在/style 文件夹中的任何内容都会自动链接到layout.ejs 这两个标签之间:
<!--STYLES-->
<!--STYLES END-->
/js 文件夹中的任何内容都将在这两个标签之间链接:
<!--SCRIPTS-->
<!--SCRIPTS END-->
/templates 文件夹中的任何内容都将在这两个标签之间链接:
<!--TEMPLATES-->
<!--TEMPLATES END-->
访问 Sail 的资产
以下是您在任一场景下访问资产的方式:
使用/linker 文件夹
/js --> /linker/js/yourFile.js
/styles --> /linker/styles/yourCSS.css
不使用/linker 文件夹
/js --> /js/yourFile.js
/styles --> /styles/yourCSS.css