jquery templates - 模板化HTML页面

时间:2011-06-20 23:45:02

标签: jquery templates

我正在编写一个使用jquery模板生成HTML页面的工具,但它不喜欢某些标签(DOCTYPE,html,head)。是否可以模拟这样的事情:

<script id="HtmlPageTemplate" type="text/x-jquery-tmpl">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
       <title>${PageTitle}</title>
       <link rel="stylesheet" href="styles/style.css" type="text/css" media="all" />
       <script src="scripts/script.js">{{html "</sc"+"ript>"}}
       <script>
           function MyFunction(){
           }
       {{html "</sc"+"ript>"}}
    </head>
    <body>
        {{tmpl "#PageBody"}}
    </body>
    </html>
</script>

我正在使用{{html“&lt; / sc”+“ript&gt;”}}关闭脚本代码而不关闭模板脚本代码。

1 个答案:

答案 0 :(得分:0)

我认为这对你有用:

基本思路是 - 替换'&lt;'所有带有特殊标记的敏感标签,例如'@#' 并将@#替换为'&lt;'。使用$ .template()编译模板。最后,渲染。

<script id="HtmlPageTemplate" type="text/x-jquery-tmpl">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
       <title>${PageTitle}</title>
       <link rel="stylesheet" href="styles/style.css" type="text/css" media="all" />
       @#script src="scripts/script.js">@#/script>
       @#script>
                alert('here');
       @#/script>
    </head>
    <body>
        {{tmpl "#PageBody"}}
    </body>
    </html>
</script>
<div id="output"></div>

使用

替换模板
$.template('test', $('#HtmlPageTemplate').html().split('@#').join('<'));
$.tmpl('test', data).appendTo($("#output"));