let Vue
class VueRouter {
constructor(options) {
this.$options = options
this.routeMap = {}
this.$options.routes.forEach(route => {
this.routeMap[route.path] = route
})
Vue.util.defineReactive(this, 'current', '/')
window.addEventListener('hashchange', this.onHashChange.bind(this))
}
onHashChange() {
this.current = window.location.hash.slice(1)
}
}
VueRouter.install = function (_Vue) {
Vue = _Vue
Vue.mixin({
beforeCreate() {
let router = this.$options.router
if (!router) return
Vue.prototype.$router = router
}
})
Vue.component('router-view', {
render(h) {
const { routeMap, current } = this.$router
return h(routeMap[current] ? routeMap[current].component : null)
}
})
Vue.component('router-link', {
props: {
to: {
type: String,
default: ''
}
},
render(h) {
return h('a', {
attrs: {
href: `#${this.to}`
}
}, this.$slots.default)
}
})
}
export default VueRouter
點擊查看更多內(nèi)容
1人點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦