【发布时间】:2015-09-03 08:07:12
【问题描述】:
我刚刚在我的服务器上重新安装了sails (v0.11.0),在检查了这个并在控制器上工作后,我发现资产文件夹中包含的css、js和模板文件没有被注入到布局中,如果有任何理由发生这种情况?我的意思是,这是一个干净的新风帆安装....
【问题讨论】:
-
标准的sails.js 视图显示正常吗?当你访问localhost:1337时它做了什么?
我刚刚在我的服务器上重新安装了sails (v0.11.0),在检查了这个并在控制器上工作后,我发现资产文件夹中包含的css、js和模板文件没有被注入到布局中,如果有任何理由发生这种情况?我的意思是,这是一个干净的新风帆安装....
【问题讨论】:
在我的情况下,为了让 SailsJS 将样式表自动注入到 views/layouts/layout.handlebars 下的布局文件中,我发现了一些事情......
当您首次使用以下方式创建风帆应用时:
sails new APPNAME --template=handlebars --verbose
注意:下面的链接解释了上面的语法...
Using handlebars templates in Sails.js
转到配置>views.js 它会说:
layout: 'layouts/layout.handlebars'
改为:
layout: 'layouts/layout',
转到任务 > 配置 >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 代码。