。。。

181 阅读3分钟
  1. vue的自定义指令

  2. v-if和v-show的区别  为何v-for中要用key

  3. 描述Vue组件生命周期(有父子组件情况)

  4. components的挂载和原理

  5. Vue组件间的通信

  6. 描述组件渲染和更新的过程

  7. 双向数据绑定 v-model的实现原理

  8. slot插槽

  9.  双向数据绑定的原理 如何手动实现双向数据绑定 

  10. vue-router模式以及原理 跳转方式以及区别 比如params的参数为什么一刷新就获取不到了 

  11. vuex 各种写法 

  12.  路由的懒加载 按需加载 

  13. vue的过滤器 

  14. computed和watch的区别 

  15. vue.mixin 

  16. 路由的导航钩子以及调动的方法 顺序 

  17. 基于vue设计一个购物车 (vuex setState结构)

  18. vue如何配置开发环境和生产环境 

  19. vue的在代码里面可以做哪些的性能优化 vue的自定义指令 vue里面的指令 v-if v-show v-model v-for等等 

  20. 虚拟DOM(Virtual DOM)和 diff

  21. 做项目时候哪些安全优化

基本使用

插值 {{}}
表达式 {{flag ? 1 :  0}}
指令、动态属性
<p :id="id">动态属性id</p>  // id在data中定义
v-html:会有XSS风险,会覆盖子组件

1.Vue的自定义指令

注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。

// 全局 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})

// 局部
directives: {
  focus: {
    // 指令的定义
    inserted: function (el) {
      el.focus()
    }
  }
}

// 在模板中使用
<input v-focus>


el:指令所绑定的元素,可以用来直接操作 DOM。
binding:一个对象,包含以下 property:name:指令名,不包括 v- 前缀。
value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2。
oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否
改变都可用。
expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"
arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"。
modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true,
 bar: true }。
vnode:Vue 编译生成的虚拟节点。
oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

2.v-if和v-show的区别 为何v-for中要用key

切换的比较频繁用v-show 用display控制显示隐藏

一次性选择渲染用v-if 删除DOM节点控制显示隐藏

v-for时候一定要用key v-for和v-if不建议在同一个标签上使用 因为v-for比v-if的计算优先级高一些 key需要用一个唯一值

3.描述Vue组件生命周期(有父子组件情况)

4.components的挂载和原理

5.Vue组件间的通信

6.描述组件渲染和更新的过程

7.双向数据绑定 v-model的实现原理

8.Slot插槽

9.双向数据绑定的原理 如何实现双向数据绑定

10.vue-router模式以及原理11.vuex12.路由的懒加载和按需加载13.vue的过滤器

14.computed和watch的区别

  • computed有缓存,data不变不会重新计算
  • watch如何深度监听?
  • watch监听引用类型,拿不到oldValue

data() { info: { name: "1111" } }, watch: { info(){ handle: function(oldValue, newValue){ // 拿不到oldValue }, deep: true // 深度监听 } }

20.虚拟DOM(Virtual DOM)和 diff

vdom是实现vue和react的基石
diff算法是vdom最核心 最关键的部分


DOM操作非常耗费性能
用jQuery的时候,可以控制DOM控制的时机,手动调整
Vue和React都是数据驱动视图,如何有效控制DOM?
    解决方案: 更多的转为JS计算,因为JS计算比较快
Vdom--用js模拟DOM结构,计算出最小的变更,操作DOM