VUE复习

什么是Vue

基于MVVM设计模式的渐进式的纯前端js框架
(1). MVVM?
(2). 渐进式: 不要求整个项目都用vue做,可以轻松和别的技术混搭,且会多少就可以先用多少!
(3). 纯前端js框架: 与nodejs无关!单靠浏览器就可运行!
(4). 框架:

vue模板中常用指令

条件渲染:v-show v-if v-else v-else-if
元素节点渲染 v-text v-html
循环渲染 v-for
行为绑定 v-on v-bind v-model v-slot v-pre v-cloak v-once

v-for遍历对象

<div id="app">
  <!--希望遍历data中一个对象的每个属性,反复生成多个相同结构的HTML元素-->
  <ul>
    <li v-for="(value,key) of ym" :key ="key">{{key}} : {{value}}</li>
  </ul>
</div>
<script>
var vm=new Vue({
  el:"#app",
  data:{
    ym:{
      math:89,
      chs:69,
      eng:91
    }
  }
})
</script>

为什么v-for必须加:key

如果给每个元素都绑定:key="i"属性,则每个HTML元素上都有一个【唯一的标识】key=“0” key=“1” … 。【当将来修改了数组中每个位置的元素时,只需要修改对应key的HTML元素即可】,其他HTML元素保持不变!——效率高!

vue中splice的坑

坑: 如果v-for遍历的是数组时,在程序中通过下标修改数组元素值,页面上的HTML元素不会自动更改!
比如: this.teachers[0]=“燕儿” 页面上是不会变的!

原因:因为数组中的数字类型的下标012…【无法添加访问器属性,也就不受监控】!

解决: 今后,vue中修改数组中的元素值!必须用【数组家函数!才能自动更新页面。因为函数都是受监控的】。
比如: this.teachers.splice(0,1,“燕儿”)
删除0位置的1个元素,再在0位置放入"燕儿"
结果: 页面会自动变化!

过滤器

Vue.js 允许你自定义过滤器,可被用于一些【常见的文本格式化】。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

html中

<!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
选项对象中定义局部过滤
filters: {
  capitalize: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
}
或者在创建 Vue 实例之前全局定义过滤器:
Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})

new Vue({
  // ...
})

r o u t e r 与 router与 routerroute的区别

r o u t e 是 一 个 跳 转 的 路 由 对 象 , 每 一 个 路 由 都 会 有 一 个 r o u t e 对 象 , 是 一 个 局 部 的 对 象 。 可 以 获 取 对 应 的 n a m e 、 p a t h 、 q u e r y 、 p a r a m s 等 ( < r o u t e r − l i n k > 传 的 参 数 由 t h i s . route是一个跳转的路由对象,每一个路由都会有一个 route 对象,是一个局部的对象。可以获取对应的 name、path、query、params 等(<router-link>传的参数由 this. routeroutenamepathqueryparams<routerlink>this.route.query或者 this.$route.params 接收)

r o u t e r 为 通 过 V u e . u s e ( V u e R o u t e r ) 和 V u e R o u t e r 构 造 函 数 得 到 的 一 个 r o u t e r 的 实 例 对 象 , 这 个 对 象 是 一 个 全 局 的 对 象 。 想 要 导 航 到 不 同 U R L , 则 使 用 router为通过 Vue.use(VueRouter) 和 VueRouter 构造函数得到的一个 router 的实例对象,这个对象是一个全局的对象。想要导航到不同 URL,则使用 routerVue.use(VueRouter)VueRouterrouterURL使router.push方法;返回上一个 history 也是使用$router.go方法

set(value)和get()方法

先说明一下 set方法是监视,是监视,是监视.
get方法是读取方法中返回的值,

生命周期钩子函数

beforeCreate是获取不到props子组件或者data中的数据

created钩子函数:可以访问到之前不能访问的数据,但是组件还没有被挂载【能访问但是看不到】

beforeMount钩子函数: vue实例的el和data都初始化完了,但是挂载的还是虚拟DOM

mounted 钩子函数: 实例挂载完成,数据渲染成功

beforeUpdate /updated钩子函数: 分别在数据更新前和更新后会调用。

beforeDestroy钩子函数: vue 实例已经解除了事件监听以及dom 的绑定,但是dom 结构依然存在

destroyed钩子函数: 所有子组件都销毁完毕后才会执行根组件的 destroyed 钩子函数。

computed 和 watch 区别

computed 是计算属性,【依赖其他属性计算值】,并且 computed 的值【有缓存】,只有当计算值变化才会返回内容。

watch 【监听到值的变化就会执行回调】,在回调中可以进行一些逻辑操作。

v-show 与 v-if 区别

v-show : 只是在 display: none 和 display: block 之间切换 .DOM 还是一直保留着的, 更适合于频繁切换的场景。

v-if : 切换条件时会【触发销毁/挂载组件】,所以总的来说在切换时开销更高,更适合不经常切换的场景。

组件中 data 什么时候可以使用对象

组件复用时所有组件实例都会共享 data,将 data 写成函数,每次用到就调用一次函数获得新的数据

指令keep-alive

把切换出去的【组件保留在内存中】,可以【保留它的状态或避免重新渲染】。为此可以添加一个keep-alive指令

<component :is='curremtView' keep-alive></component>

Vue.nextTick( [callback, context] )

在下次 【DOM 更新循环结束之后】执行【延迟回调】。

props

props 可以是数组或对象,用于接收来自父组件的数据。

vue的实例的方法

共三类方法:
作用于数据的方法(3个): vm.$watch   vm.$set   vm.$delete
作用于属性的方法(3个):vm.$on  vm.$once  vm.$off  vm.$emit
作用于生命周期的方法(3个):vm.$mount   vm.$forceUpdate   vm.$nextTick  vm.$destroy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值