一個初學者的手柄指南
鑰匙要點
車把是一種無邏輯的模板引擎,可擴展鬍鬚,通過助手增加最小的邏輯,使其非常適合將HTML結構與業務邏輯分開並增強應用程序可維護性。 在車把中的模板創建涉及使用雙捲髮括號`{{{}}`對於變量,可以預先編譯以提高性能並減少客戶端處理。
- >
- 車把支持自定義幫助者,使開發人員能夠在模板中實現複雜的邏輯,從而超出了簡單數據綁定的靈活性。 車把中的部分模板有助於跨應用程序的不同部分的代碼重複使用,簡化了開發過程並保持一致性。 車把模板的預編碼可以通過最大程度地減少客戶端的運行時編譯開銷來顯著提高Web應用程序的性能。
- >車把:它是什麼以及為什麼使用它
- >車把是一種動態生成HTML頁面的無邏輯模板引擎。這是鬍鬚的擴展,並具有一些其他功能。小鬍子完全沒有邏輯,但是由於使用了一些幫助者(例如,否則,除非,除非,除非,除非,除非,否則我們將在本文中進行進一步討論,卻增加了最小的邏輯。實際上,我們可以說車把是鬍子的超集。
- >如果您要問為什麼要使用此模板引擎而不是另一個引擎,則應查看其優點。這是一個簡短列表:
>它可以使您的HTML頁面保持清潔,並將無邏輯模板與JavaScript文件中的業務邏輯分開,從而改善了應用程序的結構(以及其可維護性和可擴展性)
>
它簡化了手動更新視圖上的數據的任務>用於流行框架和平台,例如
我希望此簡短回顧可以幫助您確定是否值得使用車把。
如何工作?
>
如上圖所示,車把工程的方式可以匯總如下:
- >車把採用一個帶有變量的模板,並將其編譯為函數 > 然後,通過將JSON對像作為參數傳遞來執行此功能。該JSON對象稱為上下文,它包含模板中使用的變量的值。 在執行時,該函數返回所需的HTML,替換了模板的變量,其相應的值
- 要了解上述過程,讓我們從詳細說明上述所有步驟的演示開始。
- 。 >模板
模板可以寫在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>
>
表達式>我們已經在上面的部分中看到了表達式。模板內使用的變量被雙捲髮括號{{}}包圍,被稱為表達式:
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>
>可以在此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作為普通文件。讓我們看看如何完成所有這些事情。>
>首先,您必須使用NPM安裝車把-g在全球安裝車把。請確保將不同的模板寫在帶有不同文件名和.handlebars擴展名的單獨文件中(例如demo.handlebars)。無需在這些文件中使用<script>標籤。 <p> <p> <p>現在,將所有模板文件存儲在名為模板的單個文件夾中。您可以使用所需的任何文件夾名稱,但是如果這樣做,請不要忘記相應地更改以下命令。因此,打開終端並執行命令: <pre ><span ><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}<p> <p>此命令將生成一個名為templatesCompiled.js的文件,其中包含所有編譯模板。編譯器將將模板插入車把。如果輸入文件是demo.handlebars,則將插入handlybars.templates.demo> <pre ><span >var context = {"language" : "Handlebars","adjective": "awesome"}>現在,我們必須將templatesCompiled.js在HTML文件中作為一個普通腳本中。重要的是要注意,我們不需要加載整個車把庫,因為不再需要編譯器本身。我們可以改用較小的“運行時”構建:<p>> <p><pre ><span ><span ><span ><script src<span >="/path/to/handlebars.min.js"><span ><span ></script>現在,我們可以使用以下代碼來使用最初在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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
