## 规范内容
- 命名规范:规范项目中的各类命名,保持项目命名格式统一化
- 目录规范:规范项目中的目录结构,保持项目结构统一化
- 注释规范:规范项目中代码的注释,类注释,方法注释以及其他文件注释
- 项目配置:严格控制项目配置,不可随意改动
## 命名规范
项目中的基本命名说明如下,请仔细查看
| name | 例子 |
| -------------- | ----------- |
| `中线命名法` | hello-world |
| `下划线命名法` | hello_world |
| `小驼峰命名法` | helloWorld |
| `大驼峰命名法` | HelloWorld |
### 1. 组件
`大驼峰命名`(index.vue除外)
```
|- List.vue
|- ListTabs.vue
|- Detail.vue
|- DetailFrom.vue
|- index.vue
```
### 2. 文件夹,js、css、less、html、图片文件
`中线命名法`
> 请根据功设置命名前缀
例:
```
|- collaborative-disposal // 文件夹
| |- static
| | |- images
| | | |- event-accident.png // 图片
| | | |- event-build.png
| | | |- event-flow.png
| | |- styles
| | | |- event-list.less // less
| |- lib
| | |- event-list.js // js
| |- index.html // html
| |- event-list.html
```
### 3. Class 类名
`大驼峰命名法`
```
class DemoSdk {}
```
### 4. html 属性
- class: `中线命名法`
- id: `中线命名法`
- ref: `小驼峰命名`
> class 请根据页面布局,功能模块命名
```
<div class="layout-wrapper">
<!-- 头部 -->
<header class="layout-header" ref="layoutHeader"></header>
<!-- 主内容 -->
<main class="layout-main" id="main">
</main>
<!-- 底部 -->
<footer class="layout-footer"></footer>
</div>
```
> 大家请善用HTML5的语义标签,增加代码可读性。[查看](https://www.w3school.com.cn/tags/index.asp)
### 5. router 路由定义
`中线命名法`
> 路由定义可根据页面模块文件命名来定义,这样清晰明了,一一对应
```
{
path: '/base-component',
name: 'base-component',
component: () => import( /* webpackChunkName: "mv-map-component" */ '@/views/mv-map/doc-views/base-component'),
children: [{
path: 'mv-map',
name: 'mv-map',
component: () => import('@/views/mv-map/doc-views/base-component/mv-map')
}, {
path: 'mv-map-icon',
name: 'mv-map-icon',
component: () => import('@/views/mv-map/doc-views/base-component/mv-map-icon')
}]
}
```
### 6. 配置项, 常量
`纯大写 下划线命名法`
```
const TITLE: 'microvideo',
const TOKEN_KEY: 'mv-',
```
> 常量请用 const定义
### 7. vue全局挂载
`以$为前缀,小驼峰命名`
```
Vue.prototype.$localStorage = localStore
```
### 8. 函数,方法
- 命名方法: 小驼峰式命名法
- 命名规范: 前缀应该为动词
- 命名建议: 常用动词约定
> 以下列出了常用动词约定,有该场景的请用其前缀,在业务场景简单时,可以直接使用该动词命名方法
| 动词 | 含义 |
| ------ | ---------------------- |
| can | 判断是否可执行某个动作 |
| has | 判断是否含义某个值 |
| is | 判断是否为某个值 |
| get | 获取某个值 |
| set | 设置某个值 |
| init | 初始化操作 |
| handle | 点击操作触发 |
| load | 加载某些数据 |
| add | 添加操作 |
| del | 删除操作 |
| clear | 清空操作 |
| change | 变化操作 |
| edit | 编辑操作 |
| update | 更新操作 |
```
/**
* 初始化
*/
init() {}
/**
* 获取数据
*/
getData() {}
/**
* 点击重置
*/
handleReset() {}
```
## 目录
> 这里针对src以下目录进行规范说明
### api
> 接口配置文件夹
- 请根据业务模块建文件夹,以业务名命名
### components
- 公共组件请放在这里,按照功能划分文件夹
- 对于复杂的组件,模块下可以分子模块,需配置index.js安装入口
已mv-map 组件为例
```
|- mv-map
| |- components 子组件 文件夹
| |- config 配置 文件夹
| |- lib 库 文件夹
| |- static 资源 文件夹
| | |- images 图片 文件夹
| | |- styles 样式 文件夹
| |- index.js 入口文件
```
### views
- 按业务模块路由在views划分文件夹
- 每个模块文件夹设有index.vue入口文件,components 业务组件, page 页面
```
|- module 模块 文件夹
| |- controls 控件(该模块下独有控件) 文件夹
| |- pages 子页面 文件夹
| | |- list 列表 页面
| | | |- ListTop.vue 列表头部
| | | |- index.vue 列表 入口
| | |- Detail.vue 详情 页面
| |- index.vue 模块 入口页面
```
#### module/index.vue 入口页面的要求
> 当该模块下需要index.vue来划分页面进入子路由时,请创建index.vue;反之无需创建index.vue
1. 作为同级pgaes里相应子页面的引入入口文件,可放置多个router-view标签搭建页面(以[命名视图](https://router.vuejs.org/zh/guide/essentials/named-views.html)实现)
2. 可以根据权限、业务等维度对页面引入加以条件筛选
3. index.vue只围绕子页面的引入与不引入、显示与不显示,包含布局
#### module/pages 子页面的要求
1. 所有模块的子页面都对应一个路由地址,都是由路由引入显示
2. 页面的组件拆分需要根据业务,不能只根据UI设计拆分
#### module/controls 子控件的要求
1. 必须有数据输入,不可以自己产生数据,只负责展示
2. 所有交互不能具有业务属性,若设计业务属性,需要通过事件暴露
### router
```
|- router 路由
| |- modules 路由模块 文件夹
| | |- module1.js 模块1 路由配置
| | |- module2.js 模块1 路由配置
| |- index.js 路由配置入口文件
```
### store
```
|- store vuex管理
| |- modules vuex 子模块
| | |- module1.js 模块1
| | |- module2.js 模块1
| |- index.js vuex入口文件
```
## 注释规范
两类注释
1. 多行注释
```
/**
* 基本说明
* @author 作者名
* @date 时间:2022/2/23
*/
```
2. 单行注释
```
// 基本说明
```
### 多行注释
- 文件顶部注释
```
/**
* 文件功能的基本说明
* @author 作者名
* @date 时间
*/
```
- 方法、Class类注释
> 方法需要说明、入参、出参(类型和含义)
```
<!-- 场景1 方法注释 -->
/**
* 获取cookie
* @param {String} key 键
* @returns {String} 值
*/
function getCookie (key) {}
<!-- 场景2 Class注释 -->
/**
* 事件相关的sdk
*/
class EventSdk {
/**
* 构造函数
* @param {String} 事件id
*/
constructor (id) {}
/**
* 初始化
*/
init () {}
}
<!-- 场景3 修改他人文件方法时 -->
/**
* 方法的基本说明
* @update 小明 2022/2/23
* 修改的基本说明
*/
```
### 单行注释
- 方法里 多个逻辑模块 空格分隔并单行注释说明
```
function init () {
// 重置表单
resetForm()
// 获取列表
getList()
}
```
- 若有多个单行代码后面的注释 请保持统一列 格式化
```
let object = {
name:'', // 姓名
sex:'', // 性别
birthday:'', // 生日
}
```
## 项目配置
### package.json
只能架构师修改
### package-lock.json
该文件不可上传
### 环境配置文件
环境配置文件只能由一人修改提交
```
|- .env.development 开发环境配置
|- .env.production 生产环境配置
|- .env.staging 模拟(测试)环境配置
```
### 样式
- 只能使用less css预处理器
- 请避免使用行内样式
- 页面主色调 请在src/assets/styles/variable.less 设置变量使用
- import css 需要标注注释说明
- 请避免使用标签选择器
## Vue3
> 在使用纯setup写法时,为了提高可读性,请按照以下规定开发
* import放在最前面
* 其后代码按照以下排序分段用空行区分显示
* 常量变量在前
* 生命周期在中间
* 方法函数在后面
```
<script setup>
/**
* @desc 文件注释
* @auther xxx
* @date xxx
* **/
import { ref, onMounted } from 'vue'
const TITLE = '标题'
const data = ref(null)
onMounted(() => {
getData()
})
/**
* 获取数据
* @param {String} id 事件id
*/
const getData = (id) => {}
</script>
```
vuepress 指定首页目录
转载文章标签 vuepress 指定首页目录 vue.js javascript 前端 html 文章分类 架构 后端开发
上一篇:hadoop01 login
下一篇:vxlan 单臂路由
-
Linux目录结构
在Linux中一切皆文件,这些文件按照一定的规则存放在不同的目录当中。为了能够快速找到文件及以后的操作的规范性,我们必须记清楚Linux的目录结构。
目录 云计算 Linux centos 自动化运维 -
vuepress固定页脚 vue 首页
上图是要实现的首页界面一、创建首页页面1.在前台components里创建Layout.vue组件,作为首页页面。<template> <div>首页</div></template><script>export default {}</script><style></style&g
vuepress固定页脚 vue.js javascript html5 ico