Vue爬坑之旅(二):vue单页面二级套嵌路由

在一个单页面应用里使用二级套嵌路由

目录结构如下:

其中main.js为全局配置文件,App.vue为项目入口。

main.js中路由配置如下

import Vue from ‘vue‘//引入vue
import App from ‘./App‘//引入主模板
import Router from ‘vue-router‘// 引入router路由
// 引入项目的模块组件
import licai from ‘./components/licai‘
import home from ‘./components/home‘
import wode from ‘./components/wode‘
import home1 from ‘./components/home/home1‘
import home2 from ‘./components/home/home2‘
import home2_1 from ‘./components/home/home2_box/home2_1‘//套嵌路由
import home2_2 from ‘./components/home/home2_box/home2_2‘

Vue.use(Router)// 使用router

// 定义路由
var routes = [
{ path: ‘/‘, redirect: ‘/home‘ },//默认显示home
{
  path: ‘/home‘,
  component: home,//路径home的组件是home
  meta: { navShow: true}
}, {
  path: ‘/licai‘,
  component: licai,
  meta: { navShow: true}
}, {
  path: ‘/wode‘,
  component:wode,
  meta: { navShow: true}
},{
    path:‘/home1/:num‘,
    component:home1,
    meta: { navShow: false}
},{
    path:‘/home2‘,
    component:home2,
    meta: { navShow: false},
    //这里定义了两个子路由在home2模块下
    children:[
        { path: ‘/home2/home2_1‘, component:home2_1},
        { path: ‘/home2/home2_2‘, component:home2_2}
    ]
}]
// 实例化路由
var vueRouter = new Router({
  routes//此路由为上方定义
})
// 创建和挂载根实例
new Vue({
  el: ‘#app‘,//vue项目在哪个元素下
  router: vueRouter,//使用路由
  template: ‘<App></App>‘,
  components: { App }
})

App.vue为主模板,也就是入口文件,其中定义的路由与一级路由无任何区别:

<template>
  <div id="app1">
    <div class="nav-bottom" v-show="$route.meta.navShow">
        <!-- 引入公用的头部 header组件 -->
        <v-header></v-header>
    </div>
    <div class="contianer">
        <!-- 路由中的组件在这里被渲染,默认被渲染的为home组件,已在路由配置中设置  -->
        <router-view></router-view>
    </div>
  </div>
</template>

home.vue,这里是首页,从这里可以进入home2页面:

<template>
    <div class="home box">

        <h3>这里是home页面</h3>
        <router-link to="/home2">套嵌路由</router-link>

    </div>
</template>

home2.vue,这里可以展示套嵌路由了:

<template id="home2">
    <div>
        <header class="home header"><a href="javascript:void(0);" οnclick="javacript:window.history.go(-1)"><img src="../../../static/img/png1.png"/></a>路由套嵌</header>
        <router-link to="/home2/home2_1">子页面1</router-link>
        <router-link to="/home2/home2_2">子页面2</router-link>
        <!-- 路由匹配到的组件将渲染在这里 -->
        <router-view></router-view>
    </div>
</template>
<style>
.home.header{font-size:0.8rem;position:relative;}
.home.header>a{display: block;height:0.8rem;width:0.4rem;margin-top:0.6rem;position:absolute;left:0.5rem;}
.home.header>a>img{height:100%;width:100%;display:block;}
</style>

效果:

原文地址:https://www.cnblogs.com/linfblog/p/12150800.html

时间: 2024-10-08 18:14:33

Vue爬坑之旅(二):vue单页面二级套嵌路由的相关文章

Vue爬坑之旅(八):vue单页面中锚点跳转

一般情况下我们在html中使用锚点时会利用链接方式请求‘#+id名称’,此时会在url后面跟一个#号.但是在单页面中会有路由误判的情况.所以在单页面中锚点可改为参数传递的方式. 一.封装一个外部js:anchor.js //锚点跳转 function goAnchor(selector) { var anchor = this.$el.querySelector(selector);//获取元素 if(anchor) { setTimeout(()=>{//页面没有渲染完成时是无法滚动的,因此设

vue 爬坑之路---can&#39;t resolve &#39;sass-loader&#39;

环境设置好以后 本以为可以开心的写代码了, 谁料到如下报错,大概意思就是不能编译 sass-loader 这个玩意. 那怎么办?? 安装依赖,不然能怎么办? 第一个依赖: npm install sass-loader 第二个依赖: npm install node-sass 这样安装了之后,然后npm run dev  ,世界一片祥和~ vue 爬坑之路---can't resolve 'sass-loader' 原文地址:https://www.cnblogs.com/liuguoying/

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText.对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResi

(转)Vue 爬坑之路(三)—— 使用 vue-router 跳转页面

使用 Vue.js 做项目的时候,一个页面是由多个组件构成的,所以在跳转页面的时候,并不适合用传统的 href,于是 vue-router 应运而生. 官方文档: https://router.vuejs.org/zh-cn/essentials/getting-started.html 有很多朋友找我要 demo,但是博客中的这个案例被我删掉了,我只好随手写了一个超简单的 demo,希望能有所帮助 链接: https://pan.baidu.com/s/1pMfi5tD  密码: pjwx 这

Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/6266038.html 但是如果是大型项目,很多时候都需要在子组件之间传递数据,使用之前的方式就不太方便.Vue 的状态管理工具 Vuex 完美的解决了这个问题. 一.安装并引入 Vuex 项目结构: 首先使用 npm 安装 Vuex cnpm install vuex -S 然后在 main.js 中引入

vue爬坑之路2

构造器 每个vue.js应用都是通过构造函数Vue穿件一个Vue的根实例启动的: var vm = new Vue({ //选项 }) 在实例化Vue时,需要传入一个选项对象,他可以包含数据,模板,挂在元素,方法,生命周期钩子等选项. vue构造器是可扩展的,实际上,所有的vue.js组件其实都是被扩展的vue实例. var MyComponent = Vue.extend({ //扩展选项 }) //所有的'MyComponent'实例都将以预定义的扩展选项被创建 var myComponen

Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目 (增补)

cd  指定好安装目录 vue init webpack  项目名称 执行  vue vue list  查看可应用模板 vue init webpack  +名字 项目已启动 原文地址:https://www.cnblogs.com/dianzan/p/8570656.html

Vue 爬坑之路(二)—— 组件之间的数据传递

Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,components 文件夹下都是子组件. 一.父组件向子组件传递数据 在 Vue 中,可以使用 props 向子组件传递数据. 子组件部分: 这是 header.vue 的 HTML 部分,logo 是在 data 中定义的变量. 如果需要从父组件获取 logo 的值,就需要使用 props: ['lo

Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一. 安装 node.js 首先需要安装node环境,可以直接到中文官网http://nodejs.cn/下载安装包. 只是这样安装的 node 是固定版本的,如果需要多版本的 node,可以使用 nvm 安装http://blog.csdn.net/s8460049/article/details/52