Vue组件化编程

本文详细介绍了JavaScript的模块化和组件化概念,以及在Vue框架中如何实现组件的创建、注册和使用。通过实例展示了模块化和组件化的应用,包括非单文件组件的使用,以及组件的嵌套。讲解了Vue中组件的命名规范、模板结构和数据绑定,帮助读者理解并掌握JavaScript模块化和Vue组件化的实践技巧。
摘要由CSDN通过智能技术生成

一、模块

理解:向外提供特定功能的js程序,一般就是一个js文件。
为什么:js文件很多很复杂。
作用:复用js,简化js的编写,提高js运行效率。

模块化:
当应用中的js都以模块来编写的,那这个应用就是一个模块化的应用。

二、组件

理解:用来实现应用中局部功能代码和资源的集合。
为什么:一个界面的功能很复杂。
作用:复用编码,简化项目编码,提高运行效率。

组件化:
当应用中的功能都是多组件的方式来编写的,那这个应用就是组件化的应用。

非单文件组件:
一个文件中包含有n个组件。

单文件组件:
一个文件中只包含有一个组件。

三、非单文件组件

Vue中使用组件的三大步骤:

  1. 定义组件(创建组件)
  2. 注册组件
  3. 使用组件(写组件标签)

几个注意点:

  • 关于组件名:
            一个单词组成:
                第一种写法(首字母小写):school
                第二种写法(首字母大写):School
            多个单词组成:
                第一种写法(kebab-case命名):my-school
                第二种写法(CamelCase命名):MySchool (需要Vue脚手架支持)
            备注:
            (1).组件名尽可能回避HTML中已有的元素名称,例如:h2、H2都不行。
            (2).可以使用name配置项指定组件在开发者工具中呈现的名字。
  • 关于组件标签:
            第一种写法:<school></school>
            第二种写法:<school/>
            备注:不用使用脚手架时,<school/>会导致后续组件不能渲染。
  • 一个简写方式:
            const school = Vue.extend(options) 可简写为:const school = options

(1)创建组件

script代码:

        // 创建组件需要使用API:extends
        const girl = Vue.extends({
            //newVue里面的配置对象这里的使用方式几乎一样
            //data必须写成函数
            data() {
                return {
                    name: 'Mary',
                    age: 18
                }
            },
        })

        // 创建组件需要使用API:extends
        const boy = Vue.extends({
            //newVue里面的配置对象这里的使用方式几乎一样
            //data必须写成函数
            data() {
                return {
                    name: 'Mike',
                    age: 19
                }
            },
        })

(2)注册组件

script代码:

        //创建vm
        new Vue({
            el: '.root',
            //注册组件(局部注册)
            components: {
                //里面是键值对的方式,当组件名和变量名相同时可缩写
                girl,
                boy
            }
        })

(3)使用组件

使用template可以配置组件结构:

            template: `
            <div>
            <h1>男生信息</h1>
            <h2>姓名:{{name}}</h2>
            <h2>年龄:{{age}}</h2>
            </div>`

            template: `
            <div>
            <h1>女生信息</h1>
            <h2>姓名:{{name}}</h2>
            <h2>年龄:{{age}}</h2>
            </div>`

在html结构中编写组件标签:

    <div class="root">
        <!-- 编写组件标签 -->
        <boy></boy>
        <hr>
        <!-- 编写组件标签 -->
        <girl></girl>
    </div>

最终页面输出效果:

 四、组件的嵌套

注意:注册给谁就把组件标签写在谁的template里边

假设我们准备了一个学校组件和一个学生组件,学生组件包含在学校组件里面。

(一)首先我们需要在定义一个学校组件和一个学生组件:

        const student = Vue.extend({
            template: `
            <h1>学生名字:{{name}}</h1>
            `,
            data() {
                return {
                    name: '张三',
                }
            },
        })

        const school = Vue.extend({
            template: `
            <h1>学校名字:{{name}}</h1>
            `,
            data() {
                return {
                    name: '北京大学',
                }
            },
        })

(二)注册组件

            //在Vue里面注册学校组件
            components: {
                school
            }

            //在学校组件里面注册学生组件
            components: {
                student
            }

(三)使用组件

   //在HTML编写school组件标签
    <div class="root">
        <school></school>
    </div>

    template: `
     <div>
     <h1>学校名字:{{name}}</h1>
    //在school组件里面编写student标签
     <student></student>
     </div>`
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super码力

么么哒,夏天来块儿冰西瓜!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值