首页 > 代码库 > 组件化应用构建

组件化应用构建

在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例

 

一个组件实例

<div id="app1">    <ol>        <!-- 创建一个com1组件实例 -->        <com1 v-for="item in list" v-bind:todo="item"></com1>    </ol></div>
//注册一个名为com1的组件Vue.component("com1", {    props: ["todo"],    template: "<li>{{todo.text}}</li>"});new Vue({    el: "#app1",    data: {        list: [            {text: "大碗喝酒"},            {text: "大块吃肉"},            {text: "大刀向鬼子的头上砍去"}        ]    }});

 

运行结果

技术分享

这个效果和我在循环语句中编写的实例效果是一样的。

也就是说,可以尝试用v-for指令来代替这个组件。

<div id="app1">    <ol>        <li v-for="item in list">{{item.text}}</li>    </ol></div>
new Vue({    el: "#app1",    data: {        list: [            {text: "大碗喝酒"},            {text: "大块吃肉"},            {text: "大刀向鬼子的头上砍去"}        ]    }});

 

通过两端代码的比较,尝试分析一下构建组件的过程:

  • 注册一个组件com1,规定它的模板(template),规定了一个自定义属性(props)todo
  • 组件构造成功后,就可以使用<com1>标签了,由于我的目的是要将list数组的3个数据渲染到DOM中,<com1>标签要使用v-for指令来遍历这个对象数组。OK,指令使用了,但<com1>标签中不能写{{}}来绑定数据啊,数据绑定已经在组件模板中写好了,再次使用报错,也不合逻辑。嗯,根据经验,这里是要传参吧。把v-for指令返回的数据传给com1组件的todo属性。有兴趣的可以找个纸笔,划一下结构,是正好等价的。

 

 

在一个大型应用中,有必要将整个应用程序划分为多个组件,以便开发管理。

 

组件化应用构建