钥匙要点
>
它简化了手动更新视图上的数据的任务>用于流行框架和平台,例如
我希望此简短回顾可以帮助您确定是否值得使用车把。
如上图所示,车把工程的方式可以汇总如下:
模板可以写在HTML文件中或单独写入。在第一种情况下,它们出现在<script>标签中,带有type =“ text/x handlebars-template”属性和ID。变量用双卷发括号{{}}写成,称为表达式。这是一个示例:</script>
>使用此标记,我们可以看到我们必须做的事情。在您的JavaScript文件中,我们首先需要从HTML文档检索模板。在下面的示例中,我们将将模板的ID用于此目的。检索模板后,我们可以使用返回函数的handlebars.compile()方法对其进行编译。然后通过将上下文作为参数执行此功能。执行完成后,该函数将返回所需的HTML,所有变量被其相应值替换。此时,我们可以将HTML注入我们的网页。
将此描述变成代码会导致以下片段:
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
可以在此Codepen演示中找到此代码的实时演示
语法
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
>
表达式>车把可以逃避表达式返回的值。例如,字符
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html(); </span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template); </span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" }; </span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context); </span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
>
<span>My name is {{name}}</span>
>可以在此Codepen演示中找到显示此功能的现场演示
>我们还可以在车把模板中编写评论。车把注释的语法为{{!typeYourCommentHere}}。但是,在其中或任何其他在车把中具有特殊含义的符号的评论应以{{! - typeYourCommentHere--}}形式编写。 HTML中的车把注释不可见,但是如果您想显示它们,则可以使用标准HTML注释:。
如果我们将所有这些概念应用于所使用的模板,我们可以提出下面显示的代码:
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
HTML输出将为:
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
将导致浏览器未显示标准HTML注释中的内容。可以在此处找到此示例的演示。
><span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html(); </span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template); </span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" }; </span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context); </span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
在车把中,块是具有块开口({{#}})和关闭({{/}})的表达式。稍后,我们将在重点关注助手的同时深入研究此主题。目前,看看如何写块:
路径
<span>My name is {{name}}</span>
在此示例中,我们将使用以下模板:
>通过提供此上下文变量:
>
I am learning {{language}}. It is {{{adjective}}}.
我们将获得以下所示的输出:
<span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
就像我们到目前为止创建的其他小摘要一样,此示例可以在Codepen
上使用
帮助者I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
>即使车把是无逻辑的模板引擎,它也可以使用助手执行简单的逻辑。车把辅助器是一个简单的标识符,可能随后是参数(被空间隔开),如下所示:
每个参数是一个车把表达式。可以从模板中的任何上下文中访问这些帮助者。
>术语“块”,“助手”和“阻止助手”有时会互换使用,因为大多数内置的助手是块,尽管有功能助手与块助手有些不同。我们将在涵盖自定义帮助者的同时讨论它们。
<span><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}</span>
>每个助手都用来在数组上迭代。助手的语法为{{#each arrayName}} yourcontent {{/erther}}。我们可以通过在块内使用关键字来参考单个数组项。可以使用{{@index}}呈现数组元素的索引。下面的示例说明了每个辅助器的使用。
如果我们采用以下模板:
><span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
>
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
然后输出将是:
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html(); </span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template); </span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" }; </span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context); </span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
可以在codepen上找到此示例的实时演示。
>if助手类似于if语句。如果条件评估为真实的值,则车把将渲染块。我们还可以通过使用{{else}}来指定称为“ else section”的模板部分。除非帮手是IF助手的倒数。当条件评估为falsyvalue时,它会渲染块。
显示IF助手的工作原理,让我们考虑以下模板:如果我们提供以下上下文变量:
<span>My name is {{name}}</span>
我们将获取以下报告的结果:
>I am learning {{language}}. It is {{{adjective}}}.
这是因为一个空数组是
<span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
value。 如果您想和助手一起玩,可以查看我在Codepen上创建的实时演示。
>自定义帮助者>您可以使用车把提供的表达系统创建自己的助手来执行复杂的逻辑。有两种助手:功能助手和阻挡助手。第一个定义是用于单个表达式的,而后者则用于块表达式。回调函数提供的参数是助手名称后写的参数,被空间隔开。使用handlebars.registerhelper()方法创建了助手
自定义功能助手
函数助手的语法为{{helperName parameter1 parameter2 ...}}。为了更好地了解如何进行实施,让我们创建一个称为studystatus的函数助手,该功能返回一个字符串,如果传球 = 2015:
I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
在我们的示例中,参数只是一个。但是,如果我们想将更多参数传递到助手的回调函数,则可以在第一个参数被空间分开之后将它们写入模板中。
让我们使用此模板开发一个示例:
<span><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}</span>
和以下上下文变量:
>
<span>var context = {"language" : "Handlebars","adjective": "awesome"}</span>
在这种情况下,输出将为:
<span><!-- I am learning Handlebars -->I am learning Handlebars. It is</span>
这个示例的实时演示可在此处提供。
自定义块助手>自定义块助手的使用方式与功能助手相同,但是语法有些不同。助手的语法是:
{{#if boolean}}Some Content here{{/if}}
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
>当我们注册自定义块助手时,车把会自动将选项对象作为最后一个参数添加到回调函数中。此选项对象具有FN()方法,该方法允许我们临时更改对象的上下文以访问某个属性。让我们通过使用名为studystatus的块助手来更改上一节的示例,但具有相同的上下文变量:
:<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
如果此代码与下面定义的模板一起使用
><span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html(); </span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template); </span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" }; </span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context); </span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
我们将获得以下结果:
<span>My name is {{name}}</span>
这是Codepen演示。
>车把部分是可以在不同模板之间共享的模板。它们写为{{> partialName}}。在HTML中使用它们之前,我们需要使用handlebars.registerpartial()方法注册部分。以下示例将帮助您了解如何注册一个名为partialtemplate的部分:
I am learning {{language}}. It is {{{adjective}}}.
>
<span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
>预编译
如我们所见,车把要做的第一件事是将模板编译到函数中。这是在客户上执行的最昂贵的操作之一。如果我们预先编译模板cript,然后将编译版本发送给客户端,我们可以提高应用程序的性能。在这种情况下,在客户端上需要执行的唯一任务是执行该功能。由于预编译的文件是脚本,因此我们可以将脚本加载为HTML作为普通文件。让我们看看如何完成所有这些事情。现在,我们可以使用以下代码来使用最初在demo.handlebars中存在的模板:>
最终输出将是以下内容:>
// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
// Insert the HTML code into the page$(document.body).append(html);
此方法将显着提高应用程序的性能,并且随着我们使用比整个库更轻的车把的运行时构建,页面加载时间也会减少。。
该整个预编译演示的代码可在GitHub上获得。
结论
在本文中,我们讨论了车把的基本概念。我们还检查了其经常使用的功能和语法。希望您喜欢本教程,您将使用其中包含的演示来掌握此主题。我期待着阅读您的评论。
如果您不想下载图书馆,但您仍然想尝试一下,可以在http://tryhandlebarsjs.com/。
关于车把的常见问题
>什么是用于?
handlebars.js的handlebars.js是Web开发中用于创建动态Web页面并基于数据生成HTML内容的JavaScript模板库。它可以使用占位符(车把)来创建可重复使用的模板以插入数据。该库有助于双向数据绑定,从而允许模板在数据更改时自动更新。开发人员通常使用hannelbars.js进行客户端渲染,条件逻辑和数据迭代。它促进了HTML结构和数据之间关注点的分离,使其成为构建交互式和数据驱动的Web应用程序的有价值工具,同时增强代码可维护性和安全性。 为什么要使用车把代替HTML? >车把通常与HTML结合使用,而不是用作替换。与HTML结合使用时,它提供了几个优势,包括动态数据绑定,代码可重复性,在显示和数据之间明确分离关注点,客户端渲染,内容生成的一致性,通过代码分离增强安全性以及对本地化的支持。这些好处共同使车把成为构建动态和可维护的Web应用程序的宝贵工具,同时仍依靠HTML来定义网页的基本结构。 ,车把没有被弃用,它仍然是Web开发中可行的javaScript模板库。什么是车把模板?
>车把模板是基于文本的结构,它定义了Web开发中动态HTML内容的布局和结构。车把是一个JavaScript模板库,允许您创建这些模板,从而使基于数据的HTML内容更加容易。
在车把模板中,您可以包括代表动态数据的占位符,称为“车把”。这些车把封闭在双卷发括号{{}}中。例如:
你好,{{name}}!
在此简单的把手模板中,{{name}}是一个可变的占位符,称为“名称” 。”当您使用特定数据(例如{name:“ john”})渲染此模板时,用相应的数据值替换{{name}}的车把:
您好,John!
车把模板对于创建一致且可维护的HTML内容特别有用,因为它们将演示文稿(HTML结构)与数据分开,从而更容易更新和重复使用在您的Web应用程序上进行的模板。
哪个更好:车把或胡须模板?
<>>
<🎜> <> <> <>>车把和小胡子之间的选择取决于您项目的要求和优先级。车把提供了更高级的功能,使其适合于更大的生态系统和社区支持很重要的复杂模板需求和项目。另一方面,胡子更简单,遵循“无逻辑”理念,使其成为优先使用多种编程语言简单性和便携性的项目的理想选择。
以上是一个初学者的手柄指南的详细内容。更多信息请关注PHP中文网其他相关文章!