<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue路由机制--简单基础路由</title>
</head>
<body>
<div id="app">
<!-- 基本原理 -->
<!-- 后端理由
概念:根据不同的用户URL请求。返回不同的内容
本质:URL请求 地址与服务器资源之间的对应关系
SPA:单页面应用程序:
SAP实现原理:基于URL地址的hash(hash的变化会导致浏览器记录访问历史
的变化。但是HASH的变化不会触发新的URL请求)
hash值就是:矛连接
前端理由:
概念:根据不同的用户事件。显示不同的页面内容;
本质:用户事件与事件处理函数之前的对应关系
前端路由负责事件监听。触发事件后。通过事件函数渲染不同的内容; -->
<!-- 实现简易前端路由 -->
<a href="#/zhuanye">主页</a>
<a href="#/keji">科技</a>
<a href="#/caijing">财经</a>
<a href="#/yule">娱乐</a>
<!-- 根据:is 属性制定组件名称.把对应的组件渲染到componentb标签所在的位置
可以把component标签当做是[组件的占位符] -->
<component :is="comName"></component>
</div>
</body>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
const zhuanye={
template:'<h1>主页信息</h1>'
}
const keji={
template:'<h1>科技信息</h1>'
}
const caijing={
template:'<h1>财经信息</h1>'
}
const yule={
template:'<h1>娱乐信息</h1>'
}
const vm=new Vue({
el:'#app',
data:{
comName:'zhuanye'
},
components:{
zhuanye,
keji,
caijing,
yule
}
})
//监听windows的onhashchange事件。根据获取到的最新的hash值。切换要显示的组件名称
window.onhashchange=function(){
//通过location.hash获取当前动态的hash值
console.log(location.hash) ;
switch(location.hash.slice(1)){
case '/zhuanye':
vm.comName='zhuanye';
break;
case '/keji':
vm.comName='keji';
break;
case '/caijing':
vm.comName='caijing';
break;
case '/yule':
vm.comName='yule';
break;
}
}
</script>
</html>