vue组件挂载与html加载区别,基于Vue全局组件与局部组件的区别说明

1、组件声明

这是{{name}}

这是{{data}}

var father = {

template: "#father",

data: function() {

return {

name: "一个全局组件-模板-",

data: "数据:18892087118"

}

}

};

2、组件注册

vue.component('father', father);

3、组件挂载

全局组件1

4、组件实例

vue2.0 --- 局部组件与全局组件

vue2.0局部组件与全局组件

局部组件

全局组件1

全局组件2

这是{{name}}

这是{{data}}

这是{{name}}

这是{{data}}

这是{{name}}

{{cmsgtwo}}

{{cmsg}}

{{fromfather}}

{{fromfather.fmsg}}

// 定义组件

var father = {

template: "#father",

data: function() {

return {

name: "一个全局组件-模板-",

data: "数据:18892087118"

}

}

};

var child = {

template: "#child",

data: function() {

return {

name: "子组件",

cmsg: "子组件里的第一个数据",

cmsgtwo: "子组件里的第二个数据"

}

},

methods: {

change: function() {

this.fromfather.fmsg = "子组件数据被更改了"

}

},

mounted: function() {

this.cmsg = this.fromfather;

},

props: ["fromfather"],

};

// 注册组件

vue.component('father', father);

vue.component("child", child);

var vm = new vue({

data: {

fmsg: "data里的数据",

givedata: {

fmsg: "这是父组件里的数据"

}

},

methods: {},

// 局部组件fatherlocal

components: {

'fatherlocal': {

template: '#father-local',

data: function() {

return {

name: "局部-父组件",

data: "局部-父组件里的数据"

}

}

}

}

}).$mount('#app');

6、特殊的属性is

当使用 dom 作为模板时 (例如,将el选项挂载到一个已存在的元素上),你会受到 html 的一些限制,因为 vue 只有在浏览器解析和标准化 html 后才能获取模板内容。尤其像这些元素

自定义组件被认为是无效的内容,因此在渲染的时候会导致错误。变通的方案是使用特殊的is属性:

vue.component("my-component",{

template:"

{{message}}

",

data:function(){

return {

message:"hello world"

}

}

});

new vue({

el:"#app1"

})

补充知识:vue组件之入门:全局组件三种定义

不论我们使用哪种方式创建出来的组件,组件中的template属性指向的模板内容中,必须有且只有一个根元素,其他元素必须在这个根元素下面。

1.使用vue.extend配合vue.component定义全局组件

在使用vue.extend配合vue.component定义全局组件时,vue.extend里面定义template模板,而vue.component里面是要注册一个组件。

//第一步:使用vue.extend来创建全局组件

var com1 = vue.extend({

//通过template模板的属性来展示组件要显示的html

template: '

使用vue.extend创建全局组件

'

});

//第二步:使用 vue.component('组件名称',创建出来的组件模板对象)

vue.component('mycompnent', com1);

// 创建 vue 实例,得到 viewmodel

var vm = new vue({

el: '#app',

data: {},

methods: {}

});

【注意】在定义注册组件时,组件的名称不需要按照驼峰命名,但是在页面引入组件时,组件的名称必须按照驼峰命名。

89f6107bd1c61b9d1de77a15a6bb54bc.png

简写如下:

81dbce6bee3d813dd52ff04d2fc0f01f.png

2.直接使用vue.component定义全局组件

这里是直接使用vue.component直接创建一个组件

vue.component('mycom2', {

template: '

直接使用vue.component创建组件

'

});

// 创建 vue 实例,得到 viewmodel

var vm = new vue({

el: '#app',

data: {},

methods: {}

});

3.vue外部直接定义template

这是通过template元素,在外部定义组件的结构,有代码的提示和高亮

vue.component('mycom3', {

template: "#tmp1"

});

var vm = new vue({

el: '#app',

data: {},

methods: {}

});

4f3bd4ac797a0fdac9c5af17d4a4d948.png

以上这篇基于vue全局组件与局部组件的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值