zoukankan      html  css  js  c++  java
  • JavaScript模板语言

    JavaScript模板语言

     

    1. artTemplate

    1.1 快速入门

    1.2 语法

    1.2.1 原始与标准

    1.2.2 输出

    1.2.3 条件

    1.2.3 循环

    1.2.3 设置变量

    1.2.4 模板继承

    1.2.5 子模板

    1.2.6 过滤器

    1.2.7 调试

    1.2.8 模板变量

    1.2.9 压缩页面

    1.2.10 API

    2. thymeleaf

    spring-boot 中thymeleaf使用目录结构:

    使用方式

    遇到问题

    bug1

     

     

    1. artTemplate

     

    -中文文档:https://aui.github.io/art-template/zh-cn/docs/

    1.1 快速入门

    引入js:

    定义模板:

    使用模板:

    1.2 语法

    1.2.1 原始与标准

    更推荐使用标准语法,更加简洁,但是原始语法逻辑更加明确

    1.2.2 输出

    不允许输出富文本:

    <h1>{{ value }}</h1>

    原文输出【允许输出富文本】:

    <h1>{{@ value }}</h1>

    1.2.3 条件

    {{if flag == 0}}...{{ else if flag == -1 }}...{{ else }} ... {{ /if }}

    1.2.3 循环

     

     

     

    1.2.3 设置变量

    1.2.4 模板继承

    定义(layout.art):

    使用(index.art):

     

    1.2.5 子模板

    1.2.6 过滤器

    在上次做的django项目里自己曾写过一个过滤器

    注册过滤器

    template.defaults.imports.dateFormat = function(date, format){/*[code..]*/};
    
    template.defaults.imports.timestamp = function(value){return value * 1000};

    过滤器函数第一个参数接受目标值。

    标准语法

    {{date | timestamp | dateFormat 'yyyy-MM-dd hh:mm:ss'}}

    {{value | filter}} 过滤器语法类似管道操作符,它的上一个输出作为下一个输入。

     

    1.2.7 调试

    1.2.8 模板变量

    模板变量:

    导入变量

    内置变量清单

    1.2.9 压缩页面

    开启:

    template.defaults.minimize = true;

    配置:

    参见:https://github.com/kangax/html-minifier

     

    默认配置:

    1.2.10 API

    § template

    函数:template(filename,content)

    根据模板名渲染模板。

     参数:

     {string} filename

     {Object,string} content

     返回值:

     如果 content 为 Object,则渲染模板并返回 string

     如果 content 为 string,则编译模板并返回 function

     

    var html = template('/welcome.art', {

        value: 'aui'

    });

     

    浏览器版本无法加载外部文件,filename 为存放模板的元素 id

    § complie

    § render

    返回渲染的结果

     

    § helper

    //时间戳转换
    template.helper('dateFormat' , function (date, format) {
        date = new Date(date);
        var map = {
            "M": date.getMonth() + 1, //月份
            "d": date.getDate(), //
            "h": date.getHours(), //小时
            "m": date.getMinutes(), //
            "s": date.getSeconds(), //
            "q": Math.floor((date.getMonth() + 3) / 3), //季度
            "S": date.getMilliseconds() //毫秒
        };
        format = format.replace(/([yMdhmsqS])+/g, function (all, t) {
            var v = map[t];
            if (v !== undefined) {
                if (all.length > 1) {
                    v = '0' + v;
                    v = v.substr(v.length - 2);
                }
                return v;
            } else if (t === 'y') {
                return (date.getFullYear() + '').substr(4 - all.length);
            }
            return all;
        });
        return format;
    };

    以上是artTemplate4.0以上的写法,4.0以后不在使用template.helper而是使用:

    //时间戳转换
    template.defaults.imports.dateFormat = function (date, format) {
        date = new Date(date);
        var map = {
            "M": date.getMonth() + 1, //月份
            "d": date.getDate(), //
            "h": date.getHours(), //小时
            "m": date.getMinutes(), //
            "s": date.getSeconds(), //
            "q": Math.floor((date.getMonth() + 3) / 3), //季度
            "S": date.getMilliseconds() //毫秒
        };
        format = format.replace(/([yMdhmsqS])+/g, function (all, t) {
            var v = map[t];
            if (v !== undefined) {
                if (all.length > 1) {
                    v = '0' + v;
                    v = v.substr(v.length - 2);
                }
                return v;
            } else if (t === 'y') {
                return (date.getFullYear() + '').substr(4 - all.length);
            }
            return all;
        });
        return format;
    };

    在模板页面中使用:

     

     

     

    2. thymeleaf

    spring-boot 中thymeleaf使用目录结构:


    使用方式

     

    遇到问题

    bug1

    使用thymeleaf模板的html页面的js里不能正常使用for循环也不能使用$.each,解决方案:

    /* <![CDATA[ */
         for(var i=1;i<3;i++){
          alert(i);
        }
     /* ]]> */

     

    前进时,请别遗忘了身后的脚印。
  • 相关阅读:
    程序语言 -- Python面向对象
    程序语言 -- Python入门
    Git小白 -- GitHub的使用
    Markdown
    Git小白 -- GitHub 静态博客
    Hadoop详解一:Hadoop简介
    基于七牛Python SDK写的一个批量下载脚本
    基于七牛Python SDK写的一个同步脚本
    Python selenium的js扩展实现
    关于敏捷和自动化测试的一点心得
  • 原文地址:https://www.cnblogs.com/liudaihuablogs/p/13468487.html
Copyright © 2011-2022 走看看