Vue学习知识笔记整理

1.框架和库的区别

框架:是一套完整的解决方案; 侵入性大 (更换框架,需要重新架构整个项目)
库(插件):提供某一个小功能;侵入性小 (某个库无法完成,很容易切换另一个库)

2. 事件修饰符

.stop阻止冒泡
.prevent 阻止默认事件
.captaure添加时间侦听器使用事件捕获模式
.self只当事件在该元素本身 触发回调
.once事件只触发一次
顺序:捕获--目标--冒泡

3.vue指令 必须v-开头

插值表达式

	v-model
		绑定数据  只能用于表单元素(输出元素上)
		双向绑定:数据不仅从data流向页面 还能从页面流向data
		v-model:value 简写为 v-model (因为v-model默认收集value值)
	v-bind
		单向绑定:只能从data流向 页面
		简写为 ‘:’
	v-for循环对象
		循环data中的内容 id:1这类 key就是id  val是1
		使用key的注意事项:
			v-for循环的时候,key属性只能使用number获取string
			key在使用的时候,必须使用v-bind属性绑定的形式,指定key的值
			在组件中使用v-for循环的时候,或者在一些特殊情况中,如果v-for有问题,必须使用v-for的同时,指定唯一的字符串/数字 类型:key值
		in后面我们放过 普通数组,对象数组,对象,还可以放数字
		注意:如果使用v-for迭代数字的话,前面count值从1开始历遍
	v-if v-show
		v-if特点:每次都会重新删除或创建元素
			有较高的切换性能消耗(元素涉及到频繁的切换,最好不要使用v-if)
		v-show特点:每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none样式
			有较高的初始渲染消耗(如果元素可能永远不会被显示出来被用户看到,则推荐v-if)

自定义指令

	定义不用加v-
	使用需要加v-

eval(string) 不建议使用!

函数会将传入的字符串当做 JavaScript 代码进行执行。
	eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval() 就会执行这些语句。不需要用 eval() 来执行一个算术表达式:因为 JavaScript 可以自动为算术表达式求值
	如果 eval() 的参数不是字符串, eval() 会将参数原封不动地返回。
		可以使用一些通用的方法来绕过这个限制,例如使用 toString()
缺点
	eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。
	eval() 通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。

vue中绑定样式的两种方法

使用class样式
	1.数组
		直接传递数组,但是需要使用v-bind做数据绑定
			<h1 :class='[ 'xx'   ]'>
	2.数组中使用三元表达式
		使用三元表达式
			<h1 :class='[flag?'active':' ']'
	3.数组中嵌套对象
		代码更有可读性
			<h1 :class="['xx',{'active':flag}]">
	4.直接使用对象
内联样式绑定style
	注意:像font-size这样中间带-的需要加引号 ‘font-size’:60
	可以直接在p h1等上写也可以引用data中的

方法

    获取时间
		年getFullYear() 月getMonth 日getDate
			返回  return’ ${y}‘ -${m}-${d}'
			分秒 的’${y}-...... ${hh}:${mm}:${ss}‘
	some
		可以中止
		如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
		如果没有满足条件的元素,则返回false。
	findindex:查找索引
		只能查找比较单一,some可以内部进行操作
	splice:删除数组元素
		例子:this.list.splice(i,1);
		i是索引,1是删几个
	indexOf() :可返回某个指定的字符串值在字符串中首次出现的位置
	.foreach:循环的结果是数组每一项的值
	过滤器
		mustachc插值
		v-bind表达式
		filter:过滤
			filters(有s的)私有的过滤器,写在组件中的,过滤器调用的时候,采用的是就近原则,
			如果私有过滤器和全局过滤器名称一致,这时候优先调用私有过滤器
			使用
				定义:Vue.filter('过滤器名称',function(){})
					过滤器function第一个参数已经规定死了,永远是管道前传递过来的数据
					replace方法 第一个参数除了可写一个字符串之外还可以定义一个正则表达式       /xx/g
				调用:{{ name | 过滤器名称}}   (  | 是过滤器管道  )
	object
		object.definproperty
			给对象定义添加属性
			写法:object.definproperty(对象,'属性名',参数(配置项))
				参数不可被枚举 修改 删除
				想要参数枚举 添加: enumerable:true 默认为false
				想要修改 添加 : writable:true
				想要删除 添加 : configurable:true
			get函数(当有人读取对象的xx属性时,个体函数即getter就会被调用,且返回值就是xx属性的值)
			set函数(当修改对象的xx属性时,set函数就会被调用即setter就会被调用,且会收到修改的具体值)
			数据代理
				一个对象代理对另一个对象中属性的操作(读/写)
				通过get set 把data中数据传入vm 中成_data(数据劫持)在这里插入代码片
		object.keys(对象名)
			提取成数组
	获取焦点focus
	统一字符串小写 方法名.toLowerCase() ==='待统一的字符串 '

生命周期

创建期间的生命周期函数
	beforeCreate(){}  这是我们遇到的第一个生命周期函数    表示实例完全被创建之前会执行它
		注意:再beforeCreate生命周期函数执行的时候,data和methods 中的数据都还没有初始化
	created(){}   在created中 data methods已经被初始化好了。 如果要调用methods中的方法或data中的数据时 ,最早只能在created
	before Mount(){}  这是遇到的第三个生命周期函数 表示模板已经在内存中编辑完成了 但是尚未把模板渲染到页面中
	mounted 数据绑定完成,真实 DOM 已挂载到页面,vm.$el可获取真实 DOM
运行期间的生命周期函数
	beforeUpdate 数据更新,DOM Diff 得到差异,未更新到页面
	updated 数据更新,页面也已更新
销毁期间生命周期函数
	beforeDestroy  实例销毁前
	destroyed 实例销毁完成

computed和methods区别

多次使用时:methods每次都会调用                   
computed:计算机会缓存,不变的情况只调用一次 (computed 只考虑读取不考虑修改的时候 才能用简写形式)

watch和computed

区别:
1.computed能完成的功能,watch都能实现
2.watch能完成的功能,computed不一定能完成。例如:watch可以进行异步操作
原理:
	computed比较依靠return的结果 不能使计算结果有延迟  即不能开启异步任务
	watch不依赖于输出结果  可以开启异步任务
	同时能实现时优先使用computed
重要小原则:
1.所有被Vue管理的函数,最好写成普通函数,这样this指向的是vm
2.所有不被Vue管理的函数(定时器的回调函数,ajax的回调函数,promise函数等),最好写成箭头函数,这样this的指向才是vm或者组件实例对象,而不是window
总结:目的都是为了让this指向vm

el和data多种写法

el
	var x =newVue({    el:'xxx', data:{name:'xx'} })
	const x=new Vue({    data:{name:'xx'} }) console.log(x) x.$mount('#xxx')
data
	data:{name:'xx'}
	data:function(){     return {name:'xxx'}}

Mvvm

M 模型model :对应data中的数据
V 视图View :模板
VM:视图模型(vieModel):Vue实例对象

按键事件

1.常用
	tab是特殊的 需要搭配keydown使用
2.vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意转为kebab-case(短横线命名)
3.系统修饰键(用法特殊):ctrl、alt、shift、meta  
	1)配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
	2)配合keydown使用:正常触发事件
4.也可以使用keycode去指定具体的按键(不推荐的方法)
5.Vue.config.keyCode.自定义键名 = 键码 ,可以去定制按键别名

监视属性watch

handler(回调函数)
	immediate:初始化时让handler调用一下
写法
	vm.$watch('被监测对象',{     })
		创建实例时,不明确监测对象是谁,通过用户的行为来监视 来调用api
	watch:{ 被监测对象:{      } }
		创建时明确监视对象是谁
当监视属性变化时,回调函数自动调用,进行相关操作
监视属性必须存在,才能进行监视
深度监视   (监视多级结构所有属性的变化)
	vue中的watch默认不监测内部值的改变(一层)
	配置deep:true 可以监视对象内部值的改变(多层)
	vue自身可以监测对象内部值的变化而watch默认不行
	使用watch时根据数据的具体结构,决定是否采用深度监视
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值