【问题标题】:Sails is not injecting the files within the assets folderSails 没有在资产文件夹中注入文件
【发布时间】:2015-09-03 08:07:12
【问题描述】:

我刚刚在我的服务器上重新安装了sails (v0.11.0),在检查了这个并在控制器上工作后,我发现资产文件夹中包含的css、js和模板文件没有被注入到布局中,如果有任何理由发生这种情况?我的意思是,这是一个干净的新风帆安装....

【问题讨论】:

标签: node.js gruntjs sails.js


【解决方案1】:

在我的情况下,为了让 SailsJS 将样式表自动注入到 views/layouts/layout.handlebars 下的布局文件中,我发现了一些事情......

当您首次使用以下方式创建风帆应用时:

sails new APPNAME --template=handlebars --verbose

注意:下面的链接解释了上面的语法...

Using handlebars templates in Sails.js

  1. 转到配置>views.js 它会说:

    layout: 'layouts/layout.handlebars'

    改为:

    layout: 'layouts/layout',

  2. 转到任务 > 配置 >sails-linker.js 因为我现在处于开发模式,所以我将 Ctrl + f 搜索: “开发风格”

    devStyles: {
        options: {
            startTag: '<!--STYLES-->',
            endTag: '<!--STYLES END-->',
            fileTmpl: '<link rel="stylesheet" href="%s">',
            appRoot: '.tmp/public'
        },
    
        files: {
            '.tmp/public/**/*.html': require('../pipeline').cssFilesToInject,
            'views/**/*.html': require('../pipeline').cssFilesToInject,
            'views/**/*.ejs': require('../pipeline').cssFilesToInject
            //ADD HANDLEBARS INJECTION HERE
        }
    },
    

注意它注入了 .html 和 .ejs 类型,但没有注入 .handlebars

添加这一行:

'views/**/*.handlebars': require('../pipeline').cssFilesToInject

我评论的地方:

//ADD HANDLEBARS INJECTION HERE

此时您应该能够将 .css 文件放入 assets > styles 并自动复制到 .tmp/public/styles

运行:

sails lift

在您的命令提示符中并给它大约 20 秒左右的时间让样式表在您的 routes.js 中的任何页面上显示其样式

    '/': {
      view: 'index'
    }

如您所见,我创建了一个新的 .handlebars 文件 index.handlebars 并将其设置为我的根级页面。您可能需要刷新一两次页面才能显示新自动注入的 CSS。

附:首次创建 SailsJS 项目时,似乎不再需要附加 --linker。另外仅供参考,我使用的是sails 0.11.0版

另外,如果你运行 sails lift --verbose,下面的行就是你如何知道 .handlebars 注入工作的方式

verbose: Grunt :: File "views/layouts/layout.handlebars" updated.

希望这会有所帮助!

另外,当添加 Handlebars Helpers 时,它们应该放在一个文件 helper.js 中,该文件应该位于 config > helper.js

helper.js 文件的顶部,我发现我必须如下要求车把

handlebars = require('sails/node_modules/express-handlebars/node_modules/handlebars');

【讨论】:

  • 太棒了!谢谢你 - 可能还想说在同一个文件中还有许多其他对象需要以类似的方式更新,以使您的脚本工作,并让事情在生产中工作等。谢谢!跨度>
  • 看起来他们修复了layouts/layout 部分,但没有修复sails-linker.js 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多