成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Vue.js中定義組件模板的方法有哪些-創(chuàng)新互聯(lián)

這篇文章主要介紹Vue.js中定義組件模板的方法有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,做網(wǎng)站、網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。

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>

以上是“Vue.js中定義組件模板的方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:Vue.js中定義組件模板的方法有哪些-創(chuàng)新互聯(lián)
本文URL:http://jinyejixie.com/article46/djeghg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、微信公眾號(hào)做網(wǎng)站、網(wǎng)站改版、網(wǎng)站建設(shè)軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
襄汾县| 丰城市| 黔江区| 吉林省| 潼南县| 镇远县| 务川| 镶黄旗| 鲁山县| 武宣县| 巫溪县| 昌吉市| 青河县| 湾仔区| 都匀市| 小金县| 老河口市| 耒阳市| 景谷| 拉孜县| 进贤县| 博湖县| 丰都县| 张家港市| 外汇| 龙山县| 会宁县| 浪卡子县| 策勒县| 如皋市| 永兴县| 呼伦贝尔市| 临城县| 弥渡县| 沁水县| 法库县| 洞口县| 雷州市| 金门县| 山东省| 彭州市|