创建页面

项目中所有页面都放在views文件夹里面

文件或文件夹命名要有意义

如果要新建的页面存在多个嵌套关系,按照下面步骤依次创建即可

此处以创建一个直播管理页面为例

  1. 在views文件件下创建要展示的页面,新建存放所有页面最外层文件夹 liveManage
  2. 因为 直播管理 底下包含了2个页面 创建直播/监控直播 所以在 liveManage 文件夹里面在创建放置2个页面的文件夹 establishLive 和 monitorLive
  3. 创建直播和监控直播为我们要展示的页面,在establishLive 和 monitorLive 文件夹下分别新建 index.vue 文件(index.vue即为要展示的页面)

index.vue 页面模板

<template>
    <div>
    
    </div>
</template>

<script >
    export default {}
</script>

创建路由

每个路由的name不可重复且不能命名为index (保证路由name唯一)

主菜单的 component:Layout不需要改动,子菜单的component需要指向要展示的页面 即为新建的 .vue文件

  1. 在新建完.vue文件之后需要配置路由才能在页面展示,打开项目文件 src – router – index.js创建路由
{
  path: '/liveManage',
  component: Layout,
  name: 'liveManage',
  meta: { title: '直播管理', icon: 'layoutWeb', type: '0' },
  children: [
    {
      path: 'establishLive/index',
      name: 'establishLive',
      component: _import('liveManage/establishLive/index'),
      meta: { title: '创建直播', type: '0' }
    },
    {
      path: 'monitorLive/index',
      name: 'monitorLive',
      component: _import('liveManage/monitorLive/index'),
      meta: { title: '监控直播', type: '0' }
    }
  ]
}
  1. 路由结构拆分讲解:

    a、主菜单路由配置

    {
      path: '/liveManage',
      component: Layout,
      name: 'liveManage',
      meta: { title: '直播管理', icon: 'layoutWeb', type: '0' },
      children: []
    }
    // a.path – 对应views底下新建的主菜单文件夹(即为 直播管理liveManage 文件夹)
    // b.component – Layout此项不需要改动(Layout为独立可复用的页面结构 – 包含页面头部导航和左侧菜单)
    // c.name – 对应path中的文件名(例如:path中路径为 /navBar 此时name即为 navBar)
    // d.meta – title:对应页面展示菜单项的名称 icon:对应页面展示菜单项的图标(把src – icons – svg 文件里面的所有图表的文件名填入此处即可)
    

    b、子菜单路由配置

    {
      path: 'establishLive/index',
      name: 'establishLive',
      component: _import('liveManage/establishLive/index'),
      meta: { title: '创建直播' }
    }
    // a.	path – 对应主菜单liveManage底下新建的子菜单文件夹里的index.vue文件
    // b.	name – 对应path中的文件名,同主菜单一样不能重复且不能命名为index
    
    

搭建页面

html代码必须要写在template标签底下的div中,且template标签底下不能出现2个或2个以上的html标签(template 底下的div中可以存在多个html标签)

页面搭建参考 组件文档 ,直接搭建即可。

调用接口

出于好维护的目的 src – api 文件夹底下新建接口文件的时候需每一类都要新建一个文件夹存放,不可把所有的接口都写在一个文件中,src – store – modules 文件夹底下新建的.js文件也同理,每一类要新建一个.js文件存放在一起

  1. 找到src – api文件夹 在api文件夹底下新建存放直播管理接口的文件夹 live 在liveManageApi文件夹下新建 index.js文件 用来定义接口模块。如图:
  2. 在新建的index.js文件中添加js代码
import request from '@/utils/request'
// 创建直播
export function addLive(postselectinfo) {
  return request({
    url: 'http://192.168.0.5:7300/mock/5c807e76e04e7106ba522011/example/addLiveData',
    method: 'POST',
    data: postselectinfo
  })
}
// a.export function xxx () {} 为定义要导出的接口模块
// b.url – 接口地址  method – 请求方式  data – 数据
// c.es6模块主要有2个功能 export 和 inport

// export 用于对外输出本模块变量的接口
// import 用于在一个模块中加载另一个含有export接口的模块
// postselectinfo - 接口参数
  1. 找到 src – store – modules 文件夹,在modules文件夹下创建一个.js文件用来加载第2步中创建的接口模块 – 在modules文件夹下新建 liveInterface.js 文件。如图:

    在新建的liveManage.js文件中添加js代码:
    import {
      addLive
    } from '@/api/live/index'
    const liveInterface = {
      actions: {
        // 创建直播表格数据
        AddLive ({ commit }, postselectinfo) {
          return new Promise((resolve, reject) => {
            addLive(postselectinfo).then(response => {
              resolve(response.data)
            }).catch(error => {
              reject(error)
            })
          })
        }
      }
    }
    export default liveInterface
    // a.Import 用于加载第2步中创建含有export接口的模块
    // b.actions里面的AddLive 和addLive 为第2步创建接口模块的时候起的名字
    // c.AddLiveTable() {}  --  名字的首字母大写
    
  2. 找到 src – store – index.js 文件。如图:

    在文件里面通过import 引入第3步创建的.js文件
import liveInterface from './modules/liveInterface'
Vue.use(Vuex)
const store = new Vuex.Store({
  modules: {
    liveInterface
  },
  getters
})
export default store
  1. 在需要调用接口的 .vue页面中调用接口

a. 因为vue中方法需要放在methods中,所以在建好的 export default {} 中添加

export default {
  data() {
    return {
      postList: {}
    }
  },
  methods: {
    fetchData() { // 调用接口
      this.$store
        .dispatch('AddLive', this.postList)
        .then(res => {
          console.log(res)
        }).catch((err) => { console.log(err) })
    }
  }
}
// dispatch接收2个参数 接口名称(创建的首字母大写的名称 AddLive) 接口需要传递的参数 实例中this.postList为一个变量需要在data return中定义 
// res即为后台返回的数据
// catch 错误捕获

  1. 此时接口调用代码完成,如果需要在页面加载完执行调用接口 Vue 中提供了钩子函数 在对应的钩子函数中调用调用接口方法即可

vue 钩子函数

vue 的生命周期是: 
vue 实例从创建到销毁,也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程。

初始化时间和生命周期结束的时间点上 beforeCreate 会执行(创建vue实例,vue实例进行一个基础的初始化的时候自动调用 beforeCreate 函数)

进入完 beforeCreate 函数vue会继续处理一些外部的注入和双向的绑定的相关内容

以上注入和绑定完成之后基本上vue的初始化实例就完成了 在这个节点上 created 会执行

初始化基本完成之后 vue会询问实例中是否有el选项 (分为2条支线 yes no)

       yes -- 会继续询问实例上是否有 template 属性 (分为2条分支 yes no)
       
       yes --  会用已有的template模板进行渲染
       
       no -- 会把el外层的html当做模板(vue实例没有模板,没有template的时候会把el上绑定的div当做模板来进行渲染)

在页面渲染之前 beforeMount 会执行(模板和数据相结合,即将挂载到页面上之前的时间点)

当 beforeMount 执行完毕之后,模板结合数据生成最终vue实例的dom元素会被挂载到页面之上(内容已经被显示到页面之上)

页面挂载完成之后 mounted 会执行

*** beforeUpdate  updated (数据发生改变的时候这两个钩子会被执行)  vm.test = 'dell'

*** 数据发生改变还没有重新渲染之前 beforeUpdate 会执行

*** 当重新渲染之后 updated 会执行


beforeDestroy -- vm.$destroy()被调用的时候会被执行(即组件即将被销毁的时候)  vm.$destroy()

destroyed -- 组件完全被销毁之后 destroyed会执行