Vue的路由和状态管理详细介绍及示例
一、Vue的路由(Vue Router)
Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 的核心深度集成,让构建单页面应用(SPA)变得易如反掌。以下是Vue Router的详细介绍及示例:
1. Vue Router的基本概念
- 路由:在Vue单页面应用中,路由用于设定访问路径,并将路径和组件映射起来。路由就是SPA的路径管理器,是WebApp的链接路径管理系统。
- route:表示当前路由信息对象,包含了URL解析得到的信息,以及URL匹配到的路由记录(route records)。
- router:是Vue Router的一个实例,这个实例是全局的,并且包含了所有的路由信息。
2. Vue Router的使用步骤
-
安装Vue Router:
bash
npm install vue-router
-
引入Vue Router并注册:
javascript
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
-
定义路由组件:
创建Vue组件,这些组件将作为路由的视图部分。 -
配置路由:
javascript
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
-
创建router实例:
javascript
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
});
-
创建和挂载根实例:
javascript
new Vue({
el: '#app',
router,
render: h => h(App)
});
-
在模板中使用:
使用<router-link>
组件来导航,<router-view>
组件来显示匹配到的组件。
3. Vue Router的示例
假设有两个组件Home.vue
和About.vue
,路由配置如下:
javascript
import Vue from 'vue'; | |
import Router from 'vue-router'; | |
import Home from './views/Home.vue'; | |
import About from './views/About.vue'; | |
Vue.use(Router); | |
export default new Router({ | |
routes: [ | |
{ | |
path: '/', | |
name: 'home', | |
component: Home | |
}, | |
{ | |
path: '/about', | |
name: 'about', | |
component: About | |
} | |
] | |
}); |
在模板中使用<router-link>
和<router-view>
:
html
<template> | |
<div id="app"> | |
<router-link to="/">Home</router-link> | | |
<router-link to="/about">About</router-link> | |
<router-view/> | |
</div> | |
</template> |
二、Vue的状态管理(Vuex)
Vuex 是 Vue.js 的官方状态管理库,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。以下是Vuex的详细介绍及示例:
1. Vuex的基本概念
- State:Vuex 使用单一状态树(Single Source of Truth),即一个对象就包含了全部的应用层级状态。
- Getter:允许组件从 Store 中获取数据,就像计算属性一样。
- Mutation:更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。
- Action:类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。
- Module:由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。为了解决这个问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割。
-
2. Vuex的使用步骤
-
安装Vuex:
npm install vuex
-
引入Vuex并注册:
javascript
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
-
创建store:
javascript
const store = new Vuex.Store({
state: {
count: 0