1. 程式人生 > 其它 ><vue 元件 1、元件化基本使用>

<vue 元件 1、元件化基本使用>

程式碼結構

元件就是將複雜的功能拆分成簡單的塊,拆分後的塊可以被多處使用。

元件的使用分成三個步驟:

1、建立元件構造器 Vue.extend()

2、註冊元件 Vue.component()

3、使用元件 <my-cpn></my-cpn>

一、 01-元件化的基本使用

1、效果

2、程式碼

01-元件化的基本使用.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>
	<body>

		<div id="app">
			<!--3.使用元件-->
			<my-cpn></my-cpn>
			 

			<div>
				<div>
					<my-cpn></my-cpn>
				</div>
			</div>
		</div>

		<my-cpn></my-cpn>

		<script src="vue.js"></script>
		<script>
			// 1.建立元件構造器物件
			let cpnC = Vue.extend({
				template: `
				<div>
					<h2>元件的標題</h2>
					<p>--------元件的內容-----------</p>
				</div>`
			})

			// 2.註冊元件
			Vue.component('my-cpn', cpnC)

			let app = new Vue({
				el: '#app',
				data: {
					message: '你好啊'
				}
			})
		</script>

	</body>
</html>

二、 02-全域性元件和區域性元件

1、 效果

(1)Vue.component('cpn', cpnC) 這樣註冊是全域性元件

(2) 這樣註冊就是區域性元件

let app = new Vue({

el: '#app',

components: {

// cpn使用元件時的標籤名

cpn: cpnC

}

})

2、程式碼

02-全域性元件和區域性元件.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>
	<body>

		<div id="app">
			<cpn></cpn>
		</div>

		<div id="app2">
			<cpn></cpn>
		</div>

		<script src="vue.js"></script>
		<script>
			// 1.建立元件構造器
			const cpnC = Vue.extend({
				template: `
					<div>
						<h2>元件的標題</h2>
						<p>--------元件的內容-----------</p>
					</div>
					`
			})

			// 2.註冊元件(全域性元件, 意味著可以在多個Vue的例項下面使用)
			 // Vue.component('cpn', cpnC)

			// 疑問: 怎麼註冊的元件才是區域性元件了?

			let app = new Vue({
				el: '#app',
				components: {
					// cpn使用元件時的標籤名
					cpn: cpnC
				}
			})

			const app2 = new Vue({
				el: '#app2'
			})
		</script>

	</body>
</html>

三、03-父元件和子元件

1、效果

2、程式碼

03-父元件和子元件.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>
	<body>

		<div id="app">
			<cpn2></cpn2>
		</div>

		<script src="vue.js"></script>
		<script>
			// 1.建立第一個元件構造器(子元件)
			let cpnC1 = Vue.extend({
				template: `
				<div>
					<h2>子元件的標題</h2>
					<p>--------元件的內容-----------</p>
				</div>
				`
			})


			// 2.建立第二個元件構造器(父元件)
			let cpnC2 = Vue.extend({
				template: `
				<div>
					<h2>父元件的標題</h2>
					<p>--------元件的內容-----------</p>
					<cpn1></cpn1>
				</div>
				`,
				components: {
					cpn1: cpnC1
				}
			})

			// root元件
			let app = new Vue({
				el: '#app',
				data: {
					message: '你好啊'
				},
				components: {
					cpn2: cpnC2
				}
			})
		</script>

	</body>
</html>

四、04-元件模板的分離寫法

1、效果

這個效果不太重要,重要的是程式碼的分離寫法

2、程式碼

04-元件模板的分離寫法.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>
	<body>

		<div id="app">
			<cpn></cpn>
			<cpn></cpn>
		</div>

  
		<template id="cpn">
			<div>
				<h2>元件的標題</h2>
				<p>--------元件的內容-----------</p>
			</div>
		</template>

		<script src="vue.js"></script>
		<script>
			// 1.註冊一個全域性元件
			Vue.component('cpn', {
				template: '#cpn'
			})

			const app = new Vue({
				el: '#app'
			})
		</script>

	</body>
</html>

五、05-元件中的資料存放問題

1、效果

2、程式碼

05-元件中的資料存放問題.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>
	<body>

		<div id="app">
			 <h2>{{title}}</h2>
			<cpn></cpn>
		</div>
	 
		<!--2.template標籤-->
		<template id="cpn">
			<div>
				<h2>{{title}}</h2>
			</div>
		</template>

		<script src="vue.js"></script>
		<script>
			// 1.註冊一個全域性元件
			Vue.component('cpn', {
				template: '#cpn',
				data() {
					return {
						title: '我是元件中的標題'
					}
				}
			})

			let app = new Vue({
				el: '#app',
				data: {
					message: '你好',
					title: '我是標題'
				}
			})
		</script>

	</body>
</html>