Vue.js 使用了基於 HTML 的模板語法,允許開發者宣告式地將 DOM 綁定至底層 Vue 實例的資料。所有 Vue.js 的範本都是合法的 HTML ,所以能被遵循規範的瀏覽器和 HTML 解析器解析。
在Vue中定義元件模板有很多選擇。在我看來,至少有七種不同的方式:
字串
#模板文字
#X-Templates
內聯
#渲染功能
-
JSX
單頁元件
在本文中,我們將逐一介紹每種方法的範例,並討論其優缺點,以便您了解在任何特定情況下使用哪種方法最好。
1、字串
預設情況下,範本將定義為JS檔案中的字串。我想我們都同意字串中的模板是非常難以理解的。除了廣泛的瀏覽器支援之外,這個方法沒有什麼特別之處。
Vue.component('my-checkbox', { template: `<div class="checkbox-wrapper" @click="check"> <div :class="{ checkbox: true, checked: checked }"> </div><div class="title">{{ title }}</div></div>`, data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } });
2、模板文字
#ES6模板字面量(“backticks”)允許您跨多行定義模板,這是在常規Javascript字串中無法做到的。雖然為了安全起見,您可能仍然應該轉換為ES5,但現在許多新瀏覽器都支援這些命令,並且更容易閱讀。
不過,這種方法並不完美;我發現大多數ide在語法高亮、製表符、換行等方面仍然讓您感到痛苦。
Vue.component('my-checkbox', { template: ` < div class = "checkbox-wrapper"@click = "check" > <div: class = "{ checkbox: true, checked: checked }" ></div> <div class="title">{{ title }}</div ></div>`, data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } });/
3、X-Templates
使用此方法,您的範本將在index.html檔案中的腳本標記中定義。腳本標記由文字/x-template標記,並由元件定義中的id引用。
我喜歡這種方法,它允許您用正確的HTML標記編寫HTML,但缺點是它將模板與元件定義的其餘部分分開。
Vue.component('my-checkbox', { template: '#checkbox-template', data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } });
<script type="text/x-template" id="checkbox-template"> <div class="checkbox-wrapper" @click="check"> <div :class="{ checkbox: true, checked: checked }"></div> <div class="title">{{ title }}</div> </div> </script>
4、內嵌模板
#透過將inline-template屬性,您可以向Vue表明內部內容是其模板,而不是將其視為分散式內容。
它的缺點與x-templates相同,但一個優點是內容在HTML範本中的正確位置,因此可以在頁面載入時呈現,而不是等到Javascript執行時。
Vue.component('my-checkbox', { data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } });
<my-checkbox inline-template> <div class="checkbox-wrapper" @click="check"> <div :class="{ checkbox: true, checked: checked }"></div> <div class="title">{{ title }}</div> </div> </my-checkbox>
5、渲染功能
呈現函數要求您將模板定義為Javascript物件。它們顯然是模板選項中最冗長和抽象的。
但是,這樣做的好處是模板更接近編譯器,並且允許您存取完整的Javascript功能,而不是指令提供的子集。
Vue.component('my-checkbox', { data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } }, render(createElement) { return createElement( 'div', { attrs: { 'class': 'checkbox-wrapper' }, on: { click: this.check } }, [ createElement( 'div', { 'class': { checkbox: true, checked: this.checked } } ), createElement( 'div', { attrs: { 'class': 'title' } }, [ this.title ] ) ] ); } });
6、JSX
Vue中最有爭議的範本選項是JSX。有些開發人員認為JSX醜陋、不直觀,是對Vue精神的背叛。
JSX要求您先轉換,因為瀏覽器無法讀取它。但是,如果需要使用呈現函數,JSX肯定是定義模板的一種不那麼抽象的方法。
Vue.component('my-checkbox', { data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } }, render() { return <div class="checkbox-wrapper" onClick={ this.check }> <div class={{ checkbox: true, checked: this.checked }}></div> <div class="title">{ this.title }</div> </div> } });
7、單一檔案元件
#只要您對在設定中使用建置工具感到滿意,單一檔案元件就是範本選項之王。它們帶來了兩方面的好處:允許您在編寫標記的同時將所有元件定義保存在一個檔案中。
它們需要換位,而且有些ide不支援這種檔案類型的語法高亮顯示,但在其他方面很難打敗它們。
<template> <div class="checkbox-wrapper" @click="check"> <div :class="{ checkbox: true, checked: checked }"></div> <div class="title">{{ title }}</div> </div> </template> <script> export default { data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } } </script>
您可能會爭辯說,有更多的模板定義的可能性,因為您可以使用模板預處理程序,例如Pug與SFCs!
哪個最好?
當然沒有一種完美的方式,每一種都應該根據你的用例來判斷。我認為最好的開發人員會意識到所有可能性,並將每個開發人員作為他們的Vue.js工具帶中的工具!
英文原文網址:https://vuejsdevelopers.com/2017/03/24/vue-js-component-templates/
相關推薦:
更多程式相關知識,請造訪:程式設計入門! !
以上是Vue.js中定義元件範本的幾種方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Vue.js和React的未來趨勢和預測分別是:1)Vue.js將在企業級應用中廣泛應用,並在服務端渲染和靜態站點生成方面有突破;2)React將在服務器組件和數據獲取方面創新,並進一步優化並發模式。

Netflix的前端技術棧主要基於React和Redux。 1.React用於構建高性能的單頁面應用,通過組件化開發提升代碼重用性和維護性。 2.Redux用於狀態管理,確保狀態變化可預測和可追踪。 3.工具鏈包括Webpack、Babel、Jest和Enzyme,確保代碼質量和性能。 4.性能優化通過代碼分割、懶加載和服務端渲染實現,提升用戶體驗。

Vue.js是一種漸進式框架,適用於構建交互性強的用戶界面。其核心功能包括響應式系統、組件化開發和路由管理。 1)響應式系統通過Object.defineProperty或Proxy實現數據監聽,自動更新界面。 2)組件化開發允許將界面拆分為可複用的模塊。 3)VueRouter支持單頁面應用,提升用戶體驗。

Vue.js的主要缺點包括:1.生態系統相對較新,第三方庫和工具不如其他框架豐富;2.學習曲線在復雜功能上變得陡峭;3.社區支持與資源不如React和Angular廣泛;4.大型應用中可能遇到性能問題;5.版本升級與兼容性挑戰較大。

Netflix使用React作為其前端框架。 1.React的組件化開發和虛擬DOM機制提高了性能和開發效率。 2.使用Webpack和Babel優化代碼構建和部署。 3.採用代碼分割、服務端渲染和緩存策略進行性能優化。

Vue.js受歡迎的原因包括簡單易學、靈活性高和高效性能。 1)其漸進式框架設計適合初學者逐步學習。 2)組件化開發提高了代碼可維護性和團隊協作效率。 3)響應式系統和虛擬DOM提升了渲染性能。

Vue.js更易用且學習曲線較平緩,適合初學者;React學習曲線較陡峭,但靈活性強,適合有經驗的開發者。 1.Vue.js通過簡單的數據綁定和漸進式設計易於上手。 2.React需要理解虛擬DOM和JSX,但提供更高的靈活性和性能優勢。

Vue.js適合快速開發和小型項目,而React更適合大型和復雜的項目。 1.Vue.js簡單易學,適用於快速開發和小型項目。 2.React功能強大,適合大型和復雜的項目。 3.Vue.js的漸進式特性適合逐步引入功能。 4.React的組件化和虛擬DOM在處理複雜UI和數據密集型應用時表現出色。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

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

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境