javascript视图模板

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:02 点击:

任务原因,下周要实现一个模块,为了能提高效率,我做了一个通用工具类,其实也是在原基础上改的

以前的版本支持${..}这种样子的替换 比如
<div style="display:${display}">...
替换为
<div style="display:none">...

有些比如时间格式化和判断之类就必须在代码处理好了之后在将值传给模板,但格式化和判断逻辑基本都是一致的,于是我想这些直接通过视图模板就处理好些问题

$date:时间格式化
<span>$date{day,YY MM DD}</span>
替换为
<span>11 11 11</span>

$pick:三目运算
<span>$pick{age,25,好年轻,好老啊}</span>
替换为(age = 24)
<span>好年轻</span>

模板如果想处理更灵活,需要对嵌套的情况做下处理 比如:

<span>$pick{age,${age2},${msg1},${msg2}}</span>
替换为(age = 24,age2 = 25 , msg1 = 好年轻 ,msg2 = 好老啊)
<span>好年轻</span>

有时候模板需要过滤掉${..},可能真正输出就是这种格式,怎么办?加上"\\"
<span>$pick{age,${age2},\\${msg1},${msg2}}</span>
替换为(age = 24,age2 = 25 , msg1 = 好年轻 ,msg2 = 好老啊)
<span>${msg1}</span>


Javascript代码 
function extends(objOld,objNew){ 
    for(var n in objNew){ 
        if(objNew.hasOwnProperty(n)){ 
            objOld[n] = objNew[n]; 
        } 
    } 

 
Template = function(){ 
    this.initialize(arguments[0]); 
}; 
Template.prototype = { 
    initialize: function (template,opt) { 
        this.template = template + ''; 
        //对\\进行过滤 
        this.filter = "\\\\"; 
        //format:arguments[3],arguments[4] 
        //pic:arguments[5],arguments[6],arguments[7],arguments[8] 
        //defalut:arguments[9] 
        //获取参数  
        this.regPattern = /(^|[\s\S])(\$date\{([^,]*?),([^}]*?)\}|\$pick\{([^,]*?),([^,]*?),([^,]*?),([^}]*?)\}|\$\{([^}]*?)\})/g; 
        //是否嵌套 
        this.isNesting = /(?:^|[\s\S])\$[^{]*?\{[^}]*?(?=\$[^{]*?\{[^}]*?\})/g; 
        extends(this,opt); 
    }, 
    evaluate: function (obj) { 
        var _template = ""; 
        if (typeof obj == "object") { 
            var _this = this; 
 
            _template = this.template.replace(this.regPattern, function (s, v1, v2) { 
                if(_this.isNesting.test(s)){ 
                    for(var i = arguments.callee.length ;  i < arguments.length - 2 ;i ++){ 
                        if(arguments[i]){ 
                 &nb

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1