• 11、vue-路由


    1、路由:
    官方提供一个插件,构建单页面应用,主要实现得功能页面得切换、组件得跳转

    2、vue中得路由:vue-router包,如果是脚手架进行搭建得,那么是不需要安装vue-router这个包得,因为里边已经配置安装好了

    3、scr中得router文件中的index.js就是直接放路由得文件,所有的路由配置全部都是再这个文件中进行配置的,用的话实在组件中进行使用的

    4、不管是使用组件也好,还是使用路由也好,都是需要创建一个组件或者是路由实例的
    都需要使用new来完成
    import Router from 'vue-router' //引入路由构造器
    Vue.use(Router)
    export default new Router() //路由实例

    5、路由的原理:
    根据url的路径变化,从而获取显示对应的组件
    通过改变url,再不更新页面的情况下,更新页面中视图

    6、vue中的路由实现:
    hash模式:根据的是#后的值进行判断的,再读取的时候使用的是window.location.hash进行读取的
    特点:hash是再url中的,但是不被包含在http的请求中,hash不会重新加载页面
    http://www.xxx.com/#/test(默认是hash模式的)
    history模式:把#去掉了,直接再后边显示的是/,再请求的时候是一起进行请求的,但是一般如果要使用的是history模式,那么必要要保证前端
    URL和向后台发起的URL一致才行,只有再这种情况下才能请求到数据,否则返回的是404:http://www.xxx.com/test
    mode:'history'(有的浏览器是不支持的)

    7、使用路由步骤:
    现在router配置文件中进行配置
    然后再在入口文件中引入路由,其他组件才能使用
    使用router-link-->a标签
    to:跳转得路径,和path中定义的内容是一致的
    name进行跳转,{name:''}
    使用router-view标签给vue组件提供跳转的容器

    8、如果有二级路由的话:
    需要使用children在index.js文件中进行配置的

    9、子路由在哪个路径下边,那么我们就需要把router-view放在哪个组件中,否则的话这个子路由是没有办法显示出来的

    10、命名视图
    一个路由显示多个组件:
    components,同时告诉浏览器,哪个组件显示在哪个view中,使用的是name属性来实现的

    案例:

    // index.js -router


    import Vue from 'vue' import Router from 'vue-router' import Home from '@/components/Home' import About from '@/components/About' import Nava from '@/components/nava' import Product from '@/components/product' import Footer from '@/components/Footera' import Contenta from '@/components/contenta' Vue.use(Router) export default new Router({ mode: 'history', routes: [ { path: '/', name: 'Home', components: { default:Home, contenta:Contenta, //命名视图 footer:Footer } }, { path: '/about', name: 'About', component: About, children:[ //子组件路由 { path:'/about/nava', name:"nava", component:Nava },{ path:'/about/product', name:"product", component:Product } ] } ] })
    这是App父页面
    <template> <div id='app'> <ul> <!-- <li><router-link to="/">首页</router-link></li> <li><router-link to="/about">abuot</router-link></li> --> //第一种方法
    <li><router-link :to="{name:'Home'}">首页</router-link></li> //第二种 :to=“{}” <li v-navDown><router-link :to="{name:'About'}">abuot</router-link> <ul> <li> <router-link to="/about/nava">NAva</router-link> // 子路由 </li> <li> <router-link to="/about/product">公司产品</router-link></li> //子路由 </ul> </li> </ul> <router-view name="default"></router-view> //命名视图 <router-view name="contenta"></router-view> <router-view name="footer"></router-view> </div> </template> <script> import $ from 'jquery' export default { name: 'App', data () { return { } }, directives:{ 'navDown':{ inserted (el) { el.addEventListener('mouseenter',function(){ $(el).children('ul').slideDown() }) el.addEventListener('mouseleave',function(){ $(el).children('ul').slideUp() }) } } } } </script> <style> .test{ color:skyblue; } li{ 500px; height: 20px; background: pink; } li ul{ display: none; } </style>
    //显示子页面
    <template> <div>我是about <router-view></router-view> //直接显示子页面 </div> </template>
  • 相关阅读:
    fmt:formatNumber use locale display negative currency in -$xxx.xx format in JSTL
    Order By 问题集合
    Order By 问题集合
    mybatis异常invalid comparison: java.util.Date and java.lang.String
    mybatis异常invalid comparison: java.util.Date and java.lang.String
    requestLayout, invalidate和postInvalidate的异同
    如何关闭打开了多个activity的activity
    关于handler的再次讨论
    Android中pull解析XML文件的简单使用
    使用广播退出打开了多个activity的程序
  • 原文地址:https://www.cnblogs.com/taozhibin/p/13160693.html
Copyright © 2020-2023  润新知