Vue:组件化开发

一、组件的使用

1、创建组件(结构HTML  交互JS  样式CSS)

Vue.extend({该配置项和new Vue的配置项几乎相同,略有差别})

区别:①创建vue组件的时候,配置项中不能使用el配置项。(但是需要使用template配置项来配置模板语句)

②配置项中的data不能使用直接对象的形式,必须使用function。

2、注册组件

局部注册:在配置项当中使用components,即

components:{
    组件的名字:组件对象
}

全局注册:Vue.component("组件的名字","组件对象");

3、使用组件

    <div class="vues">
        <h1>{{msg}}</h1>
        <userList></userList>
        <!-- Property or method "users" is not defined on the instance but referenced     
         during render. Make sure that this property is reactive,
         either in the data option, or for class-based components, by initializing the 
         property. -->
        <!-- <ul>
            <li v-for="(user,index) in users" :key="user.id">
                {{index}} : {{user.name}}
            </li>
        </ul> -->
    </div>
    <script>
        //1、注册组件
        const myComponent = Vue.extend({
            //option "el" can only be used during instance creation with the `new` 
            keyword.
            // el: '.vues',
            template: `<ul>
                            <li v-for="(user,index) of users" :key="user.id">
                                {{index}} : {{user.name}}
                            </li>
                        </ul>`,
            //The "data" option should be a function that returns a per-instance value in 
             component definitions.
            // data: {
            //     users: [
            //         { id: 1, name: 'p', age: 20 },
            //         { id: 2, name: 'h', age: 21 },
            //         { id: 3, name: 'b', age: 22 }
            //     ]
            // }
            data() {
                return {
                    users: [
                        { id: 1, name: 'p', age: 20 },
                        { id: 2, name: 'h', age: 21 },
                        { id: 3, name: 'b', age: 22 }
                    ]
                }
            }
        })
        new Vue({
            el: '.vues',
            data: {
                msg: '第一个组件',
                // users: [
                //     { id: 1, name: 'p', age: 20 },
                //     { id: 2, name: 'h', age: 21 },
                //     { id: 3, name: 'b', age: 22 }
                // ]
            },
            components: {
                userlist: myComponent,
            }
        })
    </script>

4、注意点:

①在Vue当中是可以使用自闭合标签,前提是必须在脚手架环境中使用。

②在创建组件的时候Vue.entend()可以省略,但是底层实际上还是会调用的,在注册组件时调用。

③组件名字:可以全部小写、首字母大写,后面小写、kebab-case命名法(串式命名法)、CamelCase命名法(驼峰命名法),只允许在脚手架环境使用,不要使用HTML内置的标签作为组件名字,在创建组件时,通过配置项配置一个name,这个name不是组建的名字,是设置Vue工具显示

5、组件的嵌套

    <div class="vues">
        <apps></apps>
    </div>
    <script>
        const x = {
            template: `<div><h3>组件化开发</h3></div>`
        }
        const apps = Vue.extend({
            template: `
                <div>
                    <h1>组件化开发</h1>
                    <x></x>
                </div>
            `,
            components: {
                x: x
            }
        })
        new Vue({
            el: '.vues',
            data: {
                msg: '组件嵌套'
            },
            components: {
                apps: apps
            }
        })
    </script>

 6、const VueComponent = Vue.extend()和const vm = new Vue({})的区别

①:new Vue({}) 配置项中的 this 就是: Vue 实例( vm )。
        Vue.extend({})配置项中的 this 就是: VueComponent 实例( vc )。
②:Vue.extend 每一次的 extend 调用返回的都是一个全新 VueComponent 函数。

7、单文件组件

定义:一个文件对应一个组件,命名格式:名字.vue。

结构: <template>HTML 代码 </template>、
交互 <script>JS 代码 </script> 、样式<style>CSS 代码 </style>。
export和import:
使用 export 导出(暴露)组件,在需要使用组件的 名称 .vue 文件中使用 import 导入组件。
①默认导入和导出  export default {} --- import 任意名称 from ‘模块标识符’;
②按需导入和导出 export {a, b} --- import {a, b} from ‘模块标识符 ’;
③分别导出 export var name = ‘phb’ --- export function sayHi(){}。

8、脚手架 

 9、render函数

new Vue({
  render: h => h(App),
  // render(createElement) {
  //   return createElement('h1', "phb")
  // }
}).$mount('#app')

10、prop配置

使用 props 配置可以接收其他组件传过来的数据,让组件的数据变为动态数据,三种接收方式:
(1) 简单接收
props : [‘name’,’age’,’sex’]
(2) 接收时添加类型限制
props : {
    name : String
    age : Number
    sex : String
}
(3) 接收时添加类型限制,必要性限制,默认值
props : {
    name : {
        type : Number,
        required : true
        },
    age : {
        type : Number,
        default : 10
        },
    sex : {
        type : String,
        default : ‘男’
        }
}
注意事项: 不要乱接收,接收的一定是其它组件提供的。 props 接收到的数据不能修改。(修改之后会报错,但页面会刷新。)可以找个中间变量来解决。

11、从父组件获取子组件

在组件上使用 ref 属性进行标识: <User ref=”userJack”></User>

在程序中使用$refs 来获取子组件: this.$refs.userJack。
访问子组件的属性:this.$refs.userJack.name
访问子组件的子组件属性: this.$refs.userJack.$refs.name
ref 也可以使用在普通的 HTML 标签上,这样获取的就是这个 DOM 元素:
<input type=”text” ref=”username”>   this.$refs.username

12、mixins配置

如果冲突了,会执行组件自身的,不会执行混入的。(这是原则:混入的意思就是不破坏)

对于生命周期周期钩子函数来说,混入时,都有的话,采用叠加,先执行混入的,再执行自己的。
上面的混入属于局部混入,只混入到指定的组件当中。

13、局部样式scoped

使用这个元素,可以解决样式名一致,会导致冲突问题

<style scoped></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/9924.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

黑马程序员微服务技术栈教程 - 1. SpringCloud 微服务治理

教程链接&#xff1a;https://www.bilibili.com/video/BV1LQ4y127n4 黑马的资料下载链接&#xff1a;https://pan.baidu.com/s/1zRmwSvSvoDkWh0-MynwERA&pwd1234 目录认识微服务单体架构分布式架构微服务微服务结构微服务技术对比SpringCloud总结 &#x1f380;服务拆分及远…

实时翻译器-实时自动翻译器

自动翻译器——让语言不再是障碍。 在当今全球化的背景下&#xff0c;语言已不再是跨文化交流的障碍。而自动翻译技术作为突破语言壁垒的有效手段&#xff0c;越来越受到关注和需求。我们的自动翻译器就是一个高效、准确的翻译工具&#xff0c;它能够根据用户输入的内容自动识…

【DS】河南省第十三届ICPC大学生程序设计竞赛 J-甜甜圈

明天就要省赛了&#xff0c;感觉已经寄了捏 J-甜甜圈_河南省第十三届ICPC大学生程序设计竞赛&#xff08;重现赛&#xff09; (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 直接模拟复杂度太高&#xff0c;因此考虑用DS优化 我们考虑用树状数组维护 在用线段树和树状…

MYSQL Row 752 was cut by GROUP_CONCAT()

因为group_concat有个最大长度的限制&#xff0c;GROUP_CONCAT函数返回的结果大小被MySQL默认限制为1024(字节)的长度。超过最大长度就会被截断掉 解决方法&#xff1a;更改配置文件&#xff0c;修改长度。 https://blog.csdn.net/zzddada/article/details/115082236 concat…

网络的基本概念

作者&#xff1a;爱塔居 专栏&#xff1a;JavaEE 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起进步 文章简介&#xff1a;主要概述IP地址、端口号、协议、协议分层、封装、分用、客户端、服务器、请求、响应、两台主机之间的网络通信流程。 文章目录 目录 文章目录…

Yolo V7详解及openvino部署

论文: https://arxiv.org/abs/2207.02696 代码: https://github.com/WongKinYiu/yolov7 Anchor Anchor是一种用于目标检测的先验框(prior box)生成方法&#xff0c;由Ren等人在2015年提出。Anchor可以在不同尺度和不同纵横比下生成多个先验框&#xff0c;并通过与真实目标框的…

java equals和==的区别

目录一、equals1.前言2.重写equals方法二、三、equals和的区别一、equals 1.前言 **当用equals来比较两个引用数据类型时默认比较的是它们的地址值&#xff0c;比如创建两个成员变量完全相同对象A和对象B两个进行比较&#xff0c;比较的是两个对象的地址值是否相等&#xff0c…

〖Python网络爬虫实战⑫〗- XPATH语法介绍

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

【三十天精通Vue 3】第二天 Vue 3带来的新特性

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录引言一、 Vue 3 组件化架构1.1 Composition API1.2 Vuex 3 更新1.3…

OpenGL编程指南-freeglut安装(Windows平台)

OpenGL编程指南-freeglut安装&#xff08;Windows平台&#xff09; 1、前言 学习OpenGL编程首先需要可以跟着书中的示例代码进行学习。书中使用GLUT作为示例代码的演示&#xff0c;GLUT于1998年作者不在维护并不开源&#xff0c;freeglut是一个完美的代替方案。以后我们将会通…

23年5月高项学习笔记12 —— 干系人管理

过程&#xff1a; 1. 识别干系人&#xff1a;定期识别干系人&#xff0c;分析和记录他们的利益&#xff0c;参与度、相互依赖性、影响力和对项目的潜在的影响 输入&#xff1a;立项管理文件、沟通管理计划、干系人参与计划、需求文件、变更日志、问题日志、协议&#xff08;协…

MySQL事物(基础篇)

MySQL事务事物的基本概念事物的ACID属性事务的使用事务隔离级别MVCC&ReadViewMySQL是否还存在幻读事物的基本概念 Transaction作为关系型数据库的核心组成&#xff0c;在数据安全方面有着非常重要的作用&#xff0c;本文会一步步解析事务的核心特性&#xff0c;以获得对事…

STM32CubeMx+HAL库实现USB CDC+MSC复合设备

之前的文章中介绍过STM32的USB应用&#xff0c;包括虚拟串口&#xff08;CDC&#xff09;和大容量存储设备&#xff08;MSC&#xff09;。今天来介绍USB实现CDC和MSC复合设备的方法。 硬件&#xff1a;STM32F407VET6 软件&#xff1a;STM32CubeMx v6.5F4库v1.27.1 编译环境&a…

自动驾驶概述

自动驾驶是指利用计算机视觉、机器学习、传感器等技术&#xff0c;使汽车或其他交通工具能够在没有人类干预的情况下&#xff0c;完成自主导航和行驶任务。自动驾驶技术可以提高交通安全、减少交通拥堵、提高车辆利用率等&#xff0c;并对未来的城市交通和交通工具设计产生深远…

采购招投标系统-高效管控招采流程-降低采购成本

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…

【SpringBoot技术专题】「实战指南」从实战开发角度去分析操作RestTemplate的应用及使用技巧

前提介绍 当你的应用程序需要访问远程接口时&#xff0c;很容易被不同的浏览器和API调用协议弄晕。幸运的是&#xff0c;Spring框架已为我们提供了一个简单而功能强大的RestTemplate工具&#xff0c;它可以轻松地处理这些基础任务并提供一个简单的方式来访问各种API。 RestTe…

零售数据分析之操作篇12:子查询的应用

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 上期内容与作业 上一讲讲了占比相关内存计算的应用场景&#xff0c;包括占比、TOP占比、累计占比等&#xff0c;不同的占比&am…

Explain分析示例

Explain分析示例示例表explain 两个变种explain中的列1. id列2. select_type列3. table列4. type列NULL&#xff1a;const, system&#xff1a;eq_ref&#xff1a;ref&#xff1a;range&#xff1a;index&#xff1a;ALL&#xff1a;5.possible_keys列6. key列7. key_len列8. r…

Matlab simulink上手控制仿真学习笔记3-常用模块S Function及使用案例

讲得真的十分细致&#xff01;个人感觉看完前4节就差不多了。 今天记录的是S Function。 内容比较多&#xff0c;加个目录&#xff1a; S Function前置工作1.1 parameter.m1.2 plant.mfunction [sys,x0,str,ts,simStateCompliance] plant(t,x,u,flag,pa)function [sys,x0,str…

《Kubernetes部署篇:Ubuntu20.04基于containerd二进制部署K8S 1.24.12集群(一主多从)》

一、架构图 如下图所示&#xff1a; 如下图所示&#xff1a; 二、环境信息 1、部署规划 主机名IP地址操作系统内核版本软件说明etcd01192.168.1.62Ubuntu 20.04.5 LTS5.15.0-69-genericetcd02192.168.1.63Ubuntu 20.04.5 LTS5.15.0-69-genericetcd03192.168.1.64Ubuntu 20.04.…