Javascript 如何在Sails.js中配置把手的部分和布局?
我运行并安装了受支持的,因此 我可以提供Javascript 如何在Sails.js中配置把手的部分和布局?,javascript,handlebars.js,sails.js,Javascript,Handlebars.js,Sails.js,我运行并安装了受支持的,因此 我可以提供.handlebar文件中的页面,它工作得很好。 我不知道在Sails工作流中,以Sails的方式,我应该在哪里注册partials、helpers等。。。我更多的是寻找最佳实践,而不仅仅是一个可行的解决方案,但任何帮助都将不胜感激 我的时间不多了,但我想我快找到答案了。当我获得更多详细信息时,我会更新此回复,但如果您想查看它,请查看包含的consolid.js文件中的第501行。点击此处查看github: 看起来把手有一个for循环,它从options.
.handlebar
文件中的页面,它工作得很好。
我不知道在Sails工作流中,以Sails的方式,我应该在哪里注册partials、helpers等。。。我更多的是寻找最佳实践,而不仅仅是一个可行的解决方案,但任何帮助都将不胜感激 我的时间不多了,但我想我快找到答案了。当我获得更多详细信息时,我会更新此回复,但如果您想查看它,请查看包含的consolid.js文件中的第501行。点击此处查看github: 看起来把手有一个for循环,它从options.partials注册partials 这并不是一个非常令人满意的解决方案,但是如果你把你的partials推到options对象上,那么它可能会从中拉出来
接下来我要问的一个大问题是,options对象是什么,它设置在哪里?编辑:这很容易通过express3 Handlebar模块实现,同时除了要求您将布局文件移动到
视图/布局
中之外,不改变任何默认的Sails功能。我在这里打开了一个pull请求(),如果您想查看它的话
在对sails源代码进行了一点挖掘之后,在渲染视图时引入片段是相当容易的 在控制器操作中调用
res.view
时,只需将一个partials对象作为“locals”的一部分传入,其中包含要渲染的partials列表
// LoginController.js
new: function (req, res) {
res.view({
partials: {
header: '../partials/header',
footer: '../partials/footer'
}
})
}
// new.handlebars
{{> header}}
<b>Main content</b>
{{> footer}}
//LoginController.js
新:功能(req、res){
res.view({
部分:{
标题:'../partials/header',
页脚:“../partials/footer”
}
})
}
//新车把
{{>头}
主要内容
{{>页脚}
通过附加名为Helpers
的键并传入功能,可以以类似的方式注册Helpers
如果在Sails core中有一种更正式的方法来实现这一点,那将是一件好事,但现在这应该足以满足那些想要使用把手而不是ejs的人,同时保留一些布局的外观 我使用的是上面给出的答案,但我似乎已经在sails 0.9.8上使用了partials,没有任何漏洞 这是我的 Config/views.js=> 引擎:“把手” views/home/index.handlebar=>使用部分 视图/home/partials/partial.handlebar=>partial正在使用 那么只要你使用这样的东西,它就可以完美地工作。 res.view({ 部分:{ 分部:'分部/分部', 页脚:“部分/页脚” } }) 路径相对于默认情况下调用的模板文件。因此,如果您希望每个控制器使用不同的分区,那么可以使用分区/ 如果您想为所有模板使用全局分区,请使用../partials/
显然,这完全取决于您,因为您需要在控制器中手动指定每个部分。我正在运行v0.10测试版,但这不应影响我如何使其在下面工作:
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
config/routes.js
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
SiteController.js
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
视图/站点/索引。把手
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
{{>head}
站点索引
视图/站点/部分/头部把手
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
头部
{{>tail}
视图/部分/尾部。把手
module.exports.views = {
engine : 'handlebars',
layout : false
};
'/': {
controller: 'site',
action: 'index'
},
module.exports = {
// Render Index View
index: function(req, res) {
res.view({
partials: {
head: 'partials/head',
tail: '../partials/tail',
},
});
}
};
{{> head}}
<h3>SITE INDEX</h3>
<h1>HEAD</h1>
{{> tail}}
<h2>HEAD TAIL</h2>
头尾
输出
头部
头尾
站点索引
供参考
如果您使用的是Sails 0.10或更高版本,我已经发布了一个NPM包,用于在
还有一个建议的用于sails generate后端的PR,以便在使用“sails generate–template==handlebar”时正确支持handlebar的布局和部分,无需额外代码,并基于路径自动发现部分(aka.views/partial/**)
请参阅:有关在sails js中配置把手模板的信息,请执行以下步骤: 1) 在应用程序的node_modules文件夹中安装把手: npm安装把手 2) 更改您的config/views.js
engine: 'handlebars',
layout: 'layouts/layout', // layouts is subfolder of view folder in sails app and layout is a handlebars inside layouts folder.
partials: 'partials'
如果我们对文件使用.handlebar扩展名而不是.hbs,那么Sails在本地支持handlebar及其(多布局、分区) 因此,为了在帆船上使用把手而不是EJS,它建议使用合并(它是一个模板引擎合并库)。车把与SailsJs+consolid配合使用效果良好 您需要安装consolidate
npm install consolidate --save
然后您只需使用以下内容更新config/views.js文件
module.exports.views = {
engine: {
ext: 'handlebars',
fn: require("consolidate").handlebars
},
layout: 'layouts/layout',
partials: 'partials/'
};
将所有.ebs文件更新为.handlebar文件,并更新其中的代码
一切都会好起来的
有一个视图生成器,用于以后的用途,它将为Sails生成默认视图(它将生成一个包含默认文件的默认目录结构)
您可以在github存储库中找到它。()
它类似于SailsJs为jade正式推出的名为balderdashy/sails生成视图的jade 我也有同样的问题。我试过创建视图/部分/并将它们放在那里,我试过视图/和视图//甚至视图//部分/:-(我不认为Sails会自动获取这些内容。评论很清楚,
布局支持只针对ejs视图引擎实现!对于大多数其他引擎,这是没有必要的,因为它们自己实现了部分/布局
,只是没有说明应该如何/在哪里实现。我不知道