`
jj7jj7jj
  • 浏览: 50041 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

javascript 视图模板 2.0

阅读更多
最近根据项目中的实际的问题,对原有模板进行了一些调整,修复了在复杂嵌套情况下的BUG

数据会分成3部分存放
this._tmp_cache = {}
缓存,通过$cache{value,key}设置

this.params = {}
所有参数,包括callbackObj + 自定义的参数

this.self_params = {}
自定义的参数


(注:callbackObj属于数据层的对象,但有时也许会想在基础上加上自己的参数,自定义参数与callbackObj同名,则会覆盖callbackObj)

从后台请求回来的数据比如是
var data = {
    name : "cc",
    desc : "    dddddd    ",
    deschtml : "<a href=''>ddddd</a>",
    href : "我是谁",
    playtime : 100,
    today : '2011-09-05 01:00:00',
}



//str3为模板
var t = new Template(str3,{
    //自定义属性
    category : "haha",
    //自定义函数
    sum : function(){
        //arguments全部是字符串,得自己转化类型
        return eval( [].slice.apply(arguments).join("+"))
    }
});



${name}   显示为   cc

说明:其他所有(如:$trim,$date,$f_,$encode)都会走这个接口
实现:直接从this.params或this._tmp_cache里面寻找,如果找到就返回数据,否则原样输出(输出为 name 而不是cc)

$trim{ desc }   显示为  dddd
说明:trim函数,去掉两边空格

$trim{ deschtml ,html}   显示为  dddd
说明:清空标签,只显示内容,第二个参数暂时只能是'html'

$encode{ href }  显示为   %E6%88%91%E6%98%AF%E8%B0%81
说明:相当于encodeURIComponent函数

$time{ playtime }  显示为  00:01:40
说明:计算数据,会转为  小时:分钟:秒 这样的格式
异常:
error(lib.TemplateNew.evaluate): time format is incorrect") 数据的格式不对

$date{ today ,YY MM DD  hh_mm_ss}  显示为  2011 09 05 01_00_00

说明:将时间格式化
      YYYY/YY 年 ,  MM 月   , DD 日  ,  hh 小时  ,  mm 分钟  ,  ss 秒
异常:
error(lib.TemplateNew.evaluate): date format is incorrect  第一个参数格式不对
error(lib.TemplateNew.evaluate): date format argument[1] is null 第二个参数格式不对

$fixed{asdjfkajskldjflk,2}  显示为  as
说明:data里面没有asdjfkajskldjflk,就会直接原样输出(asdjfkajskldjflk),第二个参数决定截取几个字符,相当月substring

$fixed{asdjfkajskldjflk} 显示为 asdjfkajskldjflk
说明:相当于${asdjfkajskldjflk},这么处理是用了容错,还是建议${..}

$pick{1,2,是,不是}  显示为  不是
说明:相当于  1 == 2 ? 是 : 不是

$pick{1 < 2,是,不是}  显示为  是
说明:相当于  eval("1 < 2") ? 是 : 不是

$pick{1 < 2,对了}  显示为  对了
说明:相当于  eval("1 < 2") ? 是 : ""
异常:
error(lib.TemplateNew.evaluate): the parameter num is incorrect  参数个数不正确


$cache{http://www.xxxx.com?name=${name}&&desc=$trim{desc},url}  不显示

说明:$cache是不返回任何字符的,但这函数是干嘛的呢?假设有下面这种需求

"<a href='http://www.xxxx.com?name=${name}&&desc=$trim{desc}'>地址1</a>"
"<a href='http://www.xxxx.com?name=${name}&&desc=$trim{desc}'>地址2</a>"

如果有N个这种连接,是不是要写N个,而且替换起来也不方便,解决方法:

$cache{http://www.xxxx.com?name=${name}&&desc=$trim{desc},url}   不显示    但this._tmp_cache['url'] == 'http://www.xxxx.com?name=cc&&desc=dddddd'

"<a href='${url}'>地址1</a>"  显示为  "<a href='http://www.xxxx.com?name=cc&&desc=dddddd'>地址1</a>"
"<a href='${url}'>地址2</a>"  显示为  "<a href='http://www.xxxx.com?name=cc&&desc=dddddd'>地址2</a>"

注意:
"<a href='${url}'>地址1</a>"  显示为  "<a href='url'>地址1</a>"

$cache{http://www.xxxx.com?name=${name}&&desc=$trim{desc},url}   不显示   但this._tmp_cache['url'] == 'http://www.xxxx.com?name=cc&&desc=dddddd'

"<a href='${url}'>地址2</a>"  显示为  "<a href='http://www.xxxx.com?name=cc&&desc=dddddd'>地址2</a>"

模板是动态执行的,所以$cache一定要放在最前面,比如在未定义之前就是用变量是会原样输出,所以第一行会输出‘url’字符而不是地址


上面例子已经看见了,模板还支持嵌套(深度为6层)

$cache{$pick{123,34,${category},${name}},imgsrc }  不显示    但this._tmp_cache['imgsrc '] == 'cc'


$f_sum{12,23,45}  显示为  80
说明:sum为自定义的函数名,还可以是别的,但前缀必须是$f_,主要是为了在上面函数不满足需求的情况下使用
实现:sum函数里面的this指向模板,有以下属性
      arguments  为参数
      this.params   相当于  data + 自定义的参数
      this.get(value)  相当于  ${}
      this.encode(value)  相当于  $encode{}
      this.trim(value)  相当于  $trim{}
      this.trimHTML(value)  相当于  $trim{value,html}
      this.fixed(value,len)  相当于  $fixed{value,len}
      this.date_format(date,format)  相当于  ${date,format}
      this.time_format(time)  相当于  $time{time}
异常:
error(lib.TemplateNew.evaluate): function "+f_name+" is not exists  函数名不存在


希望大家多提提意见,上次就给了我很多灵感
2
2
分享到:
评论
3 楼 jj7jj7jj 2011-12-05  
修复了一下bug,新添加了一些方法,已上传到附件
2 楼 jj7jj7jj 2011-09-05  
shiren1118 写道
看看jquery的模板插件。。。


非常感谢推荐,但jquery模板太依赖于jquery类库,有些功能相对来说显得过于强大,可能一个独立轻量级的框架会更加适合我~
1 楼 shiren1118 2011-09-05  
看看jquery的模板插件。。。

相关推荐

    程序员javaScript、struts2.0中文手册

    JavaScript 和 Struts 2.0 是两种在 Web 开发领域广泛应用的技术。JavaScript 是一种轻量级的客户端脚本语言,主要负责网页的交互逻辑,而 Struts 2.0 是一个基于 Model-View-Controller(MVC)设计模式的 Java Web ...

    银行网址大全HTML模板 v2.0.zip

    总之,【银行网址大全HTML模板 v2.0.zip】提供了一个构建银行网址集合网站的起点,利用HTML、CSS和JavaScript技术,开发者可以轻松定制并部署一个功能完善的平台,为用户查找和访问银行官网提供便利。

    基于Vue.js2.0的后台管理模板

    在这个基于Vue.js 2.0的后台管理模板中,开发者可以快速搭建一个功能完备的后台管理系统。下面将详细介绍这个模板包含的关键知识点。 1. **Vue.js 2.0**:Vue.js 2.0是Vue.js框架的第二个主要版本,它引入了性能...

    一个ve2.0最小管理模板.zip

    本资源“一个ve2.0最小管理模板.zip”显然与JavaScript的Vue.js框架有关,特别是针对Vue 2.0版本的一个轻量级管理界面模板。Vue.js是一个开源的渐进式JavaScript框架,它允许开发者构建用户界面,具有易学易用、高效...

    基于PHP的XTplphp模板引擎v2.0源码.zip

    XTplphp模板引擎遵循MVC(Model-View-Controller)设计模式,其中模板(View)负责处理视图部分,即用户在浏览器中看到的界面。它通过引入一种特殊的标记语言,使得开发者可以将动态数据与静态HTML内容相融合。这些...

    AgileUI2.0后台模板升级版

    AgileUI2.0后台模板升级版是一款专为开发者设计的高效、易用且功能丰富的Web界面开发框架。它基于现代前端技术栈,旨在提供一套完整的解决方案,帮助开发者快速构建美观且响应式的管理后台界面。这个升级版在原有的...

    Extjs2.0 智能提示

    ExtJS 是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。在ExtJS 2.0版本中,智能提示(Intelligent Hinting)是一项关键特性,它增强了开发人员的编码体验,提高了开发效率。智能提示功能提供了自动...

    vue2.0项目

    Vue.js 是一款轻量级的前端JavaScript框架,其2.0版本是对1.x版本的一次重大更新,旨在提高性能和开发体验。Vue2.0项目是基于Vue.js 2.0构建的应用程序,通常包括一系列组件化、路由管理、状态管理和优化策略。在这...

    基于PHP的飞天素材网后台管理框架模板v2.0源码.zip

    4. **视图(View)文件**:HTML、CSS和JavaScript文件,构成了用户界面,可能使用了模板引擎如Blade或Smarty来与PHP代码交互。 5. **公共资源文件**:如图片、字体、音频或视频,是网站呈现给用户的重要组成部分。 6...

    模拟VUE2.0的模板渲染+双向数据绑定

    在Vue.js 2.0中,模板渲染和双向数据绑定是其核心特性,极大地简化了前端开发过程。本文将深入探讨这两个概念,并通过一个迷你版的Vue实现来帮助理解。 一、模板渲染 模板渲染是Vue.js的一个重要功能,它允许...

    ASP.NET2.0中编程实现GridView与FormView的主-详细视图

    ASP.NET 2.0 中编程实现 GridView 与 FormView 的主-详细视图 在 ASP.NET 2.0 中,GridView 控件和 FormView 控件都是非常重要的控件,通常用于显示数据。GridView 控件提供了一个表格视图,显示多条记录的主要信息...

    vue2.0源码学习资源

    例如,Vue利用AST可以预编译模板,将DOM操作转换为更高效的JavaScript代码。 2. 编译原理:Vue的编译过程主要包括模板解析、静态部分提升、指令处理和代码生成等步骤。模板解析阶段,Vue会将HTML模板转化为AST;...

    商业源码-编程源码-MVC2.0项目模板0.2版源码.zip

    《MVC2.0项目模板0.2版源码解析》 在IT行业中,源码是程序员的心脏,它是理解软件工作原理的关键。本篇将深入探讨“商业源码-编程源码-MVC2.0项目模板0.2版源码.zip”这个压缩包中的核心知识点,帮助开发者更好地...

    strust2.0常用包

    7. **freemarker.jar**:FreeMarker是一个模板引擎,可以将数据模型和HTML模板结合生成动态HTML页面,是Struts2默认的视图技术。 8. **xwork-core.jar**:XWork是Struts2的基础,提供了Action和Interceptor的基础...

    hifive-template-editor:hive 视图模板编辑器

    综上所述,`hifive-template-editor` 是一个强大的 Hive 视图模板编辑器,它通过 JavaScript 技术为 Hive 用户提供了便利的数据管理和分析环境。通过充分利用这个工具,开发人员可以更高效地管理和操作大数据,提升...

    仿迪恩CG模型教程下载网站模板 php版 v2.0.zip

    2. MVC架构:该模板可能采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和视图展示分离,便于代码维护和扩展。 3. 数据库集成:模板可能使用了MySQL或其他关系型数据库来存储CG模型教程的元数据...

    2.0版本的vue.js + iview2.0的后台系统

    4. **模板语法**:Vue.js 提供了简洁的模板语法,使得HTML与JavaScript逻辑紧密结合,简化了视图层的编写。 5. **计算属性与侦听器**:通过计算属性可以创建基于其他数据的衍生数据,而侦听器则用于监听数据变化并...

    vue.js 2.0下载

    Vue.js 2.0 是一款轻量级的前端JavaScript框架,由尤雨溪开发,它在前后端分离的开发模式中扮演着重要角色。Vue.js 2.0 的设计目标是使开发过程更加简单、直观,同时保持高性能。在这个"vue.js 2.0 下载"的压缩包中...

Global site tag (gtag.js) - Google Analytics