本文由克里斯·佩里(Chris Perry)和里特什·库马尔(Ritesh Kumar)进行了同行评审。感谢SitePoint所有的同行评审员制作SitePoint内容的最佳状态!
在本文中,我们将在JavaScript中概述模板。我们将首先讨论什么是JavaScript模板,何时应该使用它们以及如何实施它们,然后再详细介绍一些流行的模板引擎。我们将专注于胡子,车把和jQuery模板。
JavaScript模板
>提供了一种将HTML结构与内容分开的方法,从而提高了代码库的可维护性。它们对实时Web应用程序和国际化特别有益,通常需要使用相同格式显示不同的内容。>
一些可以从JavaScript模板中受益的常见场景是实时的Web应用程序(例如,用于事件注释的实时流式应用程序)或国际化(I18N),通常要求使用相同格式显示不同的内容。 。我们如何实现JavaScript模板?
> Mustache.js
>关键点
9kb文件尺寸(小)
<span><span><span><script</span> id<span>="template"</span> type<span>="x-tmpl-mustache"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span> </span>需要两个参数:胡子模板以及包含呈现模板所需的数据和代码的视图对象。在这种情况下,我们将用简单的字符串替换名称和功率变量,但是可以做更多的事情。例如,在数组上循环,或使用使用当前视图作为视图参数的特殊渲染函数。
//Grab the inline template var template = document.getElementById('template').innerHTML; //Parse it (optional, only necessary if template is to be used again) Mustache.parse(template); //Render the data into the template var rendered = Mustache.render(template, {name: "Luke", power: "force"}); //Overwrite the contents of #target with the rendered HTML document.getElementById('target').innerHTML = rendered;
> Mustache.js非常适合最少模板复杂性的小型项目和快速原型。要注意的一个关键是,我们可以用Mustache.js开始一个项目,然后轻松地升级到handlebars.js,因为模板(主要)相同。
如果您想阅读更多有关小胡子的信息,请查看:使用Mustache.js。创建HTML模板
handlebars.js建立在胡子顶部,大多与胡须模板兼容。简而言之,它提供了所有Mustache.js提供的所有内容,并支持块表达式和预编译模板。预编译的模板是一件大事,因为它们的性能提高了大幅度(在粗略的性能测试中,预编译了handlebars.js模板在大约一半的胡须模板时呈现)。块表达式使您可以在模板中包含更多逻辑;这些最常见的例子之一是高级迭代器,例如。创建一个
<span><span><span><script</span> id<span>="template"</span> type<span>="x-tmpl-mustache"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span> </span>
//Grab the inline template var template = document.getElementById('template').innerHTML; //Parse it (optional, only necessary if template is to be used again) Mustache.parse(template); //Render the data into the template var rendered = Mustache.render(template, {name: "Luke", power: "force"}); //Overwrite the contents of #target with the rendered HTML document.getElementById('target').innerHTML = rendered;>请参见codepen上的sitepoint(@sitepoint)的笔式示例
> handlebars.js非常适合性能很重要的项目,我们并不担心在页面的重量中添加18kb。如果我们想利用块表达式,这也是一个路要走。
>>请注意,要查看handlebars.js的性能优势(以及大大减少的文件大小),我们必须使用预编译模板。为了有效地这样做,我们应该在我们的构建过程中添加handlebars.js模板汇编(Grunt对此具有很好的插件)。
>如果您想了解有关车把的更多信息,请查看:
的初学者指南。> jQuery模板
>关键点
<span><span><span><script</span> id<span>="template"</span> type<span>="text/x-handlebars-template"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span></span>请参阅codepen上的sitepoint(@sitepoint)的笔jQuery模板示例。
//Grab the inline template var template = document.getElementById('template').innerHTML; //Compile the template var compiled_template = Handlebars.compile(template); //Render the data into the template var rendered = compiled_template({name: "Luke", power: "force"}); //Overwrite the contents of #target with the renderer HTML document.getElementById('target').innerHTML = rendered;
jQuery模板非常适合已经包括jQuery的项目,因为文件大小很小。但是,如果您的项目不使用jQuery,则很难考虑到总文件大小。
当然还有许多其他解决此问题的解决方案,我们将在本文中详细介绍。这是对其他一些流行选择的快速概述;
>嵌入式JS模板(EJS)
那么哪个是最好的?像大多数开发问题一样,没有银弹。这取决于许多事情;
您已经在项目中使用了jQuery吗?
JavaScript模板引擎之间的关键差异是什么?
我可以在一个项目中使用多个JavaScript模板引擎吗?
JavaScript中的功能可以更轻松地插值和多行字符串。尽管它们可用于生成HTML,但它们缺乏模板引擎提供的许多功能,例如支持可重复使用的组件和关注点的分离。但是,它们对于不需要成熟的模板引擎的简单用例可能很有用。
> JavaScript模板引擎之间是否存在性能差异? 。一些发动机在编译模板方面更快,而另一些引擎则在渲染方面表现出色。但是,对于大多数Web应用程序,这些差异不太可能对性能产生明显的影响。
我如何通过JavaScript模板引擎来调试问题?
在模板开发中最常用时,它们也可以在其他情况下使用。例如,它们可用于生成电子邮件,PDF或任何其他基于文本的内容。模板引擎的关键优点是它们可以将数据与演示分开的能力,这在广泛的应用程序中很有用。
以上是JavaScript模板引擎的概述的详细内容。更多信息请关注PHP中文网其他相关文章!