javascript - 在 SailsJS 0.9.7 中手动包含 Assets

标签 javascript sails.js assets

我试图在 SailsJS 中手动包含一些 Assets ,但我无法让它们工作。他们保持 404'ing。

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

我看到 Sails 最近使用了一个非常广泛的 Gruntfile,但我想要更多的控制,所以我放弃了它。我知道这打破了 Assets 的自动包含,但这是否也打破了手动插入? :(

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

当然,另一种选择是简单地使用 Sails 的 Gruntfile 方法,但即使当我使用 lessc 手动编译东西时,它也会不断抛出较少的编译器错误。一切正常……

最佳答案

如果您删除 Gruntfile.js,您的所有 Assets 都不会由 sails 管理。

我应该将我的 css 和 javascript 资源放在 sails 中的什么位置?

Sails 使用 grunt来管理 Assets 。其中一些“管理”涉及在您的项目文件夹结构和服务器的公用文件夹之间同步文件,但一如既往,我有点超前了。

grunt 的配置基于位于 sails 项目根目录中的 Gruntfile.js 文件。这个文件中有很多内容,但是,我将专注于 javascript 和 css Assets 。

您项目的 Assets

当您第一次创建项目时,您可以选择使用 --linker 标志。使用该标志的示例是 sails new projectName --linker。以下是两种场景下/assets文件夹的目录结构:

使用 --linker 标志

/assets
 /images
 /linker
  /js
  /styles
  /templates

不使用 --linker 标志

/assets
 /images
 /js
 /styles

请注意,您可以通过手动创建 /linker 文件夹并将其插入到您的 /assets 路径。然后,您可以在 /linker 下添加 /js/styles/templates

服务器的公共(public)文件夹

当通过 sails lift 启动 sails 服务器时,将通过 .tmp 文件夹中的 grunt 创建/同步以下文件夹结构:

.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 中的注释标签作为这些链接的占位符。例如,放在 /style 文件夹中的任何内容都会自动链接到 layout.ejs 中这两个标签之间:

<!--STYLES-->    
<!--STYLES END-->

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

<!--SCRIPTS-->
<!--SCRIPTS END-->

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

<!--TEMPLATES-->   
<!--TEMPLATES END-->

访问 Sail 的 Assets

以下是您在任一情况下访问 Assets 的方式:

使用 /linker 文件夹

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

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

不使用 /linker 文件夹

/js --> /js/yourFile.js

/styles --> /styles/yourCSS.css

关于javascript - 在 SailsJS 0.9.7 中手动包含 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325810/

相关文章:

javascript - 单击时交换表格单元格颜色

javascript - 动态加载外部 javascript 并将其绑定(bind)到特定的 DOM 元素或命名空间

javascript - MooTools 顶部面板未出现

node.js - 如何在 sails.js 和水线中执行嵌套连接?

javascript - 从 sails.js/mongodb 中提取公共(public)代码

windows - (UWP) 从 Assets 文件夹获取 xml 文件

javascript - 包括用于单元测试的外部 .js 文件

node.js - Sails.js - 使用多重连接获取对象(模型)

php - 使用 assetic 提供相关图像

ruby-on-rails - Cocoon如何去除关联