`

瀑布流-KISSY 模板Template

阅读更多

Template

模板, 具备如下特性:
- 模板语法,从 {{#tagName}} 开始,由 {{/tagName}} 结束(如果有结束标签的话).
- 模板变量, {{variable}} .
- 原生支持 if/elseif/else/each/! 四个标签.
- 支持嵌套.
- 容错和调试.
- 性能还不赖.
- 容易扩展.

Usage

获取模块值

KISSY.use("template",function(S,Template){

});

正常调用:

其中 Template(‘template here.’)返回编译后的模板方法, 可调用render渲染不同的数据

Template('template here.').render(data);

语法扩展:

该方法,提供扩展语法的接口,目前支持标签语法开始,关闭及一个参数传递.

Template.addStatement({'while': {
    start: 'while(KS_TEMPL_STAT_PARAM){',
    end: '}'
}});

即可支持 while 语句

{{#while true}}
    BLOCK
{{/while}}

Syntax

变量

变量支持JavaScript语法里的任何有返回值的语句,比如 name , user.name , user[0].name , 甚至可以使用方法, KISSY.one('#template').html()

语法:

{{Variable}}

范例:

Template('Hello, {{name}}.')
    .render({name: 'Frank'});

Hello, Frank.

Template('Hello, {{user.name}}.')
    .render({user: {name: 'Frank'}});

Hello, Frank.

if 语句

语法:

{{#if conditions}}
    BLOCK
{{/if}}

范例:

Template('Hello, {{#if show}}{{name}}{{/if}})')
    .render({show: true, name: 'Frank'});

Hello, Frank

else和elseif

语法:

{{#if conditions}}
    BLOCK
{{#elseif conditions}}
    ELSEIF BLOCK
{{#else}}
    ELSE BLOCK
{{/if}}

范例:

Template('Hello, {{#if showName}}{{name}}.{{#else}}{{nick}}{{/if}})')
    .render({showName: false, name: 'Frank', nick: 'yyfrankyy'});

Hello, yyfrankyy.

Template('Hello, {{#if name}}{{name}}.{{#elseif nick}}{{nick}}{{/if}})')
    .render({name: 'Frank', nick: 'yyfrankyy'});

Hello, Frank.

each

循环读取某个变量,直接调用 KISSY.each 方法进行遍历.

语法:

{{#each conditions as value index}}
    BLOCK
{{/each}}

注意 as value index 可选

范例1(使用默认的循环参数):

Template('Hello, {{#each users}}<b color="{{_ks_value.color}}">{{_ks_value.user}}</b>{{/each}})')
    .render({users: [{name: 'Frank', color: 'red'}, {name: 'yyfrankyy', color: 'green']});

Hello, <b color="red">Frank</b><b color="green">yyfrankyy</b>

范例2(使用自定义参数,可选):

Template('Hello, {{#each users as user}}<b color="{{user.color}}">{{user.name}}</b>{{/each}})')
    .render({users: [{name: 'Frank', color: 'red'}, {name: 'yyfrankyy', color: 'green']});

Hello, <b color="red">Frank</b><b color="green">yyfrankyy</b>

Template('Hello, {{#each users as user index}}<b color="{{user.color}}">{{index}}:{{user.name}}</b>{{/each}})')
    .render({users: [{name: 'Frank', color: 'red'}, {name: 'yyfrankyy', color: 'green']});

Hello, <b color="red">0:Frank</b><b color="green">1:yyfrankyy</b>

范例3(嵌套使用):

Template('Hello, {{#each users as user}}<b color="{{user.color}}">{{#each user.names as name}}{{name}}{{/each}}</b>{{/each}})')
    .render({users: [{names: ['Frank', 'Wang'], color: 'red'}, {names: ['Frank', 'Xu'], color: 'green']});

Hello, <b color="red">FrankWang</b><b color="green">FrankXu</b>

单行注释

语法:

{{#! comments}}

范例:

Template('Hello, {{#! here you go.}}{{name}}.').render({name: 'Frank'});

Hello, Frank.

标签嵌套

理论上支持任意标签嵌套,如果标签有关闭字符,记得关闭=,=,嵌套标签形成多代码块嵌套,作用域与JavaScript的作用域一致.

语法:

{{#each object}}
    {{#if condition}}
        BLOCK
    {{/if}}
{{/each}}

范例:

Template('Hello, {{#each users}}{{#if _ks_value.show}}{{_ks_value.name}}{{/if}}{{/each}}.')
    .render({users: [{show: false, name: 'Frank'}, {show: true, name: 'yyfrankyy'}]});

Hello, yyfrankyy.

容错和调试.

容错

目前支持两种错误信息:

  1. Syntax Error. 指模板在预编译阶段发生语法错误(模板编译后生成的脚本语法错误).
  2. Render Error. 指模板在渲染时发生错误(运行时错误,数据错误,或者模板变量错误等).

调试

默认情况下,模板将编译时和运行时的错误,直接返回到结果里.

调试过程可调用 Template.log() 方法输出渲染方法,定位脚本模板错误,并可通过引用 jsbeauty 来格式化生成的模板方法.

分享到:
评论

相关推荐

    瀑布流布局-kissy-asp.net瀑布流_json,,

    是利用kissy提供的插件做出来的瀑布流布局,因为之前的项目很大,文件很大,我不能把整个项目拷上来吧,so,所以我把主要的东西整理下发上去,这个直接运行是看不到效果的,因为读取数据那部分要你自己去写(到你...

    瀑布流布局-kissy-asp.net瀑布流_json数据

    这个demo是以前做的一个项目拷贝下来的,是利用kissy提供的插件做出来的瀑布流布局,因为之前的项目很大,文件很大,我不能把整个项目拷上来吧,so,所以我把主要的东西整理下发上去,这个直接运行是看不到效果的,...

    Bo-Blog Kissy

    "Bo-Blog Kissy"是一个基于博客系统的网页模板,它为用户提供了一种独特且美观的展示方式,使得个人或企业能够构建出具有个性化风格的博客网站。Bo-Blog是一款流行的开源博客系统,而Kissy是这个系统的一个特定主题...

    shopify免费主题模板kissy

    "Kissy"是一个专门为Shopify设计的免费主题模板,由个人开发者辛勤工作数晚精心打造,专用于内衣商品的展示。在本文中,我们将深入探讨Shopify平台、主题模板的重要性以及Kissy主题的特点和优势。 首先,让我们了解...

    异步加载的js瀑布流

    在"异步加载的js瀑布流"中,Kissy是一个JavaScript库,它被用于实现这个功能。Kissy是一个轻量级、模块化的前端开发框架,支持AMD(Asynchronous Module Definition)规范,能够帮助开发者组织代码,提高代码的可...

    kissy瀑布流(含demo)

    KISSY库,可以实现瀑布留效果。 - build: 构建好的发布文件 - docs: API 文档 - src: 源码、测试等开发资源 - tools: 打包压缩等自动化工具 瀑布流效果在src\waterfall\demo.html

    kissy中文文档

    高发展前途的web前端开发利器--kissy,中文文档。拥有该文档后不必再上网到处找,一切尽在其中。

    kissy-xtemplate:用于 KISSY 的独立 XTemplate 编译器

    亲吻xtemplate 用于 KISSY 的独立 XTemplate 编译器用法节点 var XTemplate = require ( 'kissy-xtemplate' ) ;new XTemplate ( ) . compileSync ( 'xxx.xtpl.html' , 'xxx.xtpl.js' ) ; 或使用异步版本: var ...

    kissy-1.4.8.rar

    Kissy 是一个强大的Web前端开发框架,源自阿里巴巴集团,旨在简化前端开发流程,提高开发效率。Kissy 1.4.8 版本是这个框架的一个稳定版本,它包含了丰富的功能和优化,使得开发者能够更好地应对复杂的前端项目需求...

    kissy-1.4.8.zip

    kissy-1.4.8.zip,淘宝最新前端开发包

    js KISSY框架仿阿里云滑动下拉导航菜单效果代码.zip

    在本文中,我们将深入探讨如何使用JavaScript库KISSY来实现一个类似阿里云滑动下拉导航菜单的效果。KISSY是一个专为前端开发者设计的轻量级、高性能的JavaScript框架,它支持模块化开发,使得构建复杂Web应用变得...

    JAVASCRIPT驱动开发小教程-BY KISSY TEAM

    在《JAVASCRIPT驱动开发小教程》中,KISSY团队详细介绍了如何利用JavaScript进行高效稳定的开发工作,特别是针对跨浏览器兼容性问题提出了有效的解决方案。本文将深入探讨教程中的关键知识点,包括测试策略、单元...

    提示补全组件:Kissy Suggest

    标题中的“Kissy Suggest”是指Kissy框架中的一个组件,Kissy是一个轻量级的JavaScript库,专注于前端开发,提供了丰富的组件化功能。Suggest组件则是Kissy中用于实现自动提示、补全功能的部分,常见于搜索框或...

    kissy文件 kissyteam-kissyteam.github.com-901d2cd.rar

    《Kissy 文件与 KissyTeam 的前端开发实践》 Kissy 是一个轻量级的 JavaScript 框架,由 KissyTeam 团队开发并维护。这个名为 "kissyteam-kissyteam.github.com-901d2cd.rar" 的压缩包文件,包含了 KissyTeam 在 ...

    generator-bee:kissy简单工程构建器,强调简单和快速,没有复杂的工程分级和复杂的命令功能

    安装kissy-gallery目录生成器 npm install generator-bee -g 生成组件目录 新建个工程目录,进入执行命令: yo bee 调试 模块文件使用CMD规范,是无法使用源码直接调试的,所以bee 内置了个本地静态服务,运行: ...

    几款前端模板引擎合集.zip

    在本合集中,我们关注了几款流行的JavaScript模板引擎,包括doT、art-template、tpl、BaiduTemplate、kissyTemplate以及tmpl和juicer。下面我们将对这些模板引擎进行详细阐述。 1. doT.js doT.js是一款高效且简洁的...

    Web常用UI库 kissy.zip

    在`kissy-master`这个压缩包中,通常会包含以下内容: - `src`目录:存放Kissy库的源代码,按照模块结构组织,开发者可以在这里查看和修改源码。 - `docs`目录:包含Kissy的文档,包括API参考、教程和示例,便于...

    Kissy 15天学会.zip

    【Kissy框架详解】 Kissy 是一个轻量级的JavaScript库,专为前端开发者设计,旨在简化Web开发过程,提高代码质量和效率。这个名为“Kissy 15天学会.zip”的压缩包,很可能是为了帮助初学者在15天内快速掌握Kissy...

    kissy-mobile:KISSY Mobile 是阿里巴巴内部项目Kissy MINI fork出来的项目。是面向移动终端的KISSYApp.svelte版,在保持API和KISSY一致的情况下,着重优化、精简核心模块代码,保证高可用的同时做到身材苗条

    kissy-mobile KISSY Mobile 是阿里巴巴内部项目Kissy MINI fork出来的项目。是面向移动终端的KISSYApp.svelte版,在保持API和KISSY一致的情况下,着重优化、精简核心模块代码,保证高可用的同时做到身材苗条。Kissy ...

    Kissy学习教程

    Kissy 是一个轻量级的前端JavaScript库,它旨在简化Web开发,提高代码效率和可维护性。这个“Kissy学习教程”压缩包文件包含了深入理解并掌握Kissy的资源,帮助开发者快速上手和应用Kissy到实际项目中。 在学习...

Global site tag (gtag.js) - Google Analytics