美文网首页
页面结构复杂时如何拆解vue模块?

页面结构复杂时如何拆解vue模块?

作者: _果不其然_ | 来源:发表于2018-10-24 11:21 被阅读0次

在实际写页面的时候,如果一个页面的结构比较复杂,那么我们着一个页面的前端代码的量就会很大,那么我们如何拆解一个页面呢?

我们还是以简书的首页为例


我们可以看到这个主页可以划分为很多个模块,那么我们如何拆解和使用呢?
我们以导航栏为例,将导航栏抽取出来
  • 首先我们创建header.vue模块


    image.png
  • 在Header.vue中添加导航栏的代码
<template>
  <b-navbar toggleable="md" type="light" variant="default" fixed class="box">
    <b-navbar-toggle target="nav_collapse"></b-navbar-toggle>
    <router-link to="/">
      <b-navbar-brand>
        <b-img width="85" height="50"
               src="https://cdn2.jianshu.io/assets/web/nav-logo-4c7bbafe27adc892f3046e6978459bac.png"/>
      </b-navbar-brand>
    </router-link>

    <b-collapse is-nav id="nav_collapse">
      <b-navbar-nav>

        <b-nav-item v-if="token!=null">
          <router-link to="/">发现</router-link>
        </b-nav-item>


        <b-nav-item v-if="token!=null">
          <router-link to="/subscriptions">关注</router-link>
        </b-nav-item >

        <b-nav-item v-if="token!=null">
          <router-link to="/notifications">消息</router-link>
        </b-nav-item>

        <b-nav-item v-if="token==null">
          <router-link to="/index">首页</router-link>
        </b-nav-item >

        <b-nav-item v-if="token==null">
          <router-link to="/notifications">下载App</router-link>
        </b-nav-item>



        <b-nav-form>
          <b-form-input size="sm" class="mr-sm-2" type="text" placeholder="Search"/>
          <b-button size="sm" class="my-2 my-sm-0" type="submit">Search</b-button>
        </b-nav-form>
      </b-navbar-nav>

      <!-- Right aligned nav items -->
      <b-navbar-nav class="ml-auto">
        <b-nav-item href="#">Aa</b-nav-item>
        <b-nav-item-dropdown right>
          <!-- Using button-content slot -->
          <b-dropdown-item>
            <router-link to="/u">
              个人中心
            </router-link>
          </b-dropdown-item>
          <template slot="button-content" v-if="token!=null">
            <b-img rounded="circle" width="35" height="35" src="../../static/img/avatar12.jpeg"/>

          </template>
          <b-dropdown-item href="#">设置</b-dropdown-item>

            <b-dropdown-item> <router-link to="/login">退出</router-link></b-dropdown-item>


        </b-nav-item-dropdown>
        <a class="btn write-btn" href="/write">
          写文章
        </a>
      </b-navbar-nav>

    </b-collapse>
  </b-navbar>
</template>
<script>
  import 'bootstrap/dist/css/bootstrap.css'
  import 'jquery/dist/jquery.min'
  import 'bootstrap/dist/js/bootstrap.min'

  export default {
    data() {
      return {
        name: 'taoranran',
        token: "123"
      }
    },
    computed: {
      username() {
        let username = localStorage.getItem('ms_username');
        return username ? username : this.name;
      }
    },
    methods: {
      // 用户名下拉菜单选择事件
      handleCommand(command) {
        if (command == 'loginout') {
          localStorage.removeItem('ms_username')
          this.$router.push('/login');
        }
      }

    }
  }
</script>
<style scoped>
  .box {
    border-bottom: 1px solid #eef1f6;
    height: 55px;
  }

  a {
    color: #324157;
  }

  .btn {

  }

  .write-btn {
    float: right;
    width: 100px;
    height: 40px;
    line-height: 24px;
    margin: 8px 15px 0;
    border-radius: 20px;
    font-size: 15px;
    color: #fff;
    background-color: #ea6f5a;
  }
</style>

  • 那么我们如何将它添加到主页中去呢?
    1 .我们在Home.vue的Script中引入Header.vue


    image.png

    其中v-head可以自定义

  1. 然后在template中引入


    image.png

    3.效果


    image.png

其他的模块也是以此类推,希望小编写的能对你有所帮助哦

相关文章

  • 页面结构复杂时如何拆解vue模块?

    在实际写页面的时候,如果一个页面的结构比较复杂,那么我们着一个页面的前端代码的量就会很大,那么我们如何拆解一个页面...

  • Vue 之 keepAlive 动态管理页面缓存

    对于 Vue 项目,提到页面缓存,大家一定都会想到 keepAlive ,想必各模块的前端er们在设计页面结构的时...

  • 基于vue解析复杂页面——以简书前端为例

    基于vue解析复杂页面——以简书前端为例 在实际写页面的时候,如果一个页面的结构比较复杂,那么我们着一个页面的前端...

  • Nuxt.js路由

    路由 Nuxt.js依据pages目录结构自动生成vue-router模块的路由配置。 要在页面之间使用路由,我们...

  • nuxt实现路由跳转的几种方法

    Nuxt.js 依据 pages 目录结构自动生成 vue-router模块的路由配置。官方建议:两个页面间跳转使...

  • (22)打鸡儿教你Vue.js

    vue.js 单页面,多页面 Vue cli工具复杂单页面应用Vue cli工具 交互设计,逻辑设计,接口设计 代...

  • vue组件化开发

    什么是组件化 将一个页面拆分成小的模块,每个模块完成独立的功能,然后将模块组成一个完整的页面,在vue中vue提供...

  • iOS TableView 分区/枚举动态化

    section动态化 当遇见较复杂页面时,一般会选择使用tableView去处理,如果页面层次结构复杂,table...

  • 新项目的思考

    文件结构 按模块化的方式划分文件结构,方便文件管理,由于vue的文件结构,可以把一个模块的css,js都写在vue...

  • 解决刷新页面不触发 vue-router 的 beforeEac

    问题 在使用 Vue.js 开发项目时,会用到 vue-router 模块来进行路由管理。为了在用户访问每个页面之...

网友评论

      本文标题:页面结构复杂时如何拆解vue模块?

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