Javascript模板系统 - PURE,EJS,jquery插件?

时间:2009-12-08 20:48:14

标签: javascript jquery templates

有人使用过javascript模板系统吗?我曾经使用嵌入了JavascriptMVC的那个,但我现在正在进行服务器端开发,所以我想要一个更简化/更薄的版本..

我发现2. 1是EJS,这是JavascriptMVC中包含的部分

http://embeddedjs.com/

另一个是Pure-你可以使用jquery

http://beebole.com/pure/index.html

有没有人有任何经验,或者还有其他我找不到的东西?也许是一个jquery类型的插件或什么..

基本上我需要在runtine的javascript中替换部分HTML文档而不需要调用服务器。

但我的html替换代码需要保存在外部文件中,而不是嵌入在js

任何帮助真的很感激

感谢

12 个答案:

答案 0 :(得分:2)

HAML咖啡。
结合两种最好的元语言。

https://github.com/9elements/haml-coffee

答案 1 :(得分:1)

嘿,我用了一两次,这很简单。这是来自编写jquery的人。

http://ejohn.org/blog/javascript-micro-templating/

答案 2 :(得分:1)

这是在jQuery中为Smarty模板语言实现的。 http://www.balupton.com/sandbox/jquery-smarty/demo/

一个令人印象深刻的功能是支持动态更新。因此,如果更新模板变量,它将更新模板中使用该变量的任何位置。非常漂亮。

您还可以使用onchange事件挂钩变量。因此,当变量“page”改变时,执行效果或AJAX会很有用; - )

答案 3 :(得分:1)

如果您有任何机会使用jQuery框架,我可以向您推荐一个名为jQote的插件。有些人拿走了John Resig的引擎并将其打包成一个插件,这样就可以轻松地进行javascript模板操作。

http://aefxx.com/jquery-plugins/jqote

干杯!

答案 4 :(得分:1)

答案 5 :(得分:0)

Prototype Template快速而简单,如果原型是一个选项。如果你真的需要一个jQuery插件,我写了一个port of it(无耻的插件)。

答案 6 :(得分:0)

我广泛使用了EJS。来自Rails背景,它完全符合我的需求,因为它与ERB非常相似。

我推荐它。它正在积极维护,开发人员反应迅速。此外,在我运行的基准测试中,它的速度非常快。我正在将它用于iPhone / Android的移动网站。

对于其他一些人,请查看此博文:http://www.viget.com/extend/benchmarking-javascript-templating-libraries/

答案 7 :(得分:0)

这是一个独立的,定制的解决方案,我写的非常小,模仿Prototype的template system

var templater = function(template, tokens, tokenIdentifier) {
    tokenIdentifier = tokenIdentifier || "$";
    // Decode HTML encoded template tokens %7B -> {, %7D -> }
    template = template.replace(
        new RegExp("\\" + tokenIdentifier + "%7B(\\w+)%7D", "gi"), 
        tokenIdentifier + "{$1}"
    );

    for ( var i in tokens ) {
        if ( tokens.hasOwnProperty(i) ) {
            template = template.replace(
                new RegExp("\\"+tokenIdentifier+"\\{"+i+"\\}", "g"),
                tokens[i]
            );
        }
    }

    return template;
};

用法:

templater("Hi, my name is ${name}", {name: "Bobo the Clown"});
// The token identifier defaults to $, but can be changed arbitrarily
templater("#{title} #{surname} #{verb} #{noun}", {title: "Dr.", surname: "Amazing", verb: "packed", noun: "sand"}, "#");

输出:

Hi, my name is Bobo the Clown
Dr. Amazing packed sand

答案 8 :(得分:0)

我同意Jage。

http://ejohn.org/blog/javascript-micro-templating/非常简单,实施起来很快。你不需要做大量的工作就可以获得好的结果。

答案 9 :(得分:0)

看看hacktl.js http://code.google.com/p/hacktl/。轻巧简单

答案 10 :(得分:0)

到目前为止,{p> Mustache.js对我来说效果很好。它也适用于许多服务器端语言(Ruby,Python,Clojure等),因此您可以在多个上下文中使用它。

答案 11 :(得分:-1)

如果您使用Script#,可能需要考虑SharpTemplate,这是一种强类型,超高效的HTML模板引擎。