39行代码实现JS HTML模板(轻量+高效+易用)
otmpl 是一个轻量级前端模版(仅有39行无压缩代码,支持缓存),所用指令仅需[#...#]和{#...#},前者包含需要输出html语句,后者包含js变量。 支持javascript完整语法,你可以写for或者while或者其他任一javascript的语法。这个模板参考了YaYaTemplate,但我对其进行优化和改良,并缩短整体代码,提供更好的支持。
- str:一个 jQuery 对象或字符串
- data:json对象。
- helper:扩展对象,例如下面示例中自定义一个方法。
- 注意:str的内部采用 this.XXX 来访问 data,如:this.id == data.id。




<script id="addtmp" type="text/html">
var item = {};
var value = {};
if(this.id)
{
item.title = " 编辑 [ " + this.id + " ]";
item.icon = "icon-create";
item.url = "@Url.Action("AddData")";
item.success = function(data){
$.msg.alert('新建成功!新的编号为:' + data.value + '。');
$('#dataGrid').datagrid('reload');
$('#dlg').dialog('close');
};
var data = $.api('@Url.Action("GetDataByID")' + '/' + this.id)
if(data){
if(data.value != null) value = data.value;
else{
$.msg.error('错误 '+data.code,data.message);
$('#dlg').dialog('close');
}
}
else{
$.msg.error('数据访问发生了错误!');
$('#dlg').dialog('close');
}
}
else
{
item.title = " 新建";
item.icon = "icon-modify";
item.url = "@Url.Action("ModifyData")";
item.success = function(data){
$.msg.alert(data ? '保存成功!' : '保存失败,数据可能不存在!');
$('#dataGrid').datagrid('reload');
$('#dlg').dialog('close');
};
}
[#
<div id="dlg" class="easyui-dialog" title="{#item.title#}" style="width: 400px; height: 210px; padding: 10px"
data-options="
iconCls: '{#item.icon#}',
modal:true
">
<div class="filterArea onepcssgrid">
<form class="api-form" data-options="
url:'{#item.url#}',
success:{#item.success#}">
<div>
<div class="onerow">
<div class="col2 text-right">Address</div>
<div class="col9">
<input type="hidden" name="id" value="{#value.id#}" />
<input type="text" name="address" style="width: 100%" value="{#value.address#}" />
</div>
</div>
<div class="onerow">
<div class="col2 text-right">City</div>
<div class="col9">
<input type="text" name="city" style="width: 100%" value="{#value.city#}" />
</div>
</div>
<div class="onerow">
<div class="col2 text-right">Start</div>
<div class="col9">
<input type="text" name="start" style="width: 100%" value="{#value.start#}" />
</div>
</div>
<div class="onerow">
<div class="col2 text-right">End</div>
<div class="col9">
<input type="text" name="end" style="width: 100%" value="{#value.end#}" />
</div>
</div>
</div>
<div style="padding: 5px; width: 100%; margin-top: 5px; text-align: center; height: 22px;">
<input class="btn orange" type="submit" value="{#item.title#}" />
<input class="btn white" type="reset" value="清空" />
</div>
</form>
</div>
</div>
#]
</script>
39行代码实现JS HTML模板(轻量+高效+易用)的更多相关文章
- 一个只有99行代码的JS流程框架(二)
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 张镇圳,腾讯Web前端高级工程师,对内部系统前端建设有多年经验,喜欢钻研捣鼓各种前端组件和框架. 导语 前面写 ...
- 圣思源Java视频36节练习源码分享(自己的190+行代码对比老师的39行代码)
题目: * 随机生成50个数字(整数),每个数字范围是[10,50],统计每个数字出现的次数 * 以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来, * 如果某个数字出现次数为0, ...
- Vue.js:轻量高效的前端组件化方案
转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ...
- Day.js 是一个轻量的处理时间和日期的 JavaScript 库
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...
- 一个只有99行代码的JS流程框架
张镇圳,腾讯Web前端高级工程师,对内部系统前端建设有多年经验,喜欢钻研捣鼓各种前端组件和框架. 最近一直在想一个问题,如何能让js代码写起来更语义化和更具有可读性. 上周末的时候突发奇想,当代码在运 ...
- Vue.js:轻量高效的前端组件化方案(转载)
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...
- 【转】Vue.js:轻量高效的前端组件化方案
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...
- ES6躬行记(4)——模板字面量
模板字面量(Template Literal)是一种能够嵌入表达式的格式化字符串,有别于普通字符串,它使用反引号(`)包裹字符序列,而不是双引号或单引号.模板字面量包含特定形式的占位符(${expre ...
- 轻量高效的开源JavaScript插件和库 【转】
图片 布局 轮播图 弹出层 音频视频 编辑器 字符串 表单 存储 动画 时间 其它 加载器 构建工具 测试 包管理器 CDN 图片 baguetteBox.js - 是一个简单易用的响应式图像灯箱效果 ...
随机推荐
- Apache错误:[error] (OS 10038)在一个非套接字上尝试了一个操作
Apache错误:[error] (OS 10038)在一个非套接字上尝试了一个操作 博客分类: vb2005xu软件学习 OSApache防火墙PHPWindows 日志如下:[ ...
- VC++ 动态生成 成组的 RadioButton 按钮组
先说一下 静态创建的方法: 单选按钮也属于CButton类,但由于单选按钮总是成组使用的,所以它在制作和使用上与普通按钮有一定区别.假设有三个单选按钮组成一组,初始时,第一个单选按钮处于选中状态.我们 ...
- oracle 方向及资料
总结了一下大家的意见,也加了一些个人的看法,Oracle的学习路径,可供参考: 初级阶段: 可以从OCP教材开始,还有文档中的Administrator's Guide.Concepts.Perfor ...
- Java interview Advanced
1. Can you override private or static method in Java ? Read more: http://java67.blogspot.com/2012/09 ...
- sessionFactory
SessionFactory接口:SessionFactory接口负责初始化Hibernate.它充当数据存储源的代理,并负责创建Session对象.这里用到了工厂模式.需要注意的是SessionFa ...
- delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码
咏南中间件+咏南开发框架支持最新的delphi 10.1(berlin),老用户提供免费升级. 购买提供:中间件源码 附带福利(赠送): CS开发框架源码BS开发框架源码移动APP源码中间件集群源码二 ...
- quartus使用笔记
quartus中默认顶层文件名与工程名相同,或自行设置顶层文件:project->set as top-leval entity 顶层模块名要与工程名相同 RTL是编译后的结果,并没有与实际的硬 ...
- Sql Server 查询第30条数据到第40条记录数
1.select top 10 * from (select top 40 * from tablename order by id desc);
- Unity5的AssetBundle的一点使用心得
昨天一位朋友在我这里留言,想让我写点Unity5的AssetBundle心得.于是我就看了相关的介绍,和自己确切的做了一次.下面来谈谈所谓的心得. 如果你觉得自己对AssetBundle不熟悉,建议先 ...
- 5、清理mac缓存和关闭后台运行程序
一.清理mac 缓存 1.用鼠标点击桌面,然后按快捷键Command+Shift+G前往文件夹 2.输入路径:~/Library/Caches/ 3.清除所有的数据,把所有的Caches文件夹得都行 ...