我正在尝试在SailsJS中手动包含一些资产,但是我无法让它们工作.他们保持404'.
config/routes.js注释告诉我,assets/images/1.png中的图像可以通过访问href="images/1.png"
.同样的事情似乎不适用于样式表,因为找不到404的结果.
我看到Sails最近使用了非常广泛的Gruntfile,但我想要更多的控制权,所以我抛弃了它.我知道打破资产的自动包括,但这也打破了手动插入?:(
编辑:
我在文档中发现公共资产不再从assets文件夹提供,而是从.tmp/public文件夹提供.有没有办法可以改变这种行为,只使用assets /文件夹作为面向公众的目录?
另一种选择当然是简单地使用Sails的Gruntfile方法,但它仍然会减少编译器错误,即使我手动编译时使用的lessc
一切工作正常......
如果删除Gruntfile.js
,您的资产都不会由风帆管理.
Sails使用grunt来管理资产.一些"管理"涉及在项目文件夹结构和服务器的公共文件夹之间同步文件,但一如既往,我已经领先于自己.
配置grunt
基于在Gruntfile.js
sails项目的根目录中找到的文件.这个文件中有很多内容,但是,我将专注于javascript和css资产.
首次创建项目时,可以选择使用该--linker
标志.使用该标志的一个例子是sails new projectName --linker
.这是/assets
两种情况下文件夹的目录结构:
使用该--linker
标志
/assets /images /linker /js /styles /templates
未使用的--linker
标志
/assets /images /js /styles
请注意,您可以--linker
通过手动创建/linker
文件夹并将其插入/assets
路径来"升级"未使用该标志创建的项目.然后,您可以添加/js
,/styles
和/templates
下/linker
.
当开始经由帆服务器sails lift
通过下面的文件夹结构中创建/同步时间grunt
的内.tmp
文件夹中:
.tmp /public
如果有任何其他的项目文件夹(例如/images
,/js
,/styles
,/templates
)含有它们复制内容/同步时间到.tmp/public
文件夹中.的区别在于,如果一个/linker
文件夹存在,则/js
,/styles
和另外的/templates
文件夹下创建/linker
.
layout.ejs
档案怎么了?如果您使用该/linker
文件夹,sails将更改您的layout.ejs
文件以包含指向您的javascript和css文件的链接.因此,从项目/views
文件夹提供的任何页面都可以访问这些文件中包含的javascript和css.
Grunt使用注释标签layout.ejs
作为这些链接的placehodler.例如,放置在/style
文件夹中的任何内容都将自动链接到layout.ejs
这两个标记之间:
<!--STYLES--> <!--STYLES END-->
/js
文件夹中的任何内容都将链接在这两个标记之间:
<!--SCRIPTS--> <!--SCRIPTS END-->
中点儿/templates
文件夹这两个标记之间的链接:
<!--TEMPLATES--> <!--TEMPLATES END-->
以下是在任一情况下访问资产的方式:
使用该/linker
文件夹
/js
- > /linker/js/yourFile.js
/styles
- > /linker/styles/yourCSS.css
不使用该/linker
文件夹
/js
- > /js/yourFile.js
/styles
- > /styles/yourCSS.css