乐趣区

关于javascript:我遇到的面试题记录

最近在找工作,记录一下遇到的面试题和我整顿后的答案。

  • vue

1、vue-router 晓得吗?有哪几种不同的模式?
https://www.jianshu.com/p/4c5…
https://www.jianshu.com/p/557…
https://blog.csdn.net/weixin_…

vue-router
vue-router 就是 vue 深度集成的单页面利用的门路管理器,在 vue 的单页面利用中,由它建设起 url 和页面的映射关系。

hash/history
vue-router 在实现单页面利用前端路由时,提供了两种形式:hash 和 history,依据 mode 参数来决定采纳哪一种。
hash 模式

  • url 里会带 #号,#号是 url 的的锚点,代表页面的一个地位,vue-router 组件跳转的时候只扭转# 号后的局部,所以不会向后端发送申请和从新加载页面,只会对 dom 的指定地位进行渲染。
  • 每次扭转 #号后局部,浏览器会在历史列表中新增一条记录,所以按后退会返回上一个地位。
  • hash 模式的实质原理是 wendow 的 onhashchange 工夫,利用它来监控 url hash 的扭转来更新组件渲染。

history 模式

  • url 里不带 #号。
  • 原理是利用了 h5 中的 pushState 或 replaceState api,实现了只在浏览器历史中新增记录,扭转 location 地址栏后不从新向服务器申请的性能。
  • 但这个模式下刷新页面时会发申请,服务器如果须要非凡配置来防止返回 404。

2、说一下 vue 外面的组件传参。
https://www.jianshu.com/p/85b…
① 父组件传递给子组件:

  • 父组件通过组件标签内冒号参数名(:paramsName)传递,子组件通过 props 参数接住。
  • 子组件内调用 this.$parent.paramsName 间接拜访父组件参数 / 办法

② 子组件传递给父组件

  • 通过事件传递 this.$emit()
  • 父组件通过 this.$refs 间接调用子组件参数
  • 父组件通过 this.$children[i] 间接调用子组件参数。

③ 兄弟组件传递

  • 通过事件总线传递(vue2 eventbus\vue3 mitt)
  • 通过 vuex 传递

3、说下 vue 组件的生命周期。
https://www.cnblogs.com/qidh/…
https://www.jianshu.com/p/410…

  • beforeCreate
    第一个生命周期函数,vue 实例初始化时调用这个函数,这时 data 和 methods 跟 dom 都没有初始化。
  • created
    vue 实例创立创立实现时调用这个函数,这时 data 和 methods 曾经能够用,但 dom 模板还没渲染。能够在这个阶段向后盾申请数据。
  • beforeMount
    挂载开始前被调用,dom 模板编译实现,用户能够看到模板页面,然而看不到真正的数据。
  • mounted
    dom 树残缺渲染到页面后调用,用户此时能够看到实在数据,组件创立阶段完结。这个阶段能够进行 dom 操作,能够初始化一些第三方 ui 插件。
  • beforeUpdate
    数据被更新时调用,然而未出现到页面上。
  • updated
    数据更新后虚构 dom 从新渲染后调用。
  • beforeDestroy
    实例被销毁前调用,组件 data、methods 等依然能够被失常拜访。
  • destroyed
    组件销毁实现后调用,data、methods 都不可应用了。

4、说一说 vue 的双向绑定。

退出移动版