0

0

vue3组件化开发常用API知识点有哪些

WBOY

WBOY

发布时间:2023-05-16 22:55:26

|

1157人浏览过

|

来源于亿速云

转载

    组件化思想

    为什么使用组件化开发?

    当前前端比较流行的 vue react 等框架,都会通过编写组件来完成业务需求,也就是组件化开发。包括小程序开发也会用到组件化开发的思想。

    分析组件化思想开发应用程序:

    • 将一个完整页面拆分成很多个小组件

    • 每个组件用于完成页面的一个功能模块

    • 每一个组件还可以细分 (父子组件)

      立即学习前端免费学习笔记(深入)”;

    • 通用的组件可以复用到不同的页面

    一个 Vue 的页面,应该像是棵嵌套的组件树的形式来组织:

    vue3组件化开发常用API知识点有哪些

    vue3 入口文件:

    import { createApp } from 'vue';
    import App from './App.vue';
    
    createApp(App).mount('#app');

    createApp()函数传入了一个AppApp 就是一个组件,是项目的根组件。

    下面将分析 Vue3 中组件化开发的常用方法。

    组件通讯

    $props

    • $props 用于向子组件传递数据

    $props: {{$props}}

    • 语法糖中需要使用 definePropsApi获取props

    const props = defineProps({
      num: Number,
    })

    $emits

    • $emit 用于调用父级组件的方法

    • 语法糖中需要使用 defineEmitsApi声明emits

    
    
    const emits = defineEmits(['add'])
    function add() {
      emits('add')
    }

    $parent

    • $parent用于获取父组件实例对象。

    中组件实例不会暴露出来,直接在模板中使用$parent会返回一个空对象。

    为了在  组件中明确要暴露出去的属性,使用 defineExpose 编译器宏:

    const parData = ref("父组件数据");
    defineExpose({
      parData,
    })

    子组件:

    父组件 parData: {{$parent.parData}}

    $attrs

    • 包含了父作用域中不作为组件 props 或自定义事件的 attribute 绑定和事件。

    子组件:

    在父组件中,$attrs 的值就是 { "a": "a", "b": "b" }

    • 当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定,并且可以通过 v-bind="$attrs" 传入内部组件——这在创建高阶的组件时会非常有用,举个例子:

    父组件:

    子组件 Bar.vue

    将$attrs对象绑定到当前标签

    在浏览器查看DOM,age 和 sex作为属性被绑定到了这个p标签上面。

    • 中,需要使用useAttrs

    import { useAttrs } from 'vue';
    
    const attrs = useAttrs();
    console.log(attrs.sex); // boy

    proviede & inject

    • 用于跨层级/多层级的组件通信

    • 父组件有一个 provide 选项来提供数据,子组件有一个 inject 选项来开始使用这些数据。

    父级组件:

    JTBC网站内容管理系统5.0.3.1
    JTBC网站内容管理系统5.0.3.1

    JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也

    下载
    provide("user", "kong");
    provide("pass", 123456);

    子孙级组件:

    const user = inject("user");
    const pass = inject("pass");

    插槽 slot

    用于内容分发,将  元素作为承载分发内容的出口。

    SlotComp 组件

    使用上面的组件

              
                
                
              

    SlotComp 组件中带 name属性的 slot插槽内容,会被替换。被替换的内容 需要在父组件中使用 v-slot指令为插槽提供想要显示的内容。

    渲染作用域

                

    上面的例子,{{items}} 不会显示数据。

    父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

    作用域插槽

    让插槽的内容访问子组件才有的数据:

    插槽内容:

                

    绑定在  元素上的 attribute 被称为插槽 prop。现在,在父级作用域中,我们可以使用带值的 v-slot 来定义我们提供的插槽 prop 的名字,本例中就是slotProps

    v-model

    表单组件

    • v-model 应用在表单上面,实现双向绑定:

    自定义组件

    • v-model 应用在自定义组件上面:

    父组件中使用自定义组件:

    const msg = ref('hello world!');
    
    

    相当于:

              
              

    自定义组件ModelComp.vue中:

    const props = defineProps({
      modelValue: String
    })
    const emits = defineEmits([
      "update:modelValue"
    ])
    
    const text = ref("请输入..");
    
    // text改变时执行
    watch(text,()=>{
      emits("update:modelValue",text.value);
    })

    改变默认参数

    • 未设置参数时如上,默认绑定的参数是 modelValue update:modelValue

    设置v-model参数:

    相当于:

              
              

    自定义组件ModelComp.vue中:

    const props = defineProps({
      show: Boolean
    })
    const emits = defineEmits([
      "update:show",
    ])

    样式绑定相关

    class

    class绑定:根据需求动态绑定class样式时可以使用一下几种方法

    写法1:对象语法

    
    
    const isActive = ref(false);
    const changeColor = () => {
      isActive.value = !isActive.value;
    }

    写法2:对象语法

    
    
    const isActive2 = reactive({
    active: false,
    })
    const classObj = computed(() => {
    return {
      active: isActive2.active,
      'font-30': true,
    }
    })
    const changeColor2 = () => {
    isActive2.active = !isActive2.active
    }

    写法3:数组语法

    三目运算符写法

    数组语法中结合对象语法使用

    style

    动态绑定行内style样式

    三种方式:html代码

          

    style绑定

          

    style对象绑定(直接绑定到一个对象,代码更清新)

         

    style数组绑定

    js 代码

    const colorRed = ref('#f00')
    const styleObj = reactive({
      fontSize: '30px',
    })
    const styleObjRed = reactive({
      color: '#f00',
    })

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    616

    2023.06.14

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    655

    2023.06.21

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    470

    2023.07.31

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    245

    2023.08.01

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2895

    2023.08.11

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    506

    2023.08.11

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    312

    2023.08.31

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    426

    2023.09.01

    Java JVM 原理与性能调优实战
    Java JVM 原理与性能调优实战

    本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

    19

    2026.01.20

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Go语言实战之 GraphQL
    Go语言实战之 GraphQL

    共10课时 | 0.8万人学习

    微信小程序开发之API篇
    微信小程序开发之API篇

    共15课时 | 1.2万人学习

    Laravel---API接口
    Laravel---API接口

    共7课时 | 0.6万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号