手写vue全家桶

143 阅读1分钟

一.vue-router原理

1.遇到的问题

(1)获悉url的变化

(2)页面要更新渲染新内容

(3)不离开当前页面

2.解决思路

(1)利用hash(超链接后加#),hash变的时候url其实是不变的 监听hashchange事件,把路由与配置匹配,把对应的组件作为参数调用render方法渲染到vouter-view的位置上,

必备基础知识

(2)利用h5提供的historyAPI,url变化,但不跳转 必备基础知识

二.vuex原理

1.视图和storage实例需要双向数据传递

(1)首先storage实例提供state存储数据,视图可以通过state.xxx访问数据。视图通过commit(t)、dispatch(t)方法更新数据,所以实例中有commit和dispatch方法通过参数找到对应的mutation和action同步和异步改变state中的数据。

(2)state中数据变化需要同步render到视图,所以数据需要是响应式的,使用vue即可,所以vuex和vue是强耦合的

三.实现前的准备

1.vue-plugin

3.vue.util.defineReactive/new Vue({data(){return{}}})

4.Es6 class

四.开始实现

1.vue-router

回顾:

使用vue-router四步

(1)使用vue-router插件

import Router from 'vue-router'
Vue.use(Router)

(2)创建Router实例

export default new Router({...})

(3)在根组件上添加该实例

import router from './router' 
new Vue({ 
    router, 
}).$mount("#app");

(4)添加路由视图

<router-view></router-view>
  • 导航
<router-link to="/">Home</router-link>
或
this.$router.push('/')

思考:

(1)vue.use(router)中到底做了些什么

(2)为什么在配置项中加入router实例

(3)router-view的作用

(4)跳转如何实现内容更新,页面不刷新

实现:

b站视频,后续加

必备基础知识