看了Vue的文档,写得很简约,然则并不简朴。在本身进修的历程当中踩过不少的坑,进修的时刻把官网的例子从头至尾做了一遍,记录在github中https://github.com/WYseven/vue2-basic-demo/tree/master/vue-demo,进修中也有本身的心得体会,记录下来分享,愿望对你的明白有所协助。
组件是vue中很主要,这部份也是最难明白的,先聊一聊vue中的组件。
组件是什么
在vue中组件是一个自定义元素,vue的编译器为它增加特别功用;组件也可所以原生的html元素,运用特别的is来扩大。
看完以后,比较懵吧?我们逐步解开组件的神奇面纱,先从一段规划最先提及。
试想在规划中的一个场景,自定义一个下拉框,须要先定义一个基础的组织:
<div class="select">
<p>请挑选:</p>
<ul>
<li>北京</li>
<li>上海</li>
<li>杭州</li>
</ul>
</div>
<!--运用时通常是复制上面组织改数据-->
<div class="select">
<p>请挑选:</p>
<ul>
<li>博士</li>
<li>研究生</li>
<li>本科</li>
</ul>
</div>
定义好一个基础组织后,如果要再次运用,复制一份组织转变数据即可。如许复制粘贴的做法没什么缺点,但疏忽一个题目—如果要修正下拉框的组织。就会变得难以保护了。
如果我对这个组织不是很惬意,我要把p标签改成span标签,运用到下拉框的组织都要改,那可要修正许多处所。如果我要给组织中ul增加一个class,运用给到下拉框的处所都要修正,也要修正许多处所。如许保护起来超等的贫苦。
能不能只写一套组织,然后复用,类似于JavaScript中要复用多行代码,能够封装成一个函数,在运用时只须要挪用函数,无需重复写多行代码?答案是固然能够。
在JavaScript中封装的是一个函数,然后挪用。那末在html中就不能是函数了,而要定义成标签,但要避开w3c划定的标签,采纳自定义标签。
如果有一个自定义标签< custom-select>代表的就是自定义的下拉框,那末在须要运用下拉框的时刻,只须要如许来写:
<custom-select></custom-select>
<custom-select></custom-select>
<custom-select></custom-select>
是否是变得精简许多?
关于自定义标签名字,能够参考W3C划定
如许只是一个自定义标签罢了,浏览器并不会剖析为自定义的下拉框组织。我们真是的目标是要让< custom-select>自定义标签代表一段HTML组织,也就是在浏览器中展现的是自定义下拉框组织。
写上自定义标签:
<custom-select></custom-select>
终究会被剖析为以下组织才是我们想要的。
<div class="select">
<p>请挑选:</p>
<ul>
<li>北京</li>
<li>上海</li>
<li>杭州</li>
</ul>
</div>
当运用vue时,剖析的这个历程就交给Vue来做。
以上举例中自定义标签< custom-select>实在就是一个组件,vue的编译器为它增加特别功用,终究会显现我们定义的组织。
我们是从规划组织重复运用引出要运用组件,固然组件还远远不止这些,它还有其他的功用等着去探究。
定义组件
在vue中定义组件异常简朴,运用Vue组织函数下的component函数,即可定义组件。
语法:
Vue.component(组件名, 选项对象)
来定义一个下拉框组件:
Vue.component('custom-select', {
template: `
<div class="select">
<p>请挑选:</p>
<ul>
<li>北京</li>
<li>上海</li>
<li>杭州</li>
</ul>
</div>
`
})
组件的名字就为custom-select,在模板中运用组件:
<div id="app">
<custom-select></custom-select>
<custom-select></custom-select>
</div>
<script>
Vue.component('custom-select', {
template: `
<div class="select">
<p>请挑选:</p>
<ul>
<li>北京</li>
<li>上海</li>
<li>杭州</li>
</ul>
</div>
`
})
new Vue({
el: '#app'
})
</script>
在模板中运用组件和一般标签一样。