Vue的路由跳转方式有哪些?
参考:www.php.cn/vuejs/48346…
Vue的路由跳转方式主要两种:声明式路由 和 编程式路由。
-
声明式路由
核心:router-link
Hash模式: 在URL中始终会有一个/#/hash_value。所以不美观,可能也不符合某些url的规范。但是这种模式能够满足大部分的情况,包括一些低版本的浏览器,IE等。而且它还有一个特点就是,前端内容也会根据url中的hash_value进行组件内容的变化,而且进行完路由跳转之后,刷新页面页面还在。
History模式:在URL中不会有一个#字符存在,所以比较美观。但是它只能应用于满足H5的一些浏览器当中(pushState和replaceState)。使用这种模式进行路由跳转之后,刷新页面页面报错404。 -
编程式路由
核心:this.$router.push() -->向history栈中添加一个记录。点击回退会返回上个页面。 this.$router.replace() -->不会在history栈中添加记录,点击返回就是直接返回上上个页面。相当于直接替换了当前的页面。 this.$router.go(n) --> n可为正整数或者负整数,表示向前或向后跳转n个页面。
(query参数和params传递参数的区别)
- query传递参数类似于get,跳转后直接在url后面拼接一个?参数,所以不适合传递密码等关键信息,刷新页面的时候参数还在。
- params传递参数类似于post,跳转之后不会再url上拼接?参数。刷新页面之后参数就消失了。
JS中let、var和const的区别
- 全局作用域
var和let声明的变量在全局作用域中被定义时,两者非常相似,但是被let生命的变量不会作为全局对象window的属性,而被var声明的变量可以作为全局对象window的属性。
--> window.variable_let 不可以
--> window.variable_var 可以 - 函数作用域
var和let在函数作用域声明一个变量,两个变量的意义是相同的。 - 块作用域
在块作用中,var和let的区别比较明显,let旨在for()循环中可用,但是var在包围for()循环的整个函数体都是可用的。 - let和var的重新声明
var允许在同一作用域中声明同名的变量,而let不可以。 - const
const和let都是在声明的块作用域中有效,而且const从一开始定义就要初始化赋值,不能留到之后再进行赋值操作,还有就是const定义的基本类型无法修改,const定义的对象可以通过修改对象的对象属性的方式对const的对象进行修改。
Vue的生命周期
Vue的生命周期就是Vue实例从创建到销毁的过程就是生命周期。即指的是从创建、初始化数据、编译模板、挂载Dom到渲染、更新到渲染、销毁等一系列过程。它主要分为八个阶段,创建前后、载入前后、更新前后和销毁前后以及一些特殊场景的生命周期。
- beforeCreate 组件实例创建之初 (执行时组件实例还未创建,通常用于插件开发时执行一些初始化任务)
- created 组件实例已经完全创建 (组件初始化完毕,各种数据可以使用,常用于异步获取数据)
- beforeMounted 组件挂载之前 (未执行渲染更新,dom未创建)
- mounted 组件挂载到实例上去之后 (初始化结束,dom已经创建,可以获取访问数据及dom元素)
- beforeUpdated 组件数据发生变化,更新之前 (更新前,可用于获取更新前的各种状态)
- updated 组件数据更新之后 (更新后,所有状态已经是最新了)
- beforeDestroy 组件实例销毁之前 (销毁前,可用于一些定时器或者订阅的取消)
- destroyed 组件实例销毁之后 (组件完全销毁之后,作用同上)
- activated keep-alive缓存组件激活时
- deactivated keep-alive缓存组件停用时调用
- errorCaptured 捕获一个来自子孙组件的错误时调用