网络编程
位置:首页>> 网络编程>> JavaScript>> jQuery模板提案

jQuery模板提案

作者:dishuipiaoxiang 来源:Denis'Blog 发布时间:2010-03-30 18:27:00 

标签:jquery,模板,Javascript,对象

导言(Introduction)

这个提案描述了如何在jQuery的核心库中增加模板支持。更为特别是,这个提案描述了一个新的jQuery方法--名叫render(),该方法可以使你用一段HTML代码渲染一个Javascript 对象和Javascript数组作为一个模板。

该提案的目的在于使插件开发者可以利用标准的方法声明和渲染模板。有一个标准的方法声明和渲染模板对每一个人都很有裨益:

  • 插件开发者可以构建丰富的、数据驱动的插件,如DataGrid插件。插件开发者可以在jQuery的核心库对模板支持的基础上构建插件,这样每一次开发新的插件时,可以避免重新实施渲染模板代码。

  • 插件用户可以利用一个标准的语法声明模板。插件用户每次创建模板时不需学习一种新的方法,每次都是从使用新的插件开始。

该提案分两个主要部分。第一部分包含现有模板解决方案简要调查,第二部分是我们的建议,声明和渲染一个模板的方法如何添加到jQuery的核心库中。

现有的模板解决方案

现在已经有了许多JavaScript的解决方案模板,从这方面说,标准化的模板解决方案必然是大势所趋。在本节中,我们向你简要描述四个最流行最有趣的模板。现有的模板解决方案能解决什么?那些特色在jQuery核心中有意义。

微模板

John Resig的微型模板引擎非常小(未压缩仅2KB)。然而,这点小小的代码已经抓到了渲染一个模板的核心功能。

下面是一个用微模板引擎显示单个JavaScript产品对象的例子。

<script src="../jquery-1.4.1.js" type="text/javascript">>;/script>;
<script src="MicroTemplating.js" type="text/javascript">;</script>;
<script type="text/javascript">;
    var product = { name: "Laptop", price: 788.67 };
    $(showProduct);
    function showProduct() {
        $("#results").html( tmpl("productTemplate", product) );
    }
    function formatPrice(price) {
        return "$" + price;
    }
</script>;

tmpl()方法用来从一个product模板和product对象生成一个字符串。其结果分配给一个名叫results的div元素的innerHTML。

product模板在页面body的SCRIPT中定义。

<script type="text/html" id="productTemplate">
    Product Name: <%= name %>
    <br />
    Product Price: <%= formatPrice(price) %>
</script>
<div id="results"></div>

注意,SCRIPT的type属性为“text/ html”。用这种方式来声明web浏览器会忽略SCRIPT里的内容,将其内容当作字符串来对待。

注意,模板包含代表产品名称和价格属性的表达式。调用JavaScript的formatPrice()方法来格式化产品的价格。在模板里你可以调用任何JavaScript函数。

这里是如何渲染一个product对象数组的示例:

function showProducts() {
    // parse the template
    var template = tmpl("productTemplate");
    // loop through the products
    var results = '';
    for (var i = 0; i < products.length; i++) {
        results += template(products[i]);
    }
    // show the results
    $("#results").html(results);
}

tmpl()函数支持currying(关于什么currying,可以在网上查阅资料)。如果没有提供数据给tmpl()函数,他将返回一个javascript函数,代表解析的模板。

在上面的代码中,模板被解析,然后为每一个product调用模板方法生成一个字符串。最后,字符串分配给名叫results的div元素的innerHTML。

0
投稿

猜你喜欢

  • 最近重新温习了一次《javascript设计模式》,确实是一本好书,每次看都有不同的领悟,每次领悟到的都受益匪浅,无怪古圣人都说学无止镜了,
  • 半透明效果有时候会给页面增加不少色彩,特别是Vista盛行之后,半透明效果更加受推崇。在诸多可用于Web浏览的图片格式中,只有PNG格式和G
  • 问题:导入数据时是否需要禁用索引?解答:在使用load data导入数据时,如果导入的表是MyISAM的,对于空表,MySQL数据库会把所有
  • 本期薯片会的目的是讨论人物角色在设计中如何应用的问题。围绕了以下几个问题开展了讨论:1、  角色能干什么?2、  包含哪
  • 问:如何给导入文件加上时间戳标记?答:请参考下文中介绍的两种方法:1.在DOS下从系统获得时间戳利用Dos命令取得时间戳:C:\>ec
  •     Dreamweaver出现乱码,大致为两种情况:一是没有标明主页制作所用的文字,这种情况下很简单就可以
  • Oracle客户端NLS_LANG设置 OracleWindowsMicrosoftUnixBash 1. NLS_LANG 参数组成 NL
  • 代码如下:<% '=================================================
  • 代码如下:USE [tempdb] GO /****** Object: UserDefinedFunction [dbo].[fun_ge
  • 我们公司网站的项目都是采用utf-8编码格式的,一天,发现部分电脑打开网站的一个页面是空白页,要在IE下重新选择编码才显示正常。我们网站的编
  • CSS文件的链接方式·附加链接:外部CSS文件·导入CSS:常用应用多个CSS文件时,将多个CSS导入一个CSS文件中CSS规则定义有三种:
  • 一直一来,我都在想办法看能不能用 col 控制表格的列隐藏,但是无奈,FF对COL支持不够好(其实是以前没有发现COL在FF下要怎么弄)。今
  • 前不久有个正要毕业的网友给我发邮件,他毕业设计需要实现锁屏的效果,但是他没有能看懂我之前发布的对话框源码,他问能不能把锁屏相关代码说明下,我
  • 定义总是很抽象。存储进程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL SERVER)。如果我们
  • 随机显示图片代码:<div class="sidebarcen"><script language=&
  • 随着CSS 框架的流行升温不断,前端er们也越来越关注CSS框架的使用,国内也有很多关于各种CSS框架的使用技巧和教程,彬Go一直关注着各种
  • 利用 CSS 框架,可以简化你的工作,提高工作效率。CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版、网格布局、表
  • 要将身份证的正反面图片合并为一张图片,你可以使用PHP的GD库来完成。演示了如何合并两张图片下面是一个示例代码,演示了如何合并两张图片://
  • jquery有一个插件叫Timer,很有意思,咱来实现一个简版的yui3的node timer。但还是应当首先交代下yui3的node扩展的
  • 在网上找到的随机不重复查询代码:select top 15 * from article&
手机版 网络编程 asp之家 www.aspxhome.com