前端面试积累Day three

88 阅读4分钟

Vue的路由跳转方式有哪些?

参考:www.php.cn/vuejs/48346…
Vue的路由跳转方式主要两种:声明式路由 和 编程式路由。

  1. 声明式路由
    核心:router-link
    Hash模式: 在URL中始终会有一个/#/hash_value。所以不美观,可能也不符合某些url的规范。但是这种模式能够满足大部分的情况,包括一些低版本的浏览器,IE等。而且它还有一个特点就是,前端内容也会根据url中的hash_value进行组件内容的变化,而且进行完路由跳转之后,刷新页面页面还在。
    History模式:在URL中不会有一个#字符存在,所以比较美观。但是它只能应用于满足H5的一些浏览器当中(pushState和replaceState)。使用这种模式进行路由跳转之后,刷新页面页面报错404。

  2. 编程式路由
    核心:

     this.$router.push() -->向history栈中添加一个记录。点击回退会返回上个页面。
     this.$router.replace() -->不会在history栈中添加记录,点击返回就是直接返回上上个页面。相当于直接替换了当前的页面。  
     this.$router.go(n) --> n可为正整数或者负整数,表示向前或向后跳转n个页面。  
    

(query参数和params传递参数的区别)

  1. query传递参数类似于get,跳转后直接在url后面拼接一个?参数,所以不适合传递密码等关键信息,刷新页面的时候参数还在。
  2. params传递参数类似于post,跳转之后不会再url上拼接?参数。刷新页面之后参数就消失了。

JS中let、var和const的区别

  1. 全局作用域
    var和let声明的变量在全局作用域中被定义时,两者非常相似,但是被let生命的变量不会作为全局对象window的属性,而被var声明的变量可以作为全局对象window的属性。
    --> window.variable_let 不可以
    --> window.variable_var 可以
  2. 函数作用域
    var和let在函数作用域声明一个变量,两个变量的意义是相同的。
  3. 块作用域
    在块作用中,var和let的区别比较明显,let旨在for()循环中可用,但是var在包围for()循环的整个函数体都是可用的。
  4. let和var的重新声明
    var允许在同一作用域中声明同名的变量,而let不可以。
  5. const
    const和let都是在声明的块作用域中有效,而且const从一开始定义就要初始化赋值,不能留到之后再进行赋值操作,还有就是const定义的基本类型无法修改,const定义的对象可以通过修改对象的对象属性的方式对const的对象进行修改。

Vue的生命周期

Vue的生命周期就是Vue实例从创建到销毁的过程就是生命周期。即指的是从创建、初始化数据、编译模板、挂载Dom到渲染、更新到渲染、销毁等一系列过程。它主要分为八个阶段,创建前后、载入前后、更新前后和销毁前后以及一些特殊场景的生命周期。

  1. beforeCreate 组件实例创建之初 (执行时组件实例还未创建,通常用于插件开发时执行一些初始化任务)
  2. created 组件实例已经完全创建 (组件初始化完毕,各种数据可以使用,常用于异步获取数据)
  3. beforeMounted 组件挂载之前 (未执行渲染更新,dom未创建)
  4. mounted 组件挂载到实例上去之后 (初始化结束,dom已经创建,可以获取访问数据及dom元素)
  5. beforeUpdated 组件数据发生变化,更新之前 (更新前,可用于获取更新前的各种状态)
  6. updated 组件数据更新之后 (更新后,所有状态已经是最新了)
  7. beforeDestroy 组件实例销毁之前 (销毁前,可用于一些定时器或者订阅的取消)
  8. destroyed 组件实例销毁之后 (组件完全销毁之后,作用同上)
  9. activated keep-alive缓存组件激活时
  10. deactivated keep-alive缓存组件停用时调用
  11. errorCaptured 捕获一个来自子孙组件的错误时调用