前端js模板库 JinkoTemplate
有时候需要使用ajax来异步生成html,最土的方法就是用js的‘+’连接html代码,生成繁琐。一旦需要修改,对于少量的html代码到没啥问题,要是比较复杂的样式时,就真坑爹了,眼花缭乱有木有?JinkoTemplate库可以直接通过JinkoTemplate语法快速生成所需要的html代码,修改的时候也相当轻松,就如同修改当前html文件里的代码一样,不需要去修改js的地方。
以下是使用Demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript" src="jinko.template.js"></script> <script type="text/html" name="" id="aaa" cols="30" rows="10">
{@exp var x = 'end'}
{@loop data,row,key,seq}
{@seq}:{@key} = {@row} {@x}<br>
{@if row.a==1 && row.c==4}
yes
{@elseif row.c==3}
no
{@endif}
{@endloop}
<br><br>
{@loop ary,row,key,seq}
{@seq}:{@key} = {@row}<br>
{@endloop}
<br><br>
{@if booltrue}
true
{@endif}
{@if boolfalse}
false
{@endif}
<br><br>
{@if yi == 1}
一
{@elseif yi == 2}
二
{@else}
零
{@endif} </script>
<div id="bbb"></div>
<script type="text/javascript">
var tpl = document.getElementById('aaa').innerHTML;
var jinkoTpl = new JinkoTemplate();
jinkoTpl.assign('data', {a:1, asdb:'22110', c:3});
jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);
jinkoTpl.assign('booltrue', true);
jinkoTpl.assign('boolfalse', false);
jinkoTpl.assign('yi', 2);
document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl);
</script>
</body>
</html>
demo运行结果:
1:a = 1 end
2:asdb = 22110 end
3:c = 3 end 1:0 = 1
2:1 = 2
3:2 = 3
4:3 = 4
5:4 = 你好
6:5 = nihao true 二
模板语法:
模板语句由‘{@’和‘}’组成,共有由下五个句子:
{@if} {@else} {@elseif} {@endif} if语句
if语句及分支,用法{@if 表达式}
{@endif}为结束标记
{@loop} {@endloop} 循环语句
{@loop}有四个参数{@loop data,row,key,seq},参数之间用英文逗号隔开。其中,data和row参数是必须的。data是数据源(如数组等),row是遍历中的data的子集。key和seq参数是可选的,key是数据源索引(数组下标),seq是当前第几个子集(序号)。
{@endloop}为循环结束标记
{@exp} js表达式
可以执行js语句
{@变量} 输出变量值
模板对象的assign方法:
assign用于给模板对象指定的内部变量赋值,内部变量则用于模板语法中可以直接使用的变量
模板对象的parse方法:
parse方法接收一个参数,该参数为模板字符串,对该字符串进行解析和生成最终的html语句并返回
示例:
var tpl = document.getElementById('aaa').innerHTML; //获取模板内容
var jinkoTpl = new JinkoTemplate(); //创建模板对象
jinkoTpl.assign('data', {a:1, asdb:'22110', c:3}); //赋值模板对象内部变量
jinkoTpl.assign('ary', [1,2,3,4, '你好', 'nihao']);//赋值模板对象内部变量
jinkoTpl.assign('booltrue', true); //赋值模板对象内部变量
jinkoTpl.assign('boolfalse', false); //赋值模板对象内部变量
jinkoTpl.assign('yi', 2); //赋值模板对象内部变量
document.getElementById('bbb').innerHTML = jinkoTpl.parse(tpl); //解析模板并添加到DOM元素中
库下载地址(未压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.js
库下载地址(压缩): http://files.cnblogs.com/files/JinkoWu/jinko.template.min.js
前端js模板库 JinkoTemplate的更多相关文章
- 前端JS模版库kino.razor - 原理流程分析 - 改进版轮子RazorJs
1.前言 从后台获取数据,在前端JS里面拼接字符串,不累吗?敢不敢找一款前端使使... 现在这种模板库比较多了,我用过的jquery-template .JsRender .听说过的一堆,还有各种MV ...
- 基于前端js模板替换的多语言方案思考
最近在做将一个系统多语言化的项目,系统使用的是ASP.NET,直接使用了一种已有的方案:在页面渲染时采用正则表达式替换{XXX:001 确定}格式的标记.但是这个方式增加了服务端的字符串处理,对页面性 ...
- 前端JS模板引擎Mustache.js的用法
Mustache.js在前端是一个非常强大的模板 Mustache用法参考
- 【超精简JS模版库/前端模板库】原理简析 和 XSS防范
使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> < ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
- 14个优秀 JS 前端框架、库、工具及其使用时机
这篇文章主要描述现今流行的一些 Javascript web 前端框架,库以及它们的适用场景. 新的 Javascript 库层出不穷,从而Web 社区愈发活跃.多样.在多方面快速发展.详细去描述每一 ...
- 使用前端后台管理模板库admin-lte(转)
使用前端后台管理模板库admin-lte 使用前端后台管理模板库admin-lte 安装 搭建环境 安装 安装admin-lte,可以通过以下几种办法安装,下图是GitHub中admin-lte的主页 ...
- 前端Js框架汇总
概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...
- Gremlins.js – 模拟用户随机操作的 JS 测试库
Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...
随机推荐
- Leetcode算法刷题:第112题 Path Sum
Path Sum 题目 给予一个二叉树,和一个值su,寻找是否有一个从根节点到叶节点的和为su,有则返回True,没有为False.比如: 5 / \ 4 8 / / \ 11 13 4 / \ \ ...
- Eclipse Plugin Dev Materials
以下资料是本人在开发Eclipse 插件时候收集的一些比较有用的资料Link,和大家分享下. 比较权威的资料: Helpful Eclipse Plugin Websites: Eclipse Art ...
- logstash Codec
Logstash 使用一个名叫FileWatch的Ruby Gem库来监听文件变化,这个库支持glob扩展文件路径, 而且会记录一个叫.sincedb的数据库文件来跟踪被监听日志文件的当前读取位置,所 ...
- Linux常用C函数---字符串转换篇
函数讲解部分参考http://net.pku.edu.cn/~yhf/linux_c/ atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表 ...
- 当浏览器不支持placeholder,所执行的函数
$(function(){ //判断浏览器是否支持placeholder属性 supportPlaceholder='placeholder'in document.createElement('in ...
- C# 3.0 { get; set; } 默认值
.NET Framework 3.5 使用的是 C# 3.0,C# 3.0 有一些新的语言特性,其中有一项就是快捷属性. 之前的写法: private int _id = 0;public int I ...
- PHP 多input file文件上传
前台html jquery代码 后台PHP处理 前台html <form id="form" method="post" enctype="mu ...
- Hadoop CLI MiniCluster
CLI MiniCluster Use the climonicluster, users can simply start and stop a single-node hadoop cluster ...
- 小米手机与魅族的PK战结果 说明了什么
我国电子商务面临的问题,淘宝退出百度无疑是一个遗憾.当在网上购物时.用户面临的一个非常大的问题就是怎样在众多的站点找到自己想要的物品,并以最低的价格买到.自从淘宝退出百度.建立自己的搜索引擎后,广大消 ...
- MVC3.0修改jquery.validate.unobtrusive.js实现气泡提示mvc错误
CSS部分 <style type="text/css"> .hide {display:none;} .poptip { position: absolute; to ...