# specification **Repository Path**: eBlueIce/specification ## Basic Information - **Project Name**: specification - **Description**: 前端开发规范 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-21 - **Last Updated**: 2022-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 前端开发规范 ## 一、前端项目目录规范 ``` |-- .env.development ------------ dev 环境变量 |-- .env.production-stage ------- stage 环境变量 |-- .env.production ------------- prod 环境变量 |-- .vscode --------------------- 统一 VSCode 配置 |-- README.md ------------------------ 说明文档,简单介绍项目情况 |-- public | |-- favicon.ico | |-- index.html | |-- libs -------------------- 不支持模块化加载的第三方 ES5 类库/模块 (只能通过全局变量引用) |-- library |-- components -------------- 存放通用组件 | |-- Fxxx --- 已F为开头的驼峰命名 | | |-- index.vue --- 该组件命名必须为index.vue | |-- styles ---------------------- 公共样式文件目录 | |-- loading.scss | |-- youbip.scss --- 该文件用于存放修改element-plus通用组件样式 |-- src |-- main.js |-- App.vue ├── api 请求地址配置 │ ├── command.ts 通用相关接口配置 |-- libs -------------------- 支持模块化加载但是无法通过 npm 安装的第三方 ES5 类库/模块 |-- assets ------------------ 静态资源目录,图片存放目录 |-- config ------------------ 配置文件存放目录 |-- library ----------------- 通用表格页面组件目录 |-- router -------------------- 路由配置 | |-- index.js | |-- hideRoutes.js |-- store -------------------- 项目共用数据(state) | |-- index.js | |-- getters.js | |-- xxx.js |-- utils -------------------- 通用方法 | |-- common.ts ------------------ 存放通用方法 | |-- menu.ts -------------------- 存放路由相关方法 | |-- judgeType.ts --------------- 存放类型判断方法 |-- views | |-- command ----------------- 低代码相关页面 | |-- command.vue --------- 配置管理页面 | |-- views.vue --------- 视图管理页面 | |-- forms.vue --------- 表单管理页面 | |-- models.vue --------- 模型管理页面 |-- components ----------------- 低代码通用配置组件 | |-- common ----------------- 公共组件 | |-- CommonAdd.vue --------- 表格上方新增组件 | |-- CommonEdit.vue --------- 操作栏按钮组件 | |-- CommonExport.vue --------- 导出组件 | |-- CommonImport.vue --------- 导入组件 ``` ## 二、Vue项目中的命名 ``` - 命名可遵循以下规则: - 1、有意义的名词、简短、具有可读性 - 2、以小写开头,采用驼峰命名,例如helloWorld - 3、公共组件命名以F开头命名(FXx.vue) - 4、文件夹命名主要以功能模块代表命名 - 5、组件内部禁止使用全局变量,全局样式,如特殊情况必须使用,必须增加命名空间杜绝全局污染,变量声明只能使用let const 杜绝var ``` ## 三、vue文件基本结构 ``` ``` - vue文件方法声明顺序 ``` - name - components - setup ``` - 页面结构命名 ``` - page: 代表整个页面,用于最外层。 - wrap: 外套,将所有元素包在一起的一个外围包,用于最外层 - wrapper: 页面外围控制整体布局宽度,用于最外层 - container: 一个整体容器,用于最外层 - head, header: 页头区域,用于头部 - nav: 导航条 - content: 内容,网站中最重要的内容区域,用于网页中部主体 - main: 网站中的主要区域(表示最重要的一块位置),用于中部主体内容 - column: 栏目 - sidebar: 侧栏 - foot, footer: 页尾、页脚。网站一些附加信息放置区域,(或命名为 copyright)用于底部 导航命名 - nav, navbar, navigation: 导航条或导航包,代表横向导航 - topnav: 顶部导航 - mainbav: 主导航 - subnav: 子导航 - sidebar: 边导航 - leftsidebar: 左导航 - rightsidebar: 右导航 - title: 标题 - summary: 摘要 - menu: 菜单,区域包含一般的链接和菜单 - submenu: 子菜单 - drop: 下拉 - dorpmenu: 下拉菜单 - links: 链接菜单 功能命名 - logo: 标记网站logo标志 - banner: 标语、广告条、顶部广告条 - login: 登陆 - loginbar: 登录条 - register: 注册 - tool, toolbar: 工具条 - search: 搜索 - searchbar: 搜索条 - searchinput: 搜索输入框 - shop: 功能区,表示现在的 - icon: 小图标 - label: 商标 - homepage: 首页 - subpage: 二级页面子页面 - hot: 热门热点 - list: 文章列表 - scroll: 滚动 - tab: 标签 - sitemap: 网站地图 - msg 或 message: 提示信息 - current: 当前的 - joinus: 加入 - status: 状态 - btn: 按钮 - tips: 小技巧 - note: 注释 - guild: 指南 - arr, arrow: 标记箭头 - service: 服务 - breadcrumb: (即页面所处位置导航提示) - download: 下载 - vote: 投票 - siteinfo: 网站信息 - partner: 合作伙伴 - link, friendlink: 友情链接 - copyright: 版权信息 ``` ## 四、注释规范 ## 代码注释 - 文件头部注释 - 脚本文件、样式文件 ```js /** * 说明 * @author 作者 */ ``` - vue 文件 ```html ``` - js 注释 - 注释格式 ```js /** * 文件头部、大的区块 */ /* 一般的区块 */ // 小的区块、行 ``` ```js /** * 使用 param 表示函数形参 * 使用 returns 表示函数返回值 * @param {Object} [title] - 参数说明 * @param {String} [columns] - 参数说明 * @returns {类型} */ // 例如 /* * 参数说明: * number:要格式化的数字 * decimals:保留几位小数 * dec_point:小数点符号 * thousands_sep:千分位符号 * */ export function myMethod(data, options) {} /** * 使用 type 进行类型断言 * @type {import('vue-router').RouteConfig[]} */ const routes = [] /** * 使用 typedef 定义类型,方便多处使用(命名时需要首字母大写) * @typedef {routes[0]} RouteConfig * @param {(meta: object, route: RouteConfig) => boolean} filterCallback * @returns {RouteConfig[]} */ export const filterMapRoutes = function(filterCallback) {} /** * 类型参考:https://www.tslang.cn/docs/handbook/basic-types.html * * 基本 * @type {boolean} * @type {string} * @type {number} * @type {'a' | 'b' | 'c'} * @type {1 | 2 | 3} * * 数组 * @type {Array} * @type {string[]} * * 函数 * @type {Function} * @type {(data) => void} * @type {(data: Array) => void | boolean} * * 对象 * @type {object} * * 联合 * @type {number | string} * @type {boolean | (() => boolean)} * * 导入 ts 类型 * @type {import('xxx').Yyy} * * 从现有的 js 变量或 ts 类型进行推导 * @type {Parameters} 取函数形参的类型 * @type {Parameters[0]} 取函数第一个形参的类型 * @type {ReturnType} 取函数返回值的类型 * @type {obj['xxx']} 取指定属性值的类型(不能使用点语法) * ... */ ``` - css 注释 - 全局样式需要写注释 ```less /* 说明 */ .g-class1 { } /* 说明 */ .g-class2 { } ``` - vue template 注释 - 适当使用注释与空行 ```html
block1
block2
``` ---