一小时入门vue组件(建议收藏),前端开发教程

本文介绍了Vue.js中组件的使用,包括全局组件的共享数据问题、局部组件的注册与使用、父子组件之间的数据传递(静态和动态)、以及如何确保数据独立性。作者还提到了在VSCode中关于组件data的限制,并推荐了JavaScript书籍作为学习资源。
摘要由CSDN通过智能技术生成

return {

name:‘ccy’

}

},

methods:{

changeName:function(){

this.name = ‘安之’

}

}

})

// vue对象1

new Vue({

el:“#vue-app-one”,

})

// vue对象2

new Vue({

el:“#vue-app-two”,

})

使用组件:

① 在vue对象对应的根元素(el指定标签)下使用

② 由于定义的是全局组件,所以可以在任意的vue对象下使用

③ 组件可复用,在一个vue对象下可以使用多次,且组件间互相独立

效果:

在这里插入图片描述

data是一个函数

在vue对象中,data属性值是一个对象,比如这样的:

在这里插入图片描述

但是在全局组件中,同一份data可能被多个vue对象使用,每个对象不单独维护一份data时,如果某一个vue对象修改了data中的一个变量,其他vue对象获取data时就会被影响;

如果用上面的例子做案例,若组件中的data是对象(引用),其他地方均不改变,两个vue对象便共享同一个name变量;当我通过其中一个vue对象改变name数据时(即点击任一个btn按钮),另一个对象获得的name也发生了改变(其他按钮处的’ccy’也都被改成了’安之’)

因此,为保证数据的独立性,即每个实例可以维护一份被返回对象的独立的拷贝,data为每个实例都return一份新创建的数据,不同的vue对象获取的data均互不影响

在vscode中不允许组件中的data是对象,会报错:

[Vue warn]: The “data” option should be a function that returns a per-instance value in component definitions.

局部组件


  • 局部组件注册在某个vue对象中,
  • 只有注册过该局部组件的vue对象才能使用这个局部组件

例子:

局部组件定义

// template仅一个根元素:ul

var msgComponent = {

// 数据是自身提供的 (hobbies)

template:<ul><li v-for='hobby in hobbies' v-bind:key='hobby.id'>{{hobby}}</li></ul>,

data(){

return {

hobbies:[‘看剧’,‘看动漫’,‘吃好吃的’]

}

}

}

注册局部组件:

// 仅由注册过该局部组件的vue对象才能使用,此处为div#vue-app-one

// 注意命名规范,components中对象的key将会被作为标签名,多个单词拼接的命名需使用横杆法

// 可以写成msg-component,此处直接简化了命名为msg,

new Vue({

el:“#vue-app-one”,

components:{

“msg”: msgComponent

}

})

html文件中使用<msg></msg>

这里是vue-app-one

我的爱好:

效果: 红框圈出的部分就是局部组件渲染出来的

在这里插入图片描述

父向子传值/传引用:prop


静态传值

创建子组件:

var titleComponent = {

props:[“title”],

template:<p>{{title}}</p>

// 所需要的数据title由父组件提供

}

在父组件的components属性中注册子组件:

new Vue({

el:“#vue-app-one”,

components:{

“msg”: msgComponent,

“titleComponent”:titleComponent

},

})

在父组件上使用子组件:

这里是vue-app-one

效果:红框标记处就是父向子传值并展示

在这里插入图片描述

动态传值:v-bind

定义子组件:

var titleComponent = {

props:[“title”],

template:<p>{{title}}</p>

}

在父组件的components属性中注册子组件:

new Vue({

el:“#vue-app-one”,

components:{

“msg”: msgComponent,

“titleComponent”:titleComponent

},

data(){

return {

title:"my hobbies are ",

}

}

})

使用子组件,通过绑定父组件data中的变量title来实现动态传值:

这里是vue-app-one

效果:红框处就是动态绑定获取数据的展示

在这里插入图片描述

传递数组等复杂数据时,也可以使用v-bind来动态传值,如:

需要向子级传递hobbies数组,在vue实例对象(父)中创建数据hobbies

new Vue({

el:“#vue-app-one”,

components:{

“msg”: msgComponent,

“titleComponent”:titleComponent

},

data:{

title:"my hobbies are ",

hobbies:[‘看剧’,‘看动漫’,‘吃好吃的’], //需要向子组件传递的数据

}

})

定义子组件

var msgComponent = {

template:`

{{hobby}}

`,

props:[“hobby”],

data(){

return {

}

}

}

使用子组件

这里是vue-app-one

效果:

在这里插入图片描述

跳回“一点想法”处

子向父:事件传值$emit


子组件不能通过prop向父组件传递数据,需要使用事件向父组件抛出一个值,告知父组件我需要实现一个功能,由父组件处理这个事件

例子:点击按钮,改变名称chinesename

(由于data变量名不支持chinese-name形式,花括号里不支持chineseName形式,所以这里我都用了小写,此处记录一下,日后学到了新知再来填坑)

先在父组件的data中定义chinesename的初始值:

new Vue({

el:“#vue-app-one”,

data:{

chinesename:“anzhi” // chinesename初始值

}

})

创建子组件,并注册事件change-name(就像click事件一样,需要让系统能够辨认这是一个事件并监听,当事件被触发时,执行某项约定好的操作):

Vue.component(‘blog-post’, {

props: [‘chinesename’],

template: `

{{ chinesename }}

修改名字

`

// blog-post组件包含一个h3,显示chinesename,和一个按钮

// 点击这个按钮,触发change-name事件,将"ruosu"作为参数传递给指定的处理函数onChangeName

})

在父组件中使用子组件,定义change-name的处理函数为onChangeName:

这里是vue-app-one

<blog-post

v-bind:chinesename=‘chinesename’

v-on:change-name = “onChangeName”

在父组件处定义事件处理函数onChangeName:

new Vue({

el:“#vue-app-one”,

data:{

chinesename:“anzhi”

},

methods:{

onChangeName:function(value){
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

资料领取方式:戳这里免费获取

,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-Bh41s7AF-1712257551976)]

[外链图片转存中…(img-ELTomM54-1712257551977)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-Z2fgFeUE-1712257551977)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

资料领取方式:戳这里免费获取

html5

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值