2019独角兽企业重金招聘Python工程师标准>>>

最近项目中用到hbs模版,结合express,感觉还不错。其中,helper是handlebar的核心,为了让自己用得更爽,经过搜集和琢磨,留下一手helper,亲测有效。

1. block与extend

  • 源码
let blocks = {};
hbs.registerHelper('extend', function (name, context) {let block = blocks[name];if (!block) {block = blocks[name] = [];}block.push(context.fn(this));
});hbs.registerHelper('block', function (name) {let val = (blocks[name] || []).join('\n');blocks[name] = [];return val;
});
  • 使用

layout.hbs(page1页面母版)

<head><meta charset="UTF-8"><title>{{{block "title"}}}</title>
</head>

page1.hbs(子页面)

{{#extend "title"}}
测试标题
{{/extend}}

=>

<head><meta charset="UTF-8"><title>测试标题</title>
</head>

2. 包含

  • 源码
hbs.registerHelper('include', function (args1, args2, context) {let array = args2.split(',');if (!_.isArray(array)) {return context.inverse(this);}if (_.includes(array, args1) || _.includes(array, args1.toString())) {return context.fn(this);}
});
  • 使用
{{#include '1' '1,2,3'}}
'1' include in '1,2,3'
{{else}}
'1' not include in '1,2,3'
{{/include}}
---
{{#include 'b' 'c,d'}}
'b' include in 'c,d'
{{else}}
'b' not include in 'c,d'
{{/include}}

=>

'1' include in '1,2,3'
---
'b' not include in 'c,d'

3. 等于

  • 源码
hbs.registerHelper('equal', function (args1, args2, context) {if (args1 === args2) {//满足添加继续执行return context.fn(this);} else {if (typeof(args1) === 'number' && args1.toString() === args2.toString()) {return context.fn(this);}//不满足条件执行{{else}}部分return context.inverse(this);}
});
  • 使用
{{#equal 1 2}}
1 === 2
{{else}}
1 !== 2
{{/equal}}

=>

1 !== 2

4. 大于等于

  • 源码
hbs.registerHelper('egt', function (args1, args2, context) {if (args1 >= args2) {return context.fn(this);} else {return context.inverse(this);}});
  • 使用同equal

5. 大于

  • 源码
hbs.registerHelper('gt', function (args1, args2, context) {if (args1 > args2) {return context.fn(this);} else {return context.inverse(this);}});
  • 使用同equal

6. 小于等于

  • 源码
hbs.registerHelper('elt', function (args1, args2, context) {if (args1 <= args2) {return context.fn(this);} else {return context.inverse(this);}});
  • 使用同equal

7. 小于

  • 源码
hbs.registerHelper('lt', function (args1, args2, context) {if (args1 < args2) {return context.fn(this);} else {return context.inverse(this);}});
  • 使用同equal

8. 结合each实现遍历N次

  • 源码
hbs.registerHelper('count', function (args1, context) {let array = [];for (let i = 1; i <= args1; i++) {array.push(i);}return context.fn(array);
});
  • 使用
{{#count 5}}{{#each this |index|}}{{index}}、{{/each}}
{{/count}}

=>

1、2、3、4、5

9. 加法

  • 源码
hbs.registerHelper('add', function (args1, args2) {return args1 + args2;
});
  • 使用
{{add 1 2}}

=>

3

10. 减法

  • 源码
hbs.registerHelper('sub', function (args1, args2) {return args1 - args2;
});
  • 使用
{{sub 3 1}}

=>

2

转载于:https://my.oschina.net/u/1583186/blog/664718

hbs helper分享相关推荐

  1. 晒一手hbs helper

    最近项目中用到hbs模版,结合express,感觉还不错.其中,helper是handlebar的核心,为了让自己用得更爽,经过搜集和琢磨,留下一手helper,亲测有效. 1. block与exte ...

  2. amazeui中内置的web组件有哪些且如何用

    amazeui中内置的web组件有哪些且如何用 一.总结 一句话总结: 1.组件还是jquery.js+amazeui.js,和插件一样,准确的说是amazeui.css+jquery.js+amaz ...

  3. 分享一个WininetAPI的helper类

    using System; using System.Collections; using System.Drawing; using System.IO; using System.Net; usi ...

  4. 部门内 IDEA 分享,超实用技巧!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:https://segmentfault.com/a ...

  5. 分享:给入职新人的IDEA培训教程。

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Richard_Yi 链接:http://1t.click/ ...

  6. Precision Helper:最佳免费 CHM 制作软件

    许多用户都有制作 CHM 文档的经历,或许是为了与他人分享资料,或许是为自己开发软件提供帮助.尽管网上搜索CHM制作软件结果繁多,但真正好用的并不多,能称为优秀的只剩下几款.其中我觉得优秀又免费的只有 ...

  7. IntelliJ IDEA 超实用技巧分享,不能再全了!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:R ...

  8. 浏览器插件-- Browser Helper Object(BHO) 一

    最近由于需要写一个这方面的网页过滤插件,因此可说得上是费尽了心机.参阅了很多资料,在这里感谢那些愿意把自己的心得拿出来与人分享的广大同行.    转载请说明来自飞天猪的博客园.另外如果发现有错误,请留 ...

  9. 按钮开始多线程_微软MR技术专家分享:AR/VR多线程处理的八年经验与技巧

    查看引用/信息源请点击:映维网 关于多线程的经验分享 (映维网 2020年11月17日)多线程(Multithreading)是指从软件或者硬件实现多个线程并发执行的技术.具有多线程能力的计算机因有硬 ...

最新文章

  1. 中关村开源创新大赛-达闼赛道如火如荼进行中
  2. (5.1) Tomcat 8 源码, 实例化组件
  3. Python爬虫实战(3):计算大学本学期绩点
  4. R学习-- 数组和矩阵
  5. pandas 空字符串与na区别_关于python:Pandas用空白/空字符串替换NaN
  6. hbase scala 实例_scala操作HBase2.0
  7. 速达软件开发版使用技巧-每页固定行样式报表设计
  8. sock 文件方式控制宿主机_docker的容器可视化工具portainer
  9. Netlogo入门(二)
  10. KDD2020|字节联合密歇根州立大学提出推荐广告联合训练框架RAM(已开源)
  11. 微信隐藏代码功能大汇总-你不知道的微信命令行.doc
  12. JavaSE基础笔记——File概述、方法递归、字符集、IO流
  13. 【2018提高测试】飘雪圣域 【连通性+可持久化线段树 / 离线+权值线段树】 (详解)
  14. 电子计算机管理人事资料的准则,{转帖}关于中国的一些人事制度,职称评定
  15. Mac OS X 系统目录结构
  16. matlab2018a课后答案,[2018年最新整理]matlab习题及答案.doc
  17. 无人机开发系列 Ubuntu18.04安装 含虚拟机与双系统
  18. Android NDK开发一 NDK环境搭建及cmake简介
  19. facebook修改权限_如何在Facebook上更改小组的隐私
  20. SCIENCE ROBOTICS:与机器人的相互注视会影响人类的神经活动,延迟决策过程

热门文章

  1. Attention机制的总结笔记
  2. python + selenium +pyquery 爬虫 爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩
  3. 【半音阶口琴】基础汇总
  4. Java实现台阶问题
  5. 拳道中枢(大成拳论)
  6. 完全二叉树 和 满二叉树的区别
  7. clamav 远程杀毒服务安装
  8. 宏观经济学-试卷1-安徽大学
  9. 云呐|固定资产报废如何处理(固定资产报废如何处理残值)
  10. 电子元器件搜索引擎 白嫖AD原理图符号、PCB封装和3D模型(超详细)