当前位置:网站首页 > Vue.js开发 > 正文

vue 组件插槽(vue插件使用)



Vue是一个渐进式的框架,渐进式指的是可以将Vue作为应用的一部分嵌入其中,带来更丰富的交互体验,比如一个项目是使用Jquery构建的,此时就可以通过Vue对部分网页进行重构,而不必重构全部的网页。

el属性决定了这个Vue对象挂载到哪一个元素上。data属性会存储一些和绑定对象上相关联的数据。

  • assets文件夹

上述文件夹下面主要存放静态文件。

  • components文件夹

这个文件夹主要存放自定义组件

  • App.vue

这个文件是我们的根组件。

  • main.js

上述文件是我们的入口文件。

方式1

方式2

方式1

方式2

下面是一个动态属性名的例子,其中的值是静态的。

下面的循环遍历是以v-for为基础进行的。

下面是需要二次遍历的情况

下面是循环遍历对象的情况

下面是事件方法的基本用法。

下面的这种写法也是可以的。

核心就是传递给目标函数一个$event。

需要传入多个参数的情况,将$event放在最后。

下面是html结构

下面是获取方法:通过e.srcElement.dataset.xxx;

方式一:通过preventDefault。

方式二:通过事件修饰符来阻止

按键修饰符主要是检测用户按了什么键,主要是通过@keyup实现。

实现输入的时候,不做操作,只有按回车的时候才执行函数。

  • 原生JS获取DOM对象
  • 通过this.$refs

MVVM就是我们常说的双向数据绑定,Vue就是一个MVVM框架,M表示model,V表示View,在MVVM框架中model改变会影响view,view视图改变反过来会影响model。

  • 获取双向数据绑定的值(直接从this中拿即可)
  • 对radio单选框进行双向数据绑定
  • 对select选择框进行双向数据绑定
  • 对checkbox进行双向数据绑定
  • 对textarea进行双向数据绑定

所谓的插值操作,可以理解为双大括号语法。

v-once存在的意义是数据只渲染一次,当数据发生变化的时候,渲染的数据不随着变化。

v-html存在的意义是将字符串形式的html文本渲染为真正的HTML。

v-text能够实现类似双大括号插值的方法,但是这个指令不够灵活,一般不推荐使用。

v-pre指令存在的意义是显示原生的内容,指的是不从vue中提取数据,双大括号显示的还是双大括号。

(千字长文)Vue核心基础解析_html

v-cloak指令存在的意义是控制JS解析引擎还未解析到双大括号语法或卡顿的时候,显示的内容。这个指令需要结合css语法。

(千字长文)Vue核心基础解析_vue.js_02

v-bind可以使用冒号进行缩写。

v-bind动态绑定class。

(千字长文)Vue核心基础解析_前端_03

  • 也可以通过下面的语法

(千字长文)Vue核心基础解析_html_04

  • 对象语法

(千字长文)Vue核心基础解析_vue.js_05

  • 数组语法




不加单引号的情况



(千字长文)Vue核心基础解析_vue.js_07

v-bind动态绑定style。

  1. 加单引号的情况。

此时的50px代表的是字面量并不是变量,但是如果不加单引号,此时的50px指的是一个变量,Vue会从data中寻找这个变量。

  1. 不加单引号的情况

(千字长文)Vue核心基础解析_javascript_08

调用计算属性的时候,后面不用加括号。

下面是使用计算属性的一个例子。

(千字长文)Vue核心基础解析_前端_09

一般情况下,我们不适用计算属性的set方法,请看下面的例子。

计算属性是有缓存机制的,以下面的例子为例,如果是methods,调用多少次,函数就需要执行多少次,但是如果是计算属性,调用多次,函数只执行了一次,极大的提高了性能。

(千字长文)Vue核心基础解析_html_10

v-on的语法糖是@

v-on在调用的时候,是否加括号是一个指的我们探讨的问题。

  1. 加不加都行的情况

(千字长文)Vue核心基础解析_html_11

  1. 假如函数需要接受一个参数的情况,如果加括号传入的是undefined,不加则传入的是事件对象。

(千字长文)Vue核心基础解析_html_12

  1. 既需要event对象又需要自定义参数的情况

(千字长文)Vue核心基础解析_vue.js_13

有些时候,我们拿到event的目的可能是进行一些事件处理,vue提供的这些修饰符就是来帮助我们方便的处理一些事件。

  • .stop -阻止事件冒泡,调用event.stopPropagation()

(千字长文)Vue核心基础解析_html_14

  • .prevent - 调用event.preventDefault() 阻止默认事件的触发

(千字长文)Vue核心基础解析_数据_15

  • keyup:键盘弹起触发事件
  • keyup.enter:输入回车才会触发事件
  • .once点击回调只会触发一次

v-if后面的条件为false的时候,对应的元素及其子元素不会渲染,v-else后面不用加条件。

(千字长文)Vue核心基础解析_javascript_16

所谓的input复用问题就是切换input后,用户原本输入的值还在。解决方案就是给每一个input添加key属性。


  1. 不渲染时是否在DOM中

  • v-if如果条件为false时,对应的元素就不会存在与DOM中。
  • v-show如果条件为false的时候,仅仅是将元素的diplay属性置为none。

  1. 如何选择

  • 如果需要频繁的进行显示和隐藏,使用v-show。
  • 如果只有一次切换的情况,使用v-if。



  1. push
  2. pop
  3. shift
  4. unshift
  5. splice
  6. sort
  7. reverse

  1. 通过下标修改元素。

v-model主要用来实现双向数据绑定。

v-model其实是一个语法糖,背后的本质包含了两个操作。


  1. v-bind绑定一个value属性。
  2. v-on指令给当前元素绑定input事件。

(千字长文)Vue核心基础解析_前端_17

单个checkbox

多个checkbox的情况

(千字长文)Vue核心基础解析_前端_18

只能选择一个的情况。

(千字长文)Vue核心基础解析_数据_19

可以选择多个的情况。

(千字长文)Vue核心基础解析_vue.js_20

  1. lazy修饰符

lazy修饰符可以让数据在失去焦点或者回车时才会更新。

  1. number修饰符

number修饰符可以让输入框汇中的内容自动转换为数字类型。

  1. trim修饰符

trim修饰符可以过滤内容两边左右的空格。

  1. 创建组件构造器
  1. 注册组件
  1. 使用组件

如果使用驼峰命名法注册组件的时候,在使用组件的时候需要使用分割线进行分割,否则会报错。

(千字长文)Vue核心基础解析_javascript_21


  • 全局组件:意味着可以在多个Vue实例下面使用
  • 局部组件:只能在某个Vue实例中使用

(千字长文)Vue核心基础解析_html_22

  • 注册全局组件的语法糖写法
  • 注册局部组件的语法糖写法
  1. 通过script标签

(千字长文)Vue核心基础解析_html_23

  1. 通过template标签

(千字长文)Vue核心基础解析_javascript_24

组件中的data需要是一个函数通过return的形式返回。

组件data必须是函数主要是为了防止不同函数实例操作相同的数据,组件复用希望复用的是功能,而不是数据复用。

  1. 通过props
  • 数组形式

(千字长文)Vue核心基础解析_数据_25

  • 对象形式(可以指定传入的类型,或指定默认值)

(千字长文)Vue核心基础解析_前端_26

调用默认值的时机就是调用组件的时候没有传参,但是模板中却使用了这个参数,此时就会使用默认参数。如果默认参数是数组或者函数,default必须是一个函数的形式。

下面的写法是不支持的

(千字长文)Vue核心基础解析_html_27

但是支持下面的写法

(千字长文)Vue核心基础解析_html_28

比如props想使用的参数名是ChildMyMessage,在组件调用进行v-bind绑定的时候需要写成:child-my-message

主要是通过子组件中调用$emit方法将事件传递给父组件,父组件通过v-on监听这个事件并调用自己的函数。

  • 父组件访问子组件

通过$children

(千字长文)Vue核心基础解析_html_29

通过$refs

(千字长文)Vue核心基础解析_html_30

  • 子组件访问父组件

使用$parent

(千字长文)Vue核心基础解析_vue.js_31

  • 任意组件访问根组件

通过$root

(千字长文)Vue核心基础解析_javascript_32

在Vue中最好的封装方式就是将共性抽取到组件中,将不同暴露为插槽,一旦预留了插槽,就可以让使用者根据自己的需求来决定插槽中插入的什么内容。

插槽的基本用法

(千字长文)Vue核心基础解析_前端_33

插槽的默认值:在调用组件的时候,如果不指定插槽内容的时候显示的结果

(千字长文)Vue核心基础解析_前端_34

具名插槽slot的使用

(千字长文)Vue核心基础解析_html_35

vue中查找变量是往上查找。

(千字长文)Vue核心基础解析_vue.js_36

主要是让父组件获取到子组件插槽对应的数据。

(千字长文)Vue核心基础解析_html_37

所谓的watch监听指的就是监听一个属性是否发生变化,如果发生变化则触发响应的函数。

(千字长文)Vue核心基础解析_javascript_38

  1. 安装插件
  1. 修改标签

(千字长文)Vue核心基础解析_数据_39

(千字长文)Vue核心基础解析_前端_40

这个生命周期函数是在页面加载的时候运行的。

scoped关键字可以让css样式只适用于局部vue组件。

(千字长文)Vue核心基础解析_javascript_41

主要是通过传递this。

(千字长文)Vue核心基础解析_数据_42

所谓的props验证指的是对传入的props进行校验。

(千字长文)Vue核心基础解析_vue.js_43

所有的prop都使得其父子prop之间形成了一个单向下行绑定:父级prop的更新会向下流动到子组件中,但是反过来则不行,这样会防止子组件意外变更父组件的状态,从而导致你的应用的数据流向难以理解。另外,每次父级组件发生变更的时候,子组件中所有的prop都将会更新为最新的值,这意味着不应该在一个子组件内部改变prop,如果这样做了,Vue会在浏览器的控制台发出警告。


  1. 调用子组件的时候传入一个ref属性。
  2. 通过this.$refs.xxx.属性 获取数据。
  3. 通过this.$refs.header.方法执行子组件中的方法。




  1. 子组件通过this.$parent.数据 获取父组件的数据。
  2. 子组件通过 this.$parent.方法 主动执行父组件中的方法。



实例分析

  1. 父组件中的自定义事件是fatherEvent,父组件中的方法是hello。
  1. 子组件通过$emit触发并进行传参。

(千字长文)Vue核心基础解析_vue.js_44

  1. 首先安装emitt插件
  1. 定义函数并暴露对象
  1. 需要发送数据的组件,广播事件
  1. 需要接收数据的组件,监听事件

首先明确下组件之间的结构,Home组件中包含Input组件,Input组件时Home组件的子组件。keyword是Home组件中的数据。

  • Home组件
  • Input组件

所谓的非prop的Attribute属性继承指的是,如果传入的一个属性,在子组件中并未声明接收,这个属性将被子组件的根标签继承,让我们一起来看下下面的例子。

(千字长文)Vue核心基础解析_前端_45

自定义Attribute继承,可以禁用默认继承,并指定哪些元素可以继承。

(千字长文)Vue核心基础解析_前端_46

到此这篇vue 组件插槽(vue插件使用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!








版权声明


相关文章:

  • jsz是哪个明星的缩写(jsy是哪个明星的缩写)2026-03-18 12:27:04
  • ubuntu 20.04镜像(ubuntu2004镜像iso下载)2026-03-18 12:27:04
  • Redhat9.4安装(redhat9.4安装要求)2026-03-18 12:27:04
  • cjson库内存泄露(cjson内存泄漏)2026-03-18 12:27:04
  • json字符串转map(Json字符串转map)2026-03-18 12:27:04
  • vue2生命周期函数(vue中生命周期函数)2026-03-18 12:27:04
  • 61850报文解析工具(376.1报文解析)2026-03-18 12:27:04
  • ubuntu镜像文件可以删除吗(ubuntu18.04镜像文件)2026-03-18 12:27:04
  • jsj是哪个男明星(jsy是哪个男明星的缩写)2026-03-18 12:27:04
  • jsjsj是什么意思(jsj是什么的缩写)2026-03-18 12:27:04
  • 全屏图片