帮酷LOGO
  • 显示原文与译文双语对照的内容
OpenResty/Lua template framework implementing Perl's TT2 templating language

  • 源代码名称:jemplate
  • 源代码网址:http://www.github.com/ingydotnet/jemplate
  • jemplate源代码文档
  • jemplate源代码下载
  • Git URL:
    git://www.github.com/ingydotnet/jemplate.git
  • Git Clone代码到本地:
    git clone http://www.github.com/ingydotnet/jemplate
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/ingydotnet/jemplate
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 概要
    var data = Ajax.get('url/data.json');
    var elem = document.getElementById('some-div');
    elem.innerHTML = Jemplate.process('my-template.html', data);

    或者:

    var data = Ajax.get('url/data.json');
    var elem = document.getElementById('some-div');
    Jemplate.process('my-template.html', data, elem);

    或者:

    Jemplate.process('my-template.html', 'url/data.json', '#some-div');

    或者,使用 jQuery.js:

    jQuery.getJSON("url/data.json", function(data) {
     Jemplate.process('my-template.html', data, '#some-div');
    });

    从命令行:

    jemplate --runtime --compile path/to/jemplate/directory/> jemplate.js
    描述

    Jemplate是一个用于JavaScript的模板框架,它是通过perl工具包( TT2 )的模板构建的。

    Jemplate使用 TT2 Perl框架解析TT2模板,但是有一个扭曲。 它将这些模板编译成 JavaScript,而不是编译成Perl代码。

    然后Jemplate提供了一个JavaScript运行时模块来处理模板代码。 很快,我们有了完整的JavaScript模板语言 !

    结合JSON和 xmlHttpRequest,Jemplate提供了一种非常简单和强大的方法来完成。

    Jemplate带有 命令行 工具调用 jemplate,用于将模板预编译为JavaScript文件。 例如如果你有一个名为 templates的模板目录,其中包含:

    > ls templates/
    body.html
    footer.html
    header.html

    你可以运行以下命令:

    > jemplate --compile template/*> js/jemplates.js

    这将把所有的模板编译成一个JavaScript文件。

    你还需要生成Jemplate运行时。

    > jemplate --runtime> js/Jemplate.js

    现在你需要做的就是在你的HTML中包含这两个文件:

    <script src="js/Jemplate.js" type="text/javascript"></script>
    <script src="js/jemplates.js" type="text/javascript"></script>

    现在你在HTML文档中对这些模板有Jemplate支持。

    public API

    Jemplate.js 运行时模块具有以下API方法:

    • Jemplate.process(template-name, data, target) ;

      template-name 是像 'body.html' 一样的字符串,它是你要处理的顶级模板的名称。

      可选 data 指定模板要使用的数据对象。 它可以是一个对象,一个函数或者一个 url 。 如果它是一个对象,它直接使用。 如果它是函数,则调用函数,并使用返回的对象。 如果是 url,则执行异步 <Ajax.get> 。 结果被认为是一个JSON字符串,它被转换成一个对象。

      可选的target 可以是HTMLElement引用,函数或者以 # 字符开头的字符串。 如果省略了目标,则返回模板结果。 如果它是函数,则使用结果调用函数。 如果是字符串,则字符串用作标识以查找 HTMLElement 。

      如果使用 HTMLElement,则innerHTML属性将设置为模板进程结果。

    尽管你不需要直接使用 Jemplate.pm Perl模块,但它具有以下 public 类方法。 通常,你只需使用 jemplate 命令行 工具。

    • Jemplate-> compile_template_files ( @template_file_paths ) ;

      获取模板文件路径的列表并将它们编译为函数的模块。 返回模块的文本。

    • Jemplate-> compile_template_content ( $content,$template_name);

      编译一个内容在内存中的模板。 你必须提供唯一的模板名称。 返回编译的JavaScript文本结果。

    • Jemplate-> compile_module ( $module_path,@template_file_paths);

      类似于 `compile_template_files`,但打印到 $module_path.的结果 如果成功,返回 1,如果错误则返回 undef 。

    • Jemplate-> compile_module_cached ( $module_path,@template_file_paths);

      类似于 `compile_module`,但仅在模板之一比模块新的情况下编译。 如果成功编译,则返回 1,如果由于缓存而没有编译,则返回 0,如果错误,则返回 undef 。

    AJAX和JSON方法

    Jemplate提供内置的Ajax和JSON支持。

    • Ajax.get(url, [callback] ) ;

      对url执行get操作。

      如果提供回调,则操作异步,并将数据传递给回调。 否则,操作是同步的,并且返回数据。

    • Ajax.post(url, data, [callback] ) ;

      对url执行POST操作。

      get 应用的回调规则相同。

    • JSON.stringify(object) ;

      返回对象的JSON序列化。

    • JSON.parse(jsonString) ;

      将JSON字符串转换为对象并返回对象。

    内置电流支持

    Jemplate的目标是支持所有可能支持的模板工具包特性。

    Jemplate现在几乎支持所有TT指令,包括:

    * Plain text
    * [% [GET] variable %]
    * [% CALL variable %]
    * [% [SET] variable = value %]
    * [% DEFAULT variable = value.. . %]
    * [% INCLUDE [arguments] %]
    * [% PROCESS [arguments] %]
    * [% BLOCK name %]
    * [% FILTER filter %] text... [% END %]
    * [% JAVASCRIPT %] code... [% END %]
    * [% WRAPPER template [variable = value.. .] %]
    * [% IF condition %]
    * [% ELSIF condition %]
    * [% ELSE %]
    * [% SWITCH variable %]
    * [% CASE [{value|DEFAULT}] %]
    * [% FOR x = y %]
    * [% WHILE expression %]
    * [% RETURN %]
    * [% THROW type message %]
    * [% STOP %]
    * [% NEXT %]
    * [% LAST %]
    * [% CLEAR %]
    * [%# this is a comment %]
    * [% MACRO name(param1, param2) BLOCK %].. . [% END %] 

    支持所有字符串虚函数。

    支持所有 array 虚函数:

    支持所有哈希虚函数:

    许多标准过滤器都实现了。

    其余的功能将很快添加。 查看发行版中的设计文档以获得所有特性及其进展的列表。

    浏览器支持

    测试成功:

    * Firefox Mac/Win32/Linux
    * IE 6.0
    * Safari
    * Opera
    * Konqueror

    所有测试在 above 浏览器中运行 100%成功。

    插件开发

    出血边缘代码可以通过 git://github.com/ingydotnet/jemplate.git 处的Git获得

    可以直接从 http://svn.jemplate.net/repo/trunk/tests/run/index.html 或者从相应的CPAN或者JSAN目录运行运行时测试。

    Jemplate开发正在 irc://irc.freenode.net/#jemplate 中讨论

    如果你想要一位提交者,只需在irc频道上询问 ingy 。

    信用

    这个模块是可能的,因为Andy强大的wardley模板工具包。 谢谢 Andy,我会很乐意给你我收到的任何啤酒的一半。 ( 只要你在我喝的时候在同一房间;)

    作者

    ( 注:我必须先列出自己,这样这一行才会进入 META.yml )

    Jemplate是一个真正的社区项目:

    Tatsuhiko Miyagawa miyagawa@bulknews.net

    Yann Kerherve yannk@cpan.org

    David Davis xantus@xantus.org

    coryb@corybennett.org

    Cees Hek ceeshek@gmail.com

    Christian Hansen

    大卫。A 。

    Robert Krimen robertkrimen@gmail.com 。

    Nickolay Platonov nickolay8@gmail.com




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语