【问题标题】:Manually include assets in SailsJS 0.9.7在 SailsJS 0.9.7 中手动包含资产
【发布时间】:2013-12-02 10:19:11
【问题描述】:

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

config/routes.js cmets 告诉我,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 手动编译时,它仍然会抛出更少的编译器错误...

【问题讨论】:

    标签: javascript sails.js assets


    【解决方案1】:

    如果您删除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

    【讨论】:

    • 感谢您的广泛帮助!最后,我只是编写了自己的小 Gruntfile,它缩小了我的 JavaScript 并编译了我的 LESS 文件并将它们复制到 .tmp 目录。这样,Gruntfile 就不会像 SailsJS 的默认设置那样臃肿。仍然接受您的回答,因为它对任何愿意遵循 Sails 系统的人来说都是一个很好的描述:)
    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2012-01-02
    相关资源
    最近更新 更多