鑰匙要點
>
它簡化了手動更新視圖上的數據的任務>用於流行框架和平台,例如
我希望此簡短回顧可以幫助您確定是否值得使用車把。
如上圖所示,車把工程的方式可以匯總如下:
模板可以寫在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中文網其他相關文章!