最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦。

1.引用文件:

jquery.js文件下载:http:///jquery.com                handlebars.js文件下载:http://handlebarsjs.com/

<span style="white-space:pre">	</span><script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="handlebars.js"></script>

2.基础使用:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>handlebars基础用法</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="handlebars.js"></script>
</head>
<body>
<div id="list">
<script id="template" type="text/x-handlebars-template">
<h3>{{title}}</h3>
<p>{{content}}</p>
</script>
</div> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {
"title":"中国",
"content":"中华人名共和国"
};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>
</body>
</html>

3.语法:

(1)handlebars.js表达式:一对双括号中间包含着内容。

<span style="white-space:pre">	</span><h3>{{title}}</h3>
<p>{{content}}</p>

(2)注释:{{!这是注释内容}} or {{!--这是注释内容--}}

(3)html编码:json对象中包含的html格式的内容,经{{}}后会被转化为纯文本,如果需要解析html内容的编码,则用{{{}}}

	<div id="list">
<script id="template" type="text/x-handlebars-template">
<h3>{{title}}</h3>
<h3>{{{title}}}</h3>
<p>{{content}}</p>
<p>{{{content}}}</p>
</script>
</div> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {
"title": "<中国 >",
"content": '<a href="http://baidu.com">百度</a>'
};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

(4)快表达式:快表达式由{{#}}开始,由{{/}}结束,eg:

if块:{{#if}}{{code}}{{/if}}

(5)路径:可以使用.符号来查询你想要的属性。使用../来查询当前上下文中要查询的父路径的属性。

	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#province}}
<li>{{name.first}}简称{{name.second}},国家:{{../country}}</li>
{{/province}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {
country: "中国",
province: [
{name:{first:"安徽",second:"皖"}},
{name:{first:"重庆",second:"渝"}} ]
};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

(6)内置辅助函数:

 each循环:

基本用法

	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#each province}}
<li>{{name}}</li>
{{/each}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {province: [
{name:"北京"},
{name:"天津"},
{name:"重庆"},
{name:"上海"}
]
};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

另外,如果传递给辅助函数的数据对象是一个数组,那么可以用this指代上下文。

	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#each this}}
<li>{{first}}简称{{second}}</li>
{{/each}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = [
{first:"安徽",second:"皖"},
{first:"重庆",second:"渝"}
];
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

each嵌套循环:

	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#each this}}
{{#each cities}}
<li>{{this}}</li>
{{/each}}
{{/each}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = [
{
cities:[
"北京",
"天津"
]
},
{
cities:[
"重庆",
"上海"
]
}
];
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">each循环中的索引:@index,默认从0开始</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="html">	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#each this}}
<li>{{@index}}</li>
<li>{{name}}</li>
{{/each}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = [
{name:"北京"},
{name:"重庆"},
{name:"天津"},
{name:"上海"}
];
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><strong><span style="font-size:12px;">if条件:</span></strong>if条件不接受任何的逻辑条件判断语句,仅判断值的true。若需要逻辑判断语句,则需要使用自定义辅助函数。</span>
	<ul id="list">
<script id="template" type="text/x-handlebars-template">
{{#if province}}
<li>{{country}}的{{province}}</li>
{{/if}}
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {country:"中国",province:"重庆"};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

else和if配合使用,而unless是当条件为假时调用,即等价于if/else块的else部分。

自定义辅助函数:使用Handlebars.registerHelper("name",function(parameters){...code...})语句自定义,name是函数名,function接受任意的参数作为函数的执行部分。

	<ul id="list">
<script id="template" type="text/x-handlebars-template">
<li>{{week day}}</li>
</script>
</ul> <script type="text/javascript">
$(document).ready(function() {
//模拟json对象
var data = {day:0};
var template = $("#template").html();//jquery用法,获取模板代码
var myTemplate = Handlebars.compile(template);//注册Handlebars模板 Handlebars.registerHelper("week",function(today){
switch(today){
case 0:return "sunday";
case 1:return "monday";
default:return "i don't know";
}
}); var html = myTemplate(data);//封装json对象,生成HTML代码
$('#list').html(html);//jquery用法,将生成的html代码替换template模板
});
</script>

还有个是自定义辅助块函数,还没弄懂。。。

handlebars.js基础学习笔记的更多相关文章

  1. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

  2. 两万字Vue.js基础学习笔记(二)

    Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...

  3. node.js 基础学习笔记3 -express

    1.工作原理 当通过app.js建立的服务器时,会看到一个简单的页面.返回页面时,浏览器会向服务器发送请求.app会解析请求的路径,调用相应的逻辑,调用对应的视图模板,传递对象数值,最终生成HTML页 ...

  4. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  5. node.js 基础学习笔记2

    Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...

  6. node.js 基础学习笔记1

    1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...

  7. js基础学习笔记(六)

    事件(可以被 JavaScript 侦测到的行为) 主要事件表: 加载事件(onload) 事件会在页面加载完成后立即发生,同时执行被调用的程序. 卸载事件(onunload) 当用户退出页面时(页面 ...

  8. js基础学习笔记(二)

    2.1  输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用“”括起,直接输出&q ...

  9. js基础学习笔记(一)

    * 在js编写过程中,尽量保持统一使用单引号 'XXXX': * 所有变量都要声明 var,避免全局函数调用的冲突: 1.1    输出内容 docment.write(‘aileLi’); 改变某I ...

随机推荐

  1. 【原创】SSIS-执行包任务调用子包且子包读取父包变量

    背景: 有时候需要将一个个开发好的独立的ETL包串接起来形成一个独立而庞大的包,如:每家分公司都开发不同的ETL包,最后使用执行包任务来将这些分公司的包给串联起来形成一个独立而完整运行的ETL包,此时 ...

  2. AC日记——Little Elephant and Shifts codeforces 221e

    E - Little Elephant and Shifts 思路: 一次函数线段树(疯狂debug): b不断循环左移,判断每次最小的|i-j|,a[i]=b[j]: 仔细观察发现,每个bi移动时, ...

  3. AC日记——Little Elephant and Function codeforces 221a

    A - Little Elephant and Function 思路: 水题: 代码: #include <cstdio> #include <iostream> using ...

  4. 线段树【p2801】教主的魔法

    Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.--.N. 每个人的 ...

  5. Python学习笔记——常量和变量

    数字常量 如下是python的一些常量表示形式: 2            整数 3.23            浮点数 52.3e-4        科学技术法表示的浮点数 -5 -4.6j     ...

  6. 我学MSMQ(一)

    一.通过这篇文章主要是对自己学习MSMQ进行小结,并希望能把自己的想法写出来,能和一些也正在研究MSMQ的朋友共同学习,并希望能给予指导和建议         二.首先是MSMQ的一些理论上的知识   ...

  7. Excel设置下拉菜单并隐藏下拉菜单来源单元格内容

    一.问题来源 做实验室的进展统计表,老师让加上开始时间和完成时间,时间格式:周几_上午(下午.晚上). 这样就可以了做下拉菜单,方便填写,而且格式统一,方便查看. 二.解决办法 2.1 下来菜单 红框 ...

  8. Go -- 卸载 Go

    直接删除usr下的go文件夹即可 命令行: cd / 1 然后: open usr 1 删除go文件夹

  9. 从M个数中随机等可能的取出N个的问题

    从0到m-1这m个数中随机取出n个(n<=m) 要求每个数被取到的可能性相等. 第一个方法是把这m个数丢到一个List里面 然后用nextInt(list.size())来产生随机数 然后把li ...

  10. 【Spark】SparkContext源代码解读

    SparkContext的初始化 SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负 ...