Handlebars+requireJS学习

1 篇文章 0 订阅
1 篇文章 0 订阅

以前开发都是服务器代码、HTML代码、js代码混用,如果功能复杂,维护、扩展很麻烦。最近在学习各种js的框架,以下是一个handlebars和requirejs的例子。

清单1——index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <!--================================此出为requirejs入口,data-main为配置的入口================================-->
  <script type="text/javascript" data-main="js/handlebarstest.js" src="js/lib/require.js"></script>
 </HEAD>

 <BODY>

 	<h2>Simple handlebars demo</h2>  
    <button id="btn1">Click me</button>  
    <div id="my_div1">  
  
    </div>  

 	<script id="table1" type="text/x-handlebars-template">
	 	<table>
	 		<tr>
	 			<td>UserName</td>
	 			<td>Name</td>
	 			<td>Email</td>
	 		</tr>
	 		 {{#if users}}  
	 		 	//================================此处如果是接送数组是多值,即用方括号括起来的数据,需要用#each进行循环显示================================
	 		 	{{#each users}}
			 		<tr>
			 			<td>{{username}}</td>
			 			<td>{{firstname}}-{{lastname}}</td>
			 			<td>{{email}}</td>
			 		</tr>
			 	{{/each}}
	 		{{else}}
	 			<tr>
	 				<td colspan="3"></td>
	 			</tr>
	 		 {{/if}}  
	 	</table>
  	</script>
  	<script type="text/javascript">
  		//===================主函数入口================================
  		require(["app/home"],function(home){
  			home.init();
  		})
  	</script>
 </BODY>
</HTML>


清单2——js/config.js

//
require.config({
	baseUrl:"js/",	//定义统一的js根目录
	paths:{
		jquery:"lib/jquery",
		handlebars:"lib/handlebars",//可以直接写基于baseURL的js路径
		showdiv1:"app/showtable1"	//可以直接写相对路径,例如../js/app/showtable1
	},
	
	//shim专门用来配置不兼容的模块。每个模块要定义。例如此例中handlebars,不是符合AMD规范
	//----属性1:exports值(输出的变量名),表明这个模块外部调用时的名称;
	//----属性2:deps数组,表明该模块的依赖性。
     shim: {
        'handlebars': {
            exports: 'Handlebars'
        }
    }
    
})


清单3——js/home.js

//================================define定义函数块另外第二个参数是和第一个对应的定义块对象)================================
//================================****第1个参数是依赖(依赖快捷可以定义在requirejs配置里面,也可以直接写死路径。
///===============================****第2个参数是和第一个参数里,依赖js的对应对象,名称可以自定义
fine(["jquery","showdiv1"],function($,st1){
	var home={
		init:function(){
			$("#btn1").click(function(){
				var data= {
					users:[
						{username:"zhangsan",firstname:"zhang",lastname:"san",email:"zhangsan@123.com"},
						{username:"lisi",firstname:"li",lastname:"si",email:"lisi@163.com"},
						{username:"wangwu",firstname:"wang",lastname:"wu",email:"wangwu@qq.com"}
					]
				};
				st1.reterDiv(data);
			})
		}
	}
	return home;
})


清单4——js/showtable1.js

define(["jquery","handlebars"],function($,Handlebars){
	var showtable1 = {

		reterDiv:function(data){
			
			var source = $("#table1").html();
			var template = Handlebars.compile(source);
			var html = template(data)
			$("#my_div1").html(html);
		}
			
	};
	return showtable1;
})


清单5——js/lib/handlebar、jquery、require等js标准库,略去。。。


requireJS调用关系


收藏几个学习网址:

  1. GBin1专题教程之Javascript模板引擎handlebars
  2. Handlebars 的使用
  3. require.js 入门学习
  4. 官网



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值