VUE基础知识

Vue组件存在的缺点

1、全局定义:每个组件的命名不可重复
2、字符串模板:缺乏语法高亮,可读性较差

vue组件的三大核心概念:属性、事件、插槽

(1)属性
  • 自定义属性:在组件props中声明的变量
  • 原生属性:没有声明的属性,默认自动挂载
  • 特殊属性class、style、ref、key:挂载到组件根元素上,支持字符串、对象、数组等多种语法。最终均会生成字符串挂载到DOM元素上。

属性书写方式

  • 1、数组罗列的方法,对系统后续维护不利
props:["type","name",...]
  • 2、通过对象的模式,给出类型,自定义校验以及默认值。
list:{
	type:Boolean,
	default:false
}

属性时单向数据流,不可在子组件更改父组件传递的值,可通过onChange方法修改。

(2)事件
  • 1、普通事件:一般的@click input change……等事件,在子组件中通过this.$emit(“XXX”)触发。
  • 2、修饰符事件:@input.trim @click.stop(阻止冒泡) submit.prevent等,用于原生的HTML元素
(3)插槽

插槽是组件的一块HTML模板,其显示与否由父组件决定。

  • 1、通过slot 的形式加载父组件传递过来的组件
  • 2、作用域插槽
//父组件
<template>
  <div class="father">
    <h3>这里是父组件</h3>
    <!--第一次使用:用flex展示数据-->
    <child>
      <template slot-scope="user">
        <div class="tmpl">
          <span v-for="item in user.data">{{item}}</span>
        </div>
      </template>
    </child>
  </div>
</template>
//子组件
<template>
  <div class="child">
    <h3>这里是子组件</h3>
    // 作用域插槽
    <slot  :data="data"></slot>
  </div>
</template>

 export default {
    data: function(){
      return {
        data: ['1','2','3','3','4','5']
      }
    }
}

通过父组件传递给子组件的内容,让子组件去执行相应的行为。

双向绑定和单向数据流

  • 1、双向绑定:model与view的相互更新(语法糖)
  • 2、单向数据流:model更新触发view的更新

虚拟DOM

同层比较的机制,同一层级的一组节点可以使用唯一的id进行区分。

当页面数据发生改变的时候,如果节点类型不同,则直接删掉前面的节点,创建并插入新的节点,如果节点类型相同,则重新设置相应的属性,进行节点的更新。

key属性的引用(相同节点的移动,key的存在使得节点可以移动而不用删除)

组件更新

  • 1、vue实例化时会对data下的数据进行getter,setter转化,组件render时,会通知watcher进行更新。
  • 2、计算属性:减少模板中的计算逻辑,数据缓存,依赖响应式数据类型。

当数据有变化时才会触发计算属性computed,相对方法性能较好。

侦听器watch
尽量使用计算属性完成。

生命周期

  • 1、创建阶段
    beforeCreate:初始化事件和生命周期
    created:数据监测,属性和侦听器配置
    beforeMount:模板编译到render
    render
    mounted:异步请求,操作DOM(this.$nextTick)
  • 2、更新阶段
    数据变化或强制更新 - beforeUpdate -移除已经添加的事件监听器 - render - updated (不可更改依赖数据)
  • 3、销毁阶段
    beforeDestory - 移除已经添加的事件监听器

指令

	v-text
	v-html
	v-show
	v-if v-else-if v-else
	v-for
	v-bind(:)
	v-on(@)
	v-model
	v-pre:绕过`{{}}`编译直接输出字符串
	v-once:绑定的变量只会解析一次
	v-cloak
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值