冇事来学系--Vue2.0 组件开发详讲(下)

简介: 组件的自定义属性propsprops节点是和data、methods等同级的节点,值是一个数组

组件的自定义属性props


props节点是和data、methods等同级的节点,值是一个数组

<script>
  // 基本语法
  export default {
    // 组件的自定义属性,允许自定义当前组件指定数据的初始值
    props: ['自定义的属性A','自定义的属性B','其他自定义的属性...'],
    // 组件的私有数据
    data(){
      return{
        // 数据
      }
    }
  }
</script>


使用方法:

  1. 在封装组件的时候上写一个props节点,并且设置一个自定义的属性

网络异常,图片无法展示
|

通过打印this会发现,this指向当前Vue组件的实例,init是对象里面的一个属性,因此可以通过this.init访问

  1. 使用上面的组件的时候,在标签内为上面自定义的属性设置属性值,即是为这个组件指定了一个初始值(注意:指定的这个值是字符串


网络异常,图片无法展示
|

只需要在设置自定义属性的时候,使用v-bind绑定属性,这样赋值的就是数字型(因为使用v-bind绑定属性时,写的是js代码,js代码中的字符串要加引号,即" '9' ")

网络异常,图片无法展示
|

  1. 在封装的组件上将要使用的初始值渲染到指定的位置

网络异常,图片无法展示
|

props中的数据,可以直接在模板结构中被使用


注意!props节点设置的数据是"只读"的!(可以修改成功,但是会报错)。若想修改props节点里面数据的值,可以将props里面的数据转存到data节点里面,因为data节点里面的数据都是可读可写的(props节点只负责设置初始值,改写的数据是data里面的数据)


props的default默认值

在声明自定义属性时,可以通过default来定义属性的默认值

<script>
  export default {
    props: {      // 注意这里的props节点里面指向的是 对象 而不是数组
      init: {     // 自定义属性init,指向一个配置对象
        // 用default属性定义 自定义属性的默认值
        default: 0
        // 若外界使用该组件的时候没有传入init属性的值,则默认值生效,为0
      }
    }
  }
</script>


props的type值类型


在声明自定义属性时,可以通过type来定义属性的值类型

<script>
  export default {
    props: {
      init{
        // default属性 定义自定义属性的默认值
        default: 0,
        // 用type属性 定义自定义属性的值类型
        // 如果传递过来的值不符合此类型,则会在终端报错
        type: Number    // init的值类型必须是Number数字型
      }
    }
  }
</script>

props的required必填项

必填项校验required设置为true,则在使用组件的时候自定义属性必须传值,否则就报错 (即使有默认值也会报错)

非单文件组件和单文件组件


非单文件组件:一个文件中包含n个组件 ---> a.html

单文件组件:一个文件中只包含一个组件 ---> a.vue

<!-- 准备一个容器 -->
<div id="#root">
  <student></student>
</div>
<script>
  // 1、创建student组件 Vue的extend方法
  const student = Vue.extend({
    name: 'student',        // 创建组件时的name属性指定组件在 开发者工具 中呈现的名字
    template: `
      <div></div>
    `,      // template节点,配置组件的HTML结构,必须要有div容器(用模板字符串写比较方便)
    data(){           // 数据必须使用函数写法
      return {}       // return返回一个数据对象
    },
    methods: {}
  })
  // 简写方法 省略了Vue的extend方法
  const student = {}
  // 2、注册组件,在vm实例中(局部组件)
  const vm = new Vue({
    el: '#root'
    components: {       // 注册组件,components节点
      student // studnet: student简写   注册的时候写的什么名字,使用的时候就要写什么名字
    }
  })
  // 3、使用组件则直接写组件标签<student></student>
  // 注册全局组件  在vm实例外
  // Vue.component('组件名称', 组件)   
  Vue.component('std', student)
</script>


组件的嵌套


在一个组件中注册和使用另一个组件,这就有了父子关系

<body>
  <div id="root">
    <!-- 使用组件 -->
  </div>
  <script>
    // 定义student组件    子组件必须定义在父组件之前,不然报错
    const student = new Vue.extend({
    name: 'student',        // 创建组件时的name属性指定组件在开发者工具中呈现的名字
    template: `
      <div>
        <h2>学生名称:{{name}}</h2>
        <h2>学生年龄:{{age}}</h2>
      </div>
    `,      // template节点,配置组件的HTML结构,必须有div容器(用模板字符串写比较方便)
    data(){           // 数据必须使用函数写法
      return {
        name: '张三',
        age: 18
      }       // return返回一个数据对象
    }
  })
    // 定义school组件
    const school = new Vue.extend({
    template: `
      <div>
        <h2>学校名称:{{name}}</h2>
        <h2>学校地址:{{address}}</h2>
        <student></student>     <!-- 子组件的使用也要在父组件中 -->
      </div>
    `,      // template节点,配置组件的HTML结构,必须有div容器(用模板字符串写比较方便)
    data(){           // 数据必须使用函数写法
      return {
        name: '叶集大学',
        address: '赛博坦'
      }       // return返回一个数据对象
    },
    components: {     // 子组件要注册在父组件里面
      student
    }
  })
    const vm = new Vue({
      el: '#root'
      components: {       // 注册组件,components节点
        school
      }
    })
  </script>
</body>


目录
相关文章
|
NoSQL Java 数据库连接
凭借这份GitHub上疯狂霸榜标星140k的Spring全家桶文档,我接连斩获阿里、京东
凭借这份GitHub上疯狂霸榜标星140k的Spring全家桶文档,我接连斩获阿里、京东
|
5天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
16天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1317 5
|
3天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
15天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1372 87
|
3天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
4天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
211 82
2025年阿里云域名备案流程(新手图文详细流程)