在SailsJS 0.9.7中手动包含资产

lun*_*oko 3 javascript assets sails.js

我正在尝试在SailsJS中手动包含一些资产,但是我无法让它们工作.他们保持404'.

config/routes.js注释告诉我,assets/images/1.png中的图像可以通过访问href="images/1.png".同样的事情似乎不适用于样式表,因为<link rel="stylesheet" href="/styles/style.css">找不到404的结果.

我看到Sails最近使用了非常广泛的Gruntfile,但我想要更多的控制权,所以我抛弃了它.我知道打破资产的自动包括,但这也打破了手动插入?:(

编辑:
我在文档中发现公共资产不再从assets文件夹提供,而是从.tmp/public文件夹提供.有没有办法可以改变这种行为,只使用assets /文件夹作为面向公众的目录?

另一种选择当然是简单地使用Sails的Gruntfile方法,但它仍然会减少编译器错误,即使我手动编译时使用的lessc一切工作正常......

Joh*_*alt 8

如果删除Gruntfile.js,您的资产都不会由风帆管理.

我在哪里把我的CSS和javascript资产放在帆中?

Sails使用grunt来管理资产.一些"管理"涉及在项目文件夹结构和服务器的公共文件夹之间同步文件,但一如既往,我已经领先于自己.

配置grunt基于在Gruntfile.jssails项目的根目录中找到的文件.这个文件中有很多内容,但是,我将专注于javascript和css资产.

您的项目资产

首次创建项目时,可以选择使用该--linker标志.使用该标志的一个例子是sails new projectName --linker.这是/assets两种情况下文件夹的目录结构:

使用--linker标志

/assets
 /images
 /linker
  /js
  /styles
  /templates
Run Code Online (Sandbox Code Playgroud)

未使用--linker标志

/assets
 /images
 /js
 /styles
Run Code Online (Sandbox Code Playgroud)

请注意,您可以--linker通过手动创建/linker文件夹并将其插入/assets路径来"升级"未使用该标志创建的项目.然后,您可以添加/js,/styles/templates/linker.

服务器的公用文件夹

当开始经由帆服务器sails lift通过下面的文件夹结构中创建/同步时间grunt的内.tmp文件夹中:

.tmp
  /public
Run Code Online (Sandbox Code Playgroud)

如果有任何其他的项目文件夹(例如/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-->
Run Code Online (Sandbox Code Playgroud)

/js文件夹中的任何内容都将链接在这两个标记之间:

<!--SCRIPTS-->
<!--SCRIPTS END-->
Run Code Online (Sandbox Code Playgroud)

中点儿/templates文件夹这两个标记之间的链接:

<!--TEMPLATES-->   
<!--TEMPLATES END-->
Run Code Online (Sandbox Code Playgroud)

访问Sail的资产

以下是在任一情况下访问资产的方式:

使用/linker文件夹

/js - > /linker/js/yourFile.js

/styles - > /linker/styles/yourCSS.css

不使用/linker文件夹

/js - > /js/yourFile.js

/styles - > /styles/yourCSS.css