久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Vue.js中定義組件模板的幾種方法介紹

      Vue.js中定義組件模板的幾種方法介紹

      Vue.js 使用了基于 HTML 的模板語(yǔ)法,允許開(kāi)發(fā)者聲明式地將 DOM 綁定至底層 Vue 實(shí)例的數(shù)據(jù)。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循規(guī)范的瀏覽器和 HTML 解析器解析。

      在Vue中定義組件模板有很多選擇。在我看來(lái),至少有七種不同的方式:

      • 字符串

      • 模板文字

      • X-Templates

      • 內(nèi)聯(lián)

      • 渲染功能

      • JSX

      • 單頁(yè)組件

      在本文中,我們將逐一介紹每種方法的示例,并討論其優(yōu)缺點(diǎn),以便您了解在任何特定情況下使用哪種方法最好。

      1、字符串

      默認(rèn)情況下,模板將被定義為JS文件中的字符串。我想我們都同意字符串中的模板是非常難以理解的。除了廣泛的瀏覽器支持之外,這個(gè)方法沒(méi)有什么特別之處。

      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”)允許您跨多行定義模板,這是在常規(guī)Javascript字符串中無(wú)法做到的。雖然為了安全起見(jiàn),您可能仍然應(yīng)該轉(zhuǎn)換為ES5,但現(xiàn)在許多新瀏覽器都支持這些命令,并且更容易閱讀。

      不過(guò),這種方法并不完美;我發(fā)現(xiàn)大多數(shù)ide在語(yǔ)法高亮、制表符、換行等方面仍然讓您感到痛苦。

      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文件中的腳本標(biāo)記中定義。腳本標(biāo)記由文本/x-template標(biāo)記,并由組件定義中的id引用。

      我喜歡這種方法,它允許您用正確的HTML標(biāo)記編寫HTML,但缺點(diǎn)是它將模板與組件定義的其余部分分開(kāi)。

      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、內(nèi)聯(lián)模板

      通過(guò)向組件添加inline-template屬性,您可以向Vue表明內(nèi)部?jī)?nèi)容是其模板,而不是將其視為分布式內(nèi)容。

      它的缺點(diǎn)與x-templates相同,但一個(gè)優(yōu)點(diǎn)是內(nèi)容在HTML模板中的正確位置,因此可以在頁(yè)面加載時(shí)呈現(xiàn),而不是等到Javascript運(yùn)行時(shí)。

      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、渲染功能

      呈現(xiàn)函數(shù)要求您將模板定義為Javascript對(duì)象。它們顯然是模板選項(xiàng)中最冗長(zhǎng)和抽象的。

      但是,這樣做的好處是模板更接近編譯器,并且允許您訪問(wèn)完整的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中最有爭(zhēng)議的模板選項(xiàng)是JSX。一些開(kāi)發(fā)人員認(rèn)為JSX丑陋、不直觀,是對(duì)Vue精神的背叛。

      JSX要求您首先進(jìn)行轉(zhuǎn)換,因?yàn)闉g覽器無(wú)法讀取它。但是,如果需要使用呈現(xiàn)函數(shù),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、單個(gè)文件組件

      只要您對(duì)在設(shè)置中使用構(gòu)建工具感到滿意,單個(gè)文件組件就是模板選項(xiàng)之王。它們帶來(lái)了兩方面的好處:允許您在編寫標(biāo)記的同時(shí)將所有組件定義保存在一個(gè)文件中。

      它們需要換位,而且有些ide不支持這種文件類型的語(yǔ)法高亮顯示,但在其他方面很難打敗它們。

      <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>

      您可能會(huì)爭(zhēng)辯說(shuō),有

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)