# 目录结构

好的目录结构能够让项目更加简单易读,本篇文章推荐大家使用如下目录结构,让项目结构更加清晰明了。

推荐的目录结构如下:

.
├── src
    ├── api
    │   ├── modules 
    │   │   ├── common-api.js
    │   ├── axios.js 统一请求,拦截及响应均在此处理
	|	├── axios-optimize.js axios请求优化处理,防止重复请求等均在此处理
    │   ├── index.js 对modules的请求进行统一暴露处理
    ├── assets
    │   ├── imgs   项目图片存放目录
    │   ├── data
    │   │   └── dict.js
    ├── components  项目组件存放目录
    ├── directives  全局自定义指令
    ├── router   路由配置
    ├── store    vuex数据处理 
    ├── styles   样式
    ├── utils    公共常用方法目录
    ├── views    页面存放目录
    ├── app.vue  项目主入口页面
    ├── dict-config.js
    └── main.js 项目主入口文件
    

注意

请留意目录名的大写,及有无s结尾

  • src/api/modules/common-api.js: 用于存放项目一些公共常用接口请求。

  • src/assets/data/dict.js: 存放项目固定不变字典数据。

  • src/dict-config.js: 字典包配置。

关于请求的优化,可阅读此篇文章史上最全的axios请求优化 (opens new window)

# 请求接口配置

**注意:以下为模拟接口请求响应数据 src/api/modules/common-api.js **

//获取字典接口 
export function getDictCodeApi(options) {
  var promise = new Promise(function(resolve) {
    const dictCodeList = {
      "FRUITS": [
        {
          "value": "1",
          "label": "西瓜"
        },
        {
          "value": "2",
          "label": "草莓"
        },
        {
          "value": "3",
          "label": "莲雾"
        },
      ],
      "SPORTS": [
        {
          "value": "1",
          "label": "篮球"
        },
        {
          "value": "2",
          "label": "足球"
        },
        {
          "value": "3",
          "label": "乒乓球"
        },
      ],
      "PERSON_TYPE": [{
        "value": "005",
        "label": "民营企业代表"
      },{
        "value": "004",
        "label": "个体工商户"
      }, {
        "value": "003",
        "label": "机关事业单位法人"
      }, {
        "value": "002",
        "label": "社团法人"
      }, {
        "value": "001",
        "label": "企业法人"
      }],
    }

    let codeData = {}

    if (options&&options.type) {
      const typeList = options.type.split(",")
      for (let i = 0; i < typeList.length; i++) {
        const type = typeList[i]
        codeData[type] = dictCodeList[type]
      }
    } else {
      codeData = dictCodeList
    }
    const data = {
      "code": 0,
      "data": {
        dictData: codeData,
        dictVersion: "0.0.2"
      },
      message: "成功",
      timestamp: "1594565635",
      type: "info"
    }
    resolve(data)
  })
  return promise
}

//获取全局配置  包含版本号
export function getGlobalConfigApi() {
  return new Promise((resolve, reject) => {
    resolve({version: "0.0.2"})
  })
}

# 固定字典数据配置

**注意:以下为项目固定不变字典数据 src/assets/data/dict.js **

export default {
  SEX: [
    {
      value: "1",
      label: "男"
    },
    {
      value: "2",
      label: "女"
    },
    {
      value: "3",
      label: "未知"
    }
  ],
  niceOrBad: [
    {
      "value": "0",
      "label": "好"
    }, {
      "value": "1",
      "label": "差"
    }
  ],
  area: [
    {
      "id": "110000",
      "parentId": "0",
      "label": "北京"
    },
    {
      "id": "110100",
      "parentId": "0",
      "label": "北京市"
    },
    {
      "id": "110101",
      "parentId": "110100",
      "areaName": "东城区"
    },
    {
      "id": "110102",
      "parentId": "110100",
      "areaName": "西城区"
    },
    {
      "id": "110105",
      "parentId": "110100",
      "areaName": "朝阳区"
    }
  ]
}

# 全局字典配置

**注意:以下为字典包配置文件 src/dict-config.js 更多配置详细字典包配置项>>

import {getDictCodeApi} from "@/api/modules/common-api.js"
import localDictCodes from "@/assets/data/dict.js"
export default {
    getDictCodeApi, //必传 获取字典数据接口
    localDictCodes, //选填 项目写死的字典数据
}

爆米花小布微信公众号

上次更新: 7/11/2024, 4:01:24 PM