vue の非単一ファイル コンポーネントの使用

 グローバルに登録されたコンポーネント

複数のページでこのコンポーネントを使用する必要がある場合は、このコンポーネントをグローバル コンポーネントとして登録できます。

グローバル登録: Vue.component('コンポーネント名',component) を使用してグローバル コンポーネントを構成します。次に例を示します。

// 第二步:全局注册组件
Vue.component('FrameHead',FrameHead);

コンポーネントを同時に使用する 2 つのページがあるとします。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Vue2全局注册组件</title>
		<script src="./js/vue.js"></script>
	</head>
	<body>
		
		<!-- 页面一 -->
		<div id="APP1">
			<p>页面一</p>
			<my-code></my-code>
		</div>
		
		<hr/>
		
		<!-- 页面二 -->
		<div id="APP2">
			<p>页面二</p>
			<my-code></my-code>
		</div>

		<script>
			
			// 第一步:创建 MyCode 组件
			const MyCode = {
				template: `
					<div>
						<p>{
   
   {title}}</p>
					</div>
				`,
				data() {
					return {
						title: "你好呀!"
					}
				}
			}
			
			// 第二步:全局注册组件
			Vue.component('MyCode',MyCode);
			
			// 页面一的 Vue 实例
			const vm1 = new Vue({
				el: "#APP1"
			});
			
			// 页面二的 Vue 实例
			const vm2 = new Vue({
				el: "#APP2"
			});
		</script>
	</body>
</html>

 : コンポーネントがグローバルに登録された後は、 new Vue() でコンポーネントを定義する必要はなく、すべての Vue インスタンスがこのコンポーネントを使用できるようになります。

 コンポーネントのネストされた使用

サブコンポーネントを作成します。

// 第一步:创建 crumbs 组件【子组件】
const crumbs = Vue.extend({
	template:`
		<div>
			<span v-for="(item,index) in list" :key="index"> {
   
   {item}} </span>
		</div>
	`,
	data(){
		return {
			list: ["首页","用户管理","商品管理","轮播图管理"]
		}
	}
})

親コンポーネントを作成します。

// 第一步:创建 frameHead 组件【父组件】
const frameHead = Vue.extend({
	template: `
		<div>
			<strong>{
   
   {title}}</strong>
			<span>{
   
   {username}}</span>
			<hr/>
			<crumbs></crumbs>
		</div>
	`,
	data() {
		return {
			title: "商城管理系统",
			username: "张三"
		}
	},
	// 注册子组件
	components: {
		crumbs
	}
})

: コンポーネント内にもコンポーネントの設定項目があり、コンポーネント内にサブコンポーネントを登録したり、現在のテンプレートにサブコンポーネントを書き込んで使用したりすることができます。

Vue インスタンスを作成します。

const vm = new Vue({
	el: "#APP",
	components: {
		frameHead
	}
});

: Vue インスタンスにサブコンポーネントを登録する必要はありません。

コンポーネントを使用する

<div id="APP">
	<frame-head></frame-head>
</div>

 

完全なコード:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>vue2 组件嵌套使用</title>
		<script src="./js/vue.js"></script>
	</head>
	<body>

		<div id="APP">
			<frame-head></frame-head>
		</div>

		<script>
			// 第一步:创建 crumbs 组件【子组件】
			const crumbs = Vue.extend({
				template: `
					<div>
						<span v-for="(item,index) in list" :key="index"> {
   
   {item}} </span>
					</div>
				`,
				data() {
					return {
						list: ["首页", "用户管理", "商品管理", "轮播图管理"]
					}
				}
			})

			// 第一步:创建 frameHead 组件【父组件】
			const frameHead = Vue.extend({
				template: `
					<div>
						<strong>{
   
   {title}}</strong>
						<span>{
   
   {username}}</span>
						<hr/>
						<crumbs></crumbs>
					</div>
				`,
				data() {
					return {
						title: "商城管理系统",
						username: "张三"
					}
				},
				// 注册子组件
				components: {
					crumbs
				}
			})

			const vm = new Vue({
				el: "#APP",
				components: {
					frameHead
				}
			});
		</script>
	</body>
</html>

原作者:呉暁棠

作成時期:2023.5.13

おすすめ

転載: blog.csdn.net/xiaowude_boke/article/details/130653435