全局注册组件
如果多个页面都需要使用这个组件,可以将这个组件注册为全局组件。
全局注册:利用 Vue.component('组件名', 组件) 配置全局组件,例如:
// 第二步:全局注册组件
Vue.component('FrameHead',FrameHead);
假设有两个页面,同时使用一个组件:
<!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
}
})
注:组件中也有 components 配置项,可以在组件中再注册子组件,并且将子组件写到当前的 template 模板中去使用。
创建 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