TmodJS是一套完整的前端模块框架。
虽然我们PHP框架自带各种模板引擎,但是始终是后端模板引擎。例如我们在使用ThinkPHP3.2.3中如果是Ajax异步加载页面,拼接HTML真的是很头疼的一件事情。
第一次使用TmodJS是在人人商城开发中使用,用起来非常方便,于是记录下来。
先看看后端的代码:
<?php
//人人商城自带的生成json函数
function show_json($_var_31 = 1, $_var_32 = null)
{
$_var_33 = array("status" => $_var_31);
if ($_var_32) {
$_var_33["result"] = $_var_32;
}
die(json_encode($_var_33));
}
//假设shop是商品列表
$shop=array();
$shop['goods']=array(array('title'=>'苹果'),array('title'=>'香蕉'),array('title'=>'荔枝'),array('title'=>'大枣'));
show_json(1,$shop);
?> 再看看基本的前端页面:
<html>
<head>
<title></title>
<meta charset="UTF-8"/>
<script language="javascript" src="/js/require.js"></script>
<script language="javascript" src="/js/config.js"></script>
</head>
<body>
<div id="shop">
商城商品
<script id='shop_goods' type='text/html'>
<ul>
<%each goods as g %>
<li><%g.title%></li>
<%/each%>
</ul>
</script>
</div>
<script type="text/javascript">
require(['jquery','tpl','core'],function(jquery,tpl,core){
var url="http://learn.cn/api.php";
core.json(url, {}, function (json) {
var result = json.result;
$('#shop').html( tpl('shop_goods',result) );
});
});
</script>
</body>
</html>以上的页面要求商城首页打开默认使用异步加载数据显示。
解释以上代码:
RequireJS是一个非常小巧的JavaScript模块载入框架,用于加载其他js,config.js是配置要加载的js的位置和别名。core是人人商城的核心Js,内置非常的工具,例如提示,get/post工具。
core.json是获取后端json的方法,然后将后端发送的json赋予#shop下的shop_goods模板,然后就能进行循环了.
下载附件:
WebSql的原理是浏览器集成了sqllite数据库,Js操作,浏览器协助完成,没有多复杂。<!-- 三个核心方法  ...
捕捉模式从DOM最顶层一直到最后一层,冒泡正好相反,具体运行以下实例测试.<!DOCTYPE html> <html> <head> <title>捕捉和冒泡</title> <meta charset="...
<form action="save.php" method="post" target="nm_iframe"> &nbs...
维护老项目中客户提到一个页面中有6个表单以上,导致每次保存一个其他的数据全部丢失,自己比较懒没有全部更换为ajax.用户每次输入完成或者选择完成记录cookie,每次提交后加载页面完成初始化cookie即可。以下代码取自w3school比较完善,之前在其他博客使用的经常出现bug,这个比较推荐使用:...
HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。通过官网的介绍可以看出是接收服务器发送数据,千万不能和ajax混淆,网上大片博文的介绍对其解读是错误的,导致让我差点觉得这个事件很鸡肋。先看通用案例:html5:<script type=&...
ES5中编写函数,为了给参数默认值,必须在函数体内对参数判断,着实揪心。ES6好多了。<script type="text/javascript"> function run(width = 100, height&...