router和route的区别

router为VueRouter的实例,相当于一个全局的路由器对象,里面含有很多属性和子对象,例如history对象。。。经常用的跳转链接就可以用this.$router.push,和router-link跳转一样。

route相当于当前正在跳转的路由对象。。可以从里面获取name,path,params,query等

vue-router有几种钩子函数?

1.全局路由
全局导航钩子主要有两种钩子:前置守卫(beforeEach)、后置钩子(afterEach)
2. 路由独享的钩子
单个路由独享的导航钩子,它是在路由配置上直接进行定义的

  1. routes: [
  2. {
  3. path: '/file',
  4. component: File,
  5. beforeEnter: (to, from ,next) => {
  6. //do something
  7. }
  8. }
  9. ]
  1. 组件内的导航钩子
    组件内的导航钩子主要有这三种:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。他们是直接在路由组件内部直接进行定义的。
    ps:详细知识点可以点击路由导航守卫查看;

    vue-router路由跳转方式

    声明式(标签跳转)
    1. <router-link :to="{name:'home'}"></router-link>
    2. <router-link :to="{path:'/home'}"></router-link>
    编程式( js跳转)
    this.$router.push('/home')
    this.$router.push({name:'home'})
    this.$router.push({path:'/home'})
    

    vue-router路由传参

    router-link 进行页面按钮式路由跳转传参
    this.$router.push进行编程式路由跳转传参

    keep-alive了解吗

    < keep-alive >是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。
    < keep-alive > 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

    Vuex是什么?怎么使用?

    Vuex是实现组件全局状态(数据)管理的一种机制,可以方便实现组件数据之间的共享;Vuex集中管理共享的数据,易于开发和后期维护;能够高效的实现组件之间的数据共享,提高开发效率;存储在Vuex的数据是响应式的,能够实时保持页面和数据的同步;
    Vuex重要核心属性包括:state,mutations,action,getters,modules.

state
Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态,不可以直接修改里面的数据。

mutations
mutations定义的方法动态修改Vuex 的 store 中的状态或数据。

action
actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。

getters
类似vue的计算属性,主要用来过滤一些数据。

modules
项目特别复杂的时候,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。
ps:详细使用和对其各属性的理解可以参考以下文章!
认识vuex和使用
核心概念State和Mutation的理解和使用
核心概念Action和Getter的理解和使用

什么情况下使用 Vuex?

如果应用够简单,最好不要使用 Vuex,一个简单的 store 模式即可;
需要构建一个中大型单页应用时,使用Vuex能更好地在组件外部管理状态;

Vuex和单纯的全局对象有什么区别?

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

为什么 Vuex 的 mutation 中不能做异步操作?

每个mutation执行完成后都会对应到一个新的状态变更,这样devtools就可以打个快照存下来,然后就可以实现 time-travel 了。如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。