美文网首页
Vue项目初构之路由优化

Vue项目初构之路由优化

作者: mayChunJ | 来源:发表于2020-12-30 14:07 被阅读0次

上一篇文章我们新建了第一个页面,并把页面挂载到’/’根路由上,没什么问题,我们接下来再新建一个home页面,一般app是先跳转到login页面,点击登录按钮,跳转到home页。我们来模拟一下。
首先我们先新建一个页面,home.vue,他的目录结构为views/home/Home.vue.

  <div class="wrapper">
    home页面
  </div>
</template>

<script>
export default {
  components: {},
  props: {},
  data () {
    return {
    }
  },
  watch: {},
  computed: {},
  methods: {},
  created () {},
  mounted () {}
}
</script>
<style lang="scss" scoped>
.wrapper{
  font-size: 16px;
}
</style>

对应的我们在router/index.js文件里面,写出home.vue对应的路由。

import VueRouter from 'vue-router'
import Login from '../views/login/Login.vue'
import Home from '../views/home/Home.vue'

Vue.use(VueRouter)

const routes = [
{
  path: '/',
  name: 'Login',
  component: Login
}, {
  path: '/home',
  name: 'Home',
  component: Home
}
]

const router = new VueRouter({
routes
})

export default router

接下来我们在登录页面新增一个登录按钮。跳转到home页面。

  <div class="wrapper">
    login 页面
    <div class="loginBtn" @click="login">登录按钮</div>
  </div>
</template>

<script>
export default {
  name: 'Login',
  components: {},
  props: {},
  data () {
    return {
    }
  },
  watch: {},
  computed: {},
  methods: {
    login () {
      this.$router.push({ path: '/home' })
    }
  },
  created () {},
  mounted () {}
}
</script>
<style lang="scss" scoped>
.wrapper{
  font-size: 16px;
  .loginBtn{
    height: 100px;
    width: 200px;
  }
}
</style>

路由跳转我们用this.router.push({ path: '' }),运行项目是可行的。 当模块量变大的情况下,现在有两点问题 1.路由的inde.js会十分的冗余,变得很大。 2.this.router.push 所有页面都会调用,应该单独封装成一个js,抽出来方便调用。

我们先来整改第一点,把路由模块化并且实现自动化引入。很简单把 login和home 分成两个模块。如下图:


image.png

home.js

  name: 'home',
  path: '/home',
  meta: {
    isNeedLogin: true,
    title: '首页'
  },
  component: () => {
    return import(
      '@/views/home/Home.vue'
    )
  }
}]
export default home

login.js

  name: 'login',
  path: '/',
  meta: {
    isNeedLogin: false,
    title: '登录'
  },
  component: () => {
    return import(
      '@/views/login/Login.vue'
    )
  }
}]
export default login

然后我们会在router的index.js文件里对文件进行遍历

import VueRouter from 'vue-router'

Vue.use(VueRouter)

// 自动引入所有的模块
const modules = require.context('./modules', false, /.js$/)
const routes = modules.keys().reduce((result, fileName) => {
  result = [...result, ...modules(fileName).default]
  return result
}, [])

const router = new VueRouter({
  routes
})

export default router

运行项目 可以运行
其实

const routes = modules.keys().reduce((result, fileName) => {
  result = [...result, ...modules(fileName).default]
  return result
}, [])

这一段代码和下面一段代码是一样的效果

{
  path: '/',
  name: 'Login',
  component: Login
}, {
  path: '/home',
  name: 'Home',
  component: Home
}]```
只不过第一段代码是 根据文件目录,把对应js下的路由遍历出来,动态添加到router中去的。
router模块化就这样处理好了。

相关文章

  • Vue项目初构之路由优化

    上一篇文章我们新建了第一个页面,并把页面挂载到’/’根路由上,没什么问题,我们接下来再新建一个home页面,一般a...

  • Vue应用

    Vue项目 Vue结构 Vue项目打包与发布 Vue语法二 Vue网络请求 Vue路由 动态路由 编程式路由导航

  • vue 性能优化点

    vue项目中,经常会遇到一些性能优化点,以下就是我在工作中,总结的优化点 vue 性能优化点 1,路由懒加载 2,...

  • Vue项目初构之文字适配

    我们先运行下项目,效果如下: 没什么问题,但是当我们双击页面的时候页面会放大缩小。我们该怎么处理呢。很简单,我们在...

  • Vue 项目打包优化 - CDN、配置分离、路由懒加载

    前言 Vue 项目打包优化 - CDN、配置分离、路由懒加载。本例项目是写的一个管理系统,项目使用的库版本: vu...

  • Vue路由与Vuex

    一、 VueRouter Vue Router是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,让构...

  • Vue项目初构之全局scss文件引入

    我们先引入基本样式,我们在assets文件夹内新建一个global文件夹,新建main.scss文件放的是app统...

  • vue项目优化

    vue 项目优化 项目打包体积优化 通常vue项目通过webpack打包后,会出现vendor包的体积过大的情况,...

  • Vue移动项目

    Vue移动项目总结 一、vue-cli创建项目并配置vue路由https://www.jianshu.com/p/...

  • 复习3

    vue路由懒加载 1.vue路由懒加载解决的什么 问题:解决打包后文件过大的问题,从而优化页面加载,提升性能 注意...

网友评论

      本文标题:Vue项目初构之路由优化

      本文链接:https://www.haomeiwen.com/subject/fopxiktx.html