1.什么是vue-router?路由指的是单页应用的路径管理器,方便我们构建单页应用。Vue的单页应用是基于路由和组件的。路由用于设置访问路径并映射路径和组件。传统的界面跳转是通过a标签跳转到界面。我们在使用vue-router管理单页应用的时候,在切换界面的时候,就是路径之间的切换,也可以说是组件之间的切换。也就是说,路由模块的本质就是建立url和interface的映射关系。但是我们上面提到了传统的界面跳转方式是使用a标签进行界面跳转,那么我们在使用vue的时候还需要使用a标签进行界面跳转吗?答案是否定的,如果我们来到跳转界面,a标签就不行了,为什么呢?答案很简单。我们的项目是一个单页应用程序。使用a标签无法跳转到其他界面,但仍然可以访问外部链接。我们如何判断我们的项目是单页应用程序?当我们使用vue-cli搭建脚手架时,可以看到我们的项目中只有一个index.html。还有一个就是当我们输入命令npmrunbuild打包项目的时候,会生成一个dist文件夹,里面有静态文件包和index.html,此时也可以说明我们的Vue项目是一个单页应用时间。2.vue-router的实现原理和两种模式因为我们在上面提到和解释了单页应用,所以这里就不过多解释了。当我们在项目中使用vue-router时,它加载界面的时候,并不会加载整个界面,而是更新路由所在路径对应的组件。这样当我们切换路由时,不会重新请求接口,而是通过不同的路径请求不同的资源。在vue-router中的单页面应用中,也有两种方式:Hash模式和History模式,vue-router中默认的模式是hash模式。哈希模式当vue-router使用哈希模式时——url的哈希用来模拟一个完整的URL,所以当URL改变时,页面不会重新加载。哈希(#)是URL的锚点,代表网页中的一个位置。只需更改#后面的部分,浏览器会跳转到相应的位置而不用重新加载界面,因为HTTP请求中不包含##后面的部分,所以在URL中添加锚点#不会影响服务器端,但是每次路由重定向的时候,#后面的部分都会改变。此时浏览器的历史记录中会增加一条记录,点击后退按钮或者使用$router.back()返回界面。History模式官方文档:如果你不想要难看的hash,我们可以使用routinghistory模式,它充分利用了history.pushStateAPI来完成URL跳转而无需重新加载页面。`这里插入代码片段constrouter=newVueRouter({mode:'history',//此时使用history模式routes:[...]//路由配置})因为在使用hash模式时,它将在Url路径中添加锚点,如果想在不添加锚点的情况下使用普通的Url,我们还是要用好这个模式,这个模式充分利用了history.pushState来完成Url的跳转而不加载界面。3.如何安装配置vue-router安装在终端输入npminstallvue-router--save下载vue-router(前提需要已经安装node.js),可以看到已经添加了vue-到package.json文件路由器依赖项。配置1.在src中新建一个文件index.js(可以任意取名,在main.js中导入即可)2.在index.js文件中引入包,声明使用vue-routerimport来自'vue'的Vue;//从'vue-router'引入vueimportVueRouter;//引入vue-routerVue.use(VueRouter)//声明使用插件暴露vue-router对象:exportdefaultnewVueRouter({routes:[{path:'/xxx',//Pathcomponent:HelloWorld,//声明componentmeta:{value:true//此时$route.meta中会有一个value属性},//传入参数children:[{path:'/xxx/ccc',component:HelloChildren//声明subcomponents}]},{/*默认指向*/path:'/',redirect:'/xxx'//默认指向的路径},]})3.在mainApplicationroutingin.jsimportrouter来自'./index.js';//from之后就是上面index.js的路径newVue({el:'#app',render:h=>h(App),router,/*使用vue-router导入路由*/})4.在App.vue中引入路由组件
