Vue2.0 路由配置及Tab组件开发

Unsplash

本次的系列博文的知识点讲解和代码,主要是来自于 黄轶 在慕课网的 Vue 2.0 高级实战-开发移动端音乐WebApp 课程,由个人总结并编写,其代码及知识点部分,均有所更改和删减,关于更多 Vue 2.0 的知识和实际应用,还请大家购买课程进行学习实践,该系列博文的发布已得到黄轶老师的授权许可

授权许可

0 系列文章目录

Vue2.0 定制一款属于自己的音乐 WebApp

Vue2.0 路由配置及Tab组件开发

Vue2.0 数据抓取及Swiper组件开发

Vue2.0 scroll 组件的抽象和应用

Vue2.0 歌手数据获取及排序

Vue2.0 歌手列表滚动及右侧快速入口实现

1. 路由配置

我们在上一章节中完成了 header 组件的开发,并预先编写好了顶部栏,排行,推荐,搜索,歌手页面,在传统的 Web 开发中,页面之间的切换是通过超链接进行跳转的,而 Vue 的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来,所以 Vue 的页面跳转实际上就是组件的切换

现在我们在 Router 中 import 定义好的组件,并且引入到 Vue 实例当中

// router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import Reacommend from 'components/recommend/recommend'
import Singer from 'components/singer/singer'
import Rank from 'components/rank/rank'
import Search from 'components/search/search'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/recommend',
      component: Reacommend
    },
    {
      path: '/singer',
      component: Singer
    },
    {
      path: '/rank',
      component: Rank
    },
    {
      path: '/search',
      component: Search
    }
  ]
})
// main.js

import 'babel-polyfill'
import Vue from 'vue'
import App from './App'
import router from './router'
import fastclick from 'fastclick'
import './common/stylus/index.styl'

fastclick.attach(document.body)

new Vue({
  el: '#app',
  render: h => h(App),
  router
})

不要忘记在需要渲染该组件的地方,挖坑 <router-view>,即在该节点渲染路径匹配到的视图组件

// App.vue

<template>
  <div id="app">
    <m-header></m-header>
    <router-view></router-view>
  </div>
</template>

<script type="text/ecmascript-6">
    import MHeader from 'components/m-header/m-header'
    
    export default {
        components: {
            MHeader
        }
    }
</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
</style>

2. Tab 组件

路由配置完成后,我们接下来需要开发 Tab 组件,用以进行路由的切换,该组件的结构及样式如下

// components/tab/tab.vue

<template>
  <div class="tab">
    <router-link tag="div" class="tab-item" to="/recommend">
      <span class="tab-link">推荐</span>
    </router-link>
    <router-link tag="div" class="tab-item" to="/singer">
      <span class="tab-link">歌手</span>
    </router-link>
    <router-link tag="div" class="tab-item" to="/rank">
      <span class="tab-link">排行
      </span>
    </router-link>
    <router-link tag="div" class="tab-item" to="/search">
      <span class="tab-link">搜索</span>
    </router-link>
  </div>
</template>

<script type="text/ecmascript-6">
  export default {}
</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
  @import "~common/stylus/variable"
  .tab
    display: flex
    height: 44px
    line-height: 44px
    font-size: $font-size-medium
    .tab-item
      flex: 1
      text-align: center
      .tab-link
        padding-bottom: 5px
        color: $color-text-l
      &.router-link-active
        .tab-link
          color: $color-theme
          border-bottom: 2px solid $color-theme
</style>

我们在其中嵌套了很多 <router-link> 标签,tag 属性用以渲染成某种标签,渲染后该标签仍会监听点击,触发导航;to 属性为目标路由的链接,&.router-link-active 为当前路由,可以添加 active 样式

同样的,需要要在 App.vue 中引入并输出 Tab 组件,并且项目启动时,我们为其配置一个默认跳转的路由

// router/index.js

...
export default new Router({
  routes: [
    {
      path: '/',
      redirect: '/recommend'
    },
    ...
  ]
})

运行结果

该章节的内容到这里就全部结束了,源码我已经发到了 GitHub Vue_Music_02 上了,有需要的同学可自行下载

End of File

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏macOS 开发学习

Mac开发跬步积累(五): Dark Mode下适配你的UI界面

在macOS 10.9+ 的时候,苹果就提供了NSAppearance这个类来协助AppKit管理App的UI控件. NSAppearance决定着AppKit...

18920
来自专栏前端新视界

React 系列教程 1:实现 Animate.css 官网效果

这是 React 系列教程的第一篇,我们将用 React 实现 Animate.css 官网的效果。对于 Animate.css 官网效果是一个非常简单的例子,...

11700
来自专栏软件开发

CSS3与页面布局学习总结(五)——Web Font与Sprite

一、web font web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体。先了解操作系统中的字体: a)、安装好操作系...

35760
来自专栏DannyHoo的专栏

改变UITextField的光标颜色

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

21720
来自专栏非著名程序员

【周末分享】解决中文排版错位的JustifiedTextview控件

1、FlowingDrawer 效果 ---- ? 2、Justifiedtextview 说明 ---- android中textview在中文排版时会出现无...

23180
来自专栏韩东吉的Unity杂货铺

零基础入门 16: UGUI RawImage

今天的内容会很简单,也会很短,分享一下UGUI的RawImage,那什么是RawImage呢?

11120
来自专栏前端新视界

React 系列教程 1:实现 Animate.css 官网效果

41620
来自专栏姬小光

姬小光前端兴趣班【第010期】- 浏览器开发工具

前面几期我们学习了切图大法,我相信只要你认真学完,就可以立即派上用场。比如可以将你喜欢的图片切成个人主页,也可以将贺卡图片做成带链接的邮件等等。

9620
来自专栏编程微刊

jQuery实现多种切换效果的图片切换的五款插件

29510
来自专栏HTML5学堂

【系列】移动端项目经验 表单兼容(下篇)

【系列】移动端项目经验 表单兼容(下篇) HTML5学堂:本文,我们将继续为大家总结介绍移动端的常见兼容问题,今天要提的是关于表单的一些兼容问题,主要包括调用相...

378120

扫码关注云+社区

领取腾讯云代金券