欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

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

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

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

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

          • 字符串

          • 模板文字

          • X-Templates

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

          • 渲染功能

          • JSX

          • 單頁組件

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

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

          不過,這種方法并不完美;我發(fā)現(xiàn)大多數(shù)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、內(nèi)聯(lián)模板

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

          它的缺點與x-templates相同,但一個優(yōu)點是內(nèi)容在HTML模板中的正確位置,因此可以在頁面加載時呈現(xiàn),而不是等到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、渲染功能

          呈現(xiàn)函數(shù)要求您將模板定義為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。一些開發(fā)人員認為JSX丑陋、不直觀,是對Vue精神的背叛。

          JSX要求您首先進行轉(zhuǎn)換,因為瀏覽器無法讀取它。但是,如果需要使用呈現(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、單個文件組件

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

          它們需要換位,而且有些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>

          您可能會爭辯說,有

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