摘要:最近項(xiàng)目中用到模版,結(jié)合,感覺還不錯(cuò)。其中,是的核心,為了讓自己用得更爽,經(jīng)過搜集和琢磨,留下一手,親測(cè)有效。
最近項(xiàng)目中用到hbs模版,結(jié)合express,感覺還不錯(cuò)。其中,helper是handlebar的核心,為了讓自己用得更爽,經(jīng)過搜集和琢磨,留下一手helper,親測(cè)有效。
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(" "); blocks[name] = []; return val; });
使用
layout.hbs(page1頁面母版)
{{{block "title"}}}
page1.hbs(子頁面)
{{#extend "title"}} 測(cè)試標(biāo)題 {{/extend}}
=>
測(cè)試標(biāo)題
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) { //滿足添加繼續(xù)執(zhí)行 return context.fn(this); } else { if (typeof(args1) === "number" && args1.toString() === args2.toString()) { return context.fn(this); } //不滿足條件執(zhí)行{{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. 結(jié)合each實(shí)現(xiàn)遍歷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
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79152.html
摘要:和再來分別看看每個(gè)文件文件首先是有些值得注意的地方,拆開來單獨(dú)看引入了一個(gè)虛構(gòu)的。部分我們又用了,不同的是我們用了基本來指定默認(rèn)內(nèi)容。文件拼圖的下一部分就是。我們也用到了,同時(shí)還有,下面是的示例同樣拆開來看看這里又用到了。 一個(gè)項(xiàng)目的機(jī)會(huì)再加上我自己的探索,讓我對(duì)Handlebars partials有了更深的理解。事實(shí)證明,你可以做得比我了解的更多。 我最近在負(fù)責(zé)一個(gè)小項(xiàng)目,只有很少...
摘要:原文環(huán)境搭建以及使用創(chuàng)建第一個(gè)靜態(tài)頁面本篇將為讀者介紹項(xiàng)目開發(fā)環(huán)境的搭建,并創(chuàng)建一個(gè)靜態(tài)頁面。在文件中增加如下內(nèi)容使用快捷鍵關(guān)閉在用命令啟動(dòng)項(xiàng)目。創(chuàng)建一個(gè)模板仍然是使用命令創(chuàng)建模板。 原文:環(huán)境搭建以及使用Ember.js創(chuàng)建第一個(gè)靜態(tài)頁面 本篇將為讀者介紹Ember項(xiàng)目開發(fā)環(huán)境的搭建,并創(chuàng)建一個(gè)靜態(tài)頁面。 安裝Ember CLI 本教程使用的是2.4.3版本的Ember CLI工具集...
摘要:前端模板引擎參考參考參考后綴名的后綴有兩種,全稱的以及簡稱的條件表達(dá)式條件為真時(shí),才執(zhí)行待渲染數(shù)據(jù)上海模板片段表示當(dāng)前作用域表示上一級(jí)作用域條件表達(dá)式條件為假時(shí),才執(zhí)行路徑表示當(dāng)前作用域表示上一級(jí)作用域塊在中每一個(gè)都 前端模板引擎 Handlebars 參考1參考2參考3 后綴名 Handlebars的后綴有兩種,全稱的handlebars以及簡稱的hbs index.handle...
摘要:如果說傳統(tǒng)的前端開發(fā)是以頁面為中心來入手的話,那么現(xiàn)代的應(yīng)用開發(fā)就是以狀態(tài)為中心來著手設(shè)計(jì)和開發(fā)的。初步分析路由是怎么管理狀態(tài)的復(fù)雜的話題簡單說在中,應(yīng)用的每一個(gè)可能的狀態(tài)都是通過體現(xiàn)的。 引子 SPA(單頁面應(yīng)用)的核心是什么? 自該類型應(yīng)用誕生以來我最多思考的問題就是這個(gè)?,F(xiàn)在前端 SPA 框架滿天飛,許多不是框架的也被稱作框架,究竟有什么代表性的層(layer)能讓一個(gè)系統(tǒng)稱得上...
摘要:在第行中,我們會(huì)從集合取得結(jié)果并顯示它。的邏輯在中,我們要以性別作為,然后以作為。年齡是用來做計(jì)算用的,而名字只是用來顯示給人看的。我們要檢查所有和性別相關(guān)的年齡,找到年齡最大和最小的用戶。 在這篇文章里面,我們會(huì)演示如何在 MongoDB 中使用 MapReduce 操作。我們會(huì)用 dummy-json 這個(gè)包來生成一些虛假的數(shù)據(jù),然后用 Mongojs 如果想要快速看到結(jié)果,可以到...
閱讀 1201·2023-04-26 03:02
閱讀 1233·2023-04-25 19:18
閱讀 2620·2021-11-23 09:51
閱讀 2603·2021-11-11 16:55
閱讀 2654·2021-10-21 09:39
閱讀 1737·2021-10-09 09:59
閱讀 2029·2021-09-26 09:55
閱讀 3554·2021-09-26 09:55