2023年6月21日发(作者:)

前端代码——前端代码规范(含html、css、javascript、vue等)前端代码规范代码提交规范每次提交代码时,commit按规范进⾏备注,如:本次提交新增了新功能:feat: 新增xx功能codefeat: msgfix: msgmerge: msgdocs: msgstyle: msgrefactor: msgtest: msgchore: msgrm: msgpod: msginfo新功能feature修复bugmerge⽂档修改格式,不影响代码运⾏的变动重构即不是新增功能,也不是修改bug的代码变动增加测试构建过程或辅助⼯具的变动删除⽂件或代码pod install / pod update podNameHTML规范1. 普通标签使⽤⼩写,外部引⼊的组件标签使⽤⼤写

2. 属性的定义,统⼀使⽤双引号。3. 有下载需求的图⽚采⽤ img 标签实现,⽆下载需求的图⽚采⽤ CSS 背景图实现产品 logo、⽤户头像、⽤户产⽣的图⽚等有潜在下载需求的图⽚,以 img 形式实现,能⽅便⽤户下载⽆下载需求的图⽚,⽐如:icon、背景、代码使⽤的图⽚等,尽可能采⽤ css 背景图实现4. 为图⽚添加 alt 属性,提⾼图⽚加载失败时的⽤户体验5. 为图⽚添加 width 和 height 属性,以避免页⾯抖动CSS规范前缀规范1. class命名class 必须单词全字母⼩写,单词间以 - 分隔(例如,.btn 和 .btn-danger)。避免过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。class 名称应当尽可能短,并且意义明确。2. CSS命名规范(规则)常⽤的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏⽬:column 页⾯外围控制整体佈局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo ⼴告:banner 页⾯主体:main 热点:hot 新闻:news 下载:download ⼦导航:subnav 菜单:menu ⼦菜单:submenu 搜索:search 友情链接:friendlink 页脚:footer 版权:copyright 滚动:scroll 内容:content 标签:tags ⽂章列表:list 提⽰信息:msg ⼩技巧:tips 栏⽬标题:title 加⼊:joinus 指南:guide 服务:service 注册:regsiter 状态:status 投票:vote 合作伙伴:partnerJavaScript规范注释原则As short as possible(如⽆必要,勿增注释):尽量提⾼代码本⾝的清晰性、可读性。As long as necessary(如有必要,尽量详尽):合理的注释、空⾏排版等,可以让代码更易阅读、更具美感。单⾏注释必须独占⼀⾏。// 后跟⼀个空格,缩进与下⼀⾏被注释说明的代码⼀致。多⾏注释避免使⽤ /…/ 这样的多⾏注释。有多⾏注释内容时,使⽤多个单⾏注释。函数/⽅法注释1. 函数/⽅法注释必须包含函数说明,有参数和返回值时必须使⽤注释标识。;2. 参数和返回值注释必须包含类型信息和说明;/** *

函数描述 * * @param {string} p1

参数1的说明 * @param {string} p2

参数2的说明,⽐较长 *

那就换⾏了. * @param {number=} p3

参数3的说明(可选) * @return {Object}

返回值描述 */function foo(p1, p2, p3) { let p3 = p3 || 10; return { p1: p1, p2: p2, p3: p3 };}命名规范使⽤ Camel 命名法。运算符不要使⽤约相等运算符,使⽤=强相等运算符同理使⽤!==其他:⼀个请求时,使⽤.then()function request(){ getDataList().then(res => { (res); })}多个请求时,使⽤async/awaitasync function request(){ const res1 = await getDataList1(); const res2 = await getDataList2();}Vue 代码规范常规当在组件中使⽤ data 属性的时候 (除了 new Vue 外的任何地⽅),它的值必须是返回⼀个对象的函数 data() { return {…} }。prop 的定义应该尽量详细,⾄少需要指定其类型。export default { prop: [ data: { type: Array, default() { return [] } } ]}布尔类型的 attribute, 为 true 时直接写属性值。不要在computed中对vue变量进⾏操作。应该优先通过 prop 和事件进⾏⽗⼦组件之间的通信,⽽不是 this.$parent 或改变 prop。在组件上总是必须⽤ key 配合 v-for,以便维护内部组件及其⼦树的状态。v-if 和 v-for 不能同时使⽤公共⽅法尽量不要挂到原型上, 可以写在 utils ⽂件,也可以使⽤ mixin ⽂件。不要将业务公共组件注册到全局。不要将任何第三⽅插件挂载到 vue 原型上。具有⾼度通⽤性的⽅法,要封装到 libs、全局组件或指令集⾥。为组件样式设置作⽤域。尽量使⽤指令缩写。vuexState (opens new window)为单⼀状态树,在 state 中需要定义我们所需要管理的数组、对象、字符串等等,只有在这⾥定义了,在 vue的组件中才能获取你定义的这个对象的状态。修改 state 中数据必须通过 mutations。每⼀个可能发⽣改变的 state 必须同步创建⼀条或多条⽤来改变它的 mutations。服务端获取的数据存放在 state 中,作为原始数据保留,不可变动。Getters (opens new window)有点类似 的计算属性,当我们需要从 store 的 state 中派⽣出⼀些状态,那么我们就需要使⽤getters,getters 会接收 state 作为第⼀个参数,⽽且 getters 的返回值会根据它的依赖被缓存起来,只有 getters 中的依赖值(state 中的某个需要派⽣状态的值)发⽣改变的时候才会被重新计算。通过 getters 处理你需要得到的数据格式,⽽不是通过修改 state 原始数据。组件内不强制使⽤ mapGetters,因为你可能需要使⽤ getter 和 setter。改变 state 的唯⼀⽅法就是提交 mutations (opens new window)。组件内使⽤ mapMutations 辅助函数将组件中的 methods 映射为 调⽤。命名采⽤ ⼤写字母 + 下划线 的规则。定义 CLEAR,以确保路由切换时可以初始化数据。Actions页⾯重的数据接⼝尽量在 actions (opens new window)中调⽤。服务端返回的数据尽量不作处理,保留原始数据。获取到的数据必须通过调⽤ mutations 改变 state。Modules通常情况下按照页⾯划分 modules (opens new window)。默认内置了 system 保证了脚⼿架的基础功能。每个页⾯模块或页⾯的⼦模块添加属性 namespaced: true。⽂件命名规则Component所有的Component⽂件都是以⼤写开头 (PascalCase),这也是官⽅所推荐的。所有的Component⽂件都是以⼤写开头 (PascalCase),这也是官⽅所推荐的。但除了 。例⼦:@/components/BackToTop/@/components/Charts/@/views/example/components/ ⽂件所有的.js⽂件都遵循横线连接 (kebab-case)。例⼦:@/utils/@/views/svg-icons/@/components/MarkdownEditor/s在views⽂件下,代表路由的.vue⽂件都使⽤横线连接 (kebab-case),代表路由的⽂件夹也是使⽤同样的规则。例⼦:@/views/svg-icons/@/views/svg-icons/使⽤横线连接 (kebab-case)来命名views主要是出于以下⼏个考虑。横线连接 (kebab-case) 也是官⽅推荐的命名规范之⼀ ⽂档views下的.vue⽂件代表的是⼀个路由,所以它需要和component进⾏区分(component 都是⼤写开头)页⾯的url 也都是横线连接的,⽐如/export-excel,所以路由对应的view应该要保持统⼀没有⼤⼩写敏感问题代码格式化⼯具使⽤prettier插件进⾏开发代码检测⼯具使⽤eslint插件进⾏开发安装ESlint插件安装并配置完成 ESLint 后,我们继续回到 VSCode 进⾏扩展设置,依次点击 ⽂件 > ⾸选项 > 设置 打开 VSCode 配置⽂件,添加如下配置{ "ve": "off", "te": [ "javascript", "javascriptreact", "vue-html", { "language": "vue", "autoFix": true } ], "": "onSave", "xOnSave": true}

2023年6月21日发(作者:)

前端代码——前端代码规范(含html、css、javascript、vue等)前端代码规范代码提交规范每次提交代码时,commit按规范进⾏备注,如:本次提交新增了新功能:feat: 新增xx功能codefeat: msgfix: msgmerge: msgdocs: msgstyle: msgrefactor: msgtest: msgchore: msgrm: msgpod: msginfo新功能feature修复bugmerge⽂档修改格式,不影响代码运⾏的变动重构即不是新增功能,也不是修改bug的代码变动增加测试构建过程或辅助⼯具的变动删除⽂件或代码pod install / pod update podNameHTML规范1. 普通标签使⽤⼩写,外部引⼊的组件标签使⽤⼤写

2. 属性的定义,统⼀使⽤双引号。3. 有下载需求的图⽚采⽤ img 标签实现,⽆下载需求的图⽚采⽤ CSS 背景图实现产品 logo、⽤户头像、⽤户产⽣的图⽚等有潜在下载需求的图⽚,以 img 形式实现,能⽅便⽤户下载⽆下载需求的图⽚,⽐如:icon、背景、代码使⽤的图⽚等,尽可能采⽤ css 背景图实现4. 为图⽚添加 alt 属性,提⾼图⽚加载失败时的⽤户体验5. 为图⽚添加 width 和 height 属性,以避免页⾯抖动CSS规范前缀规范1. class命名class 必须单词全字母⼩写,单词间以 - 分隔(例如,.btn 和 .btn-danger)。避免过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。class 名称应当尽可能短,并且意义明确。2. CSS命名规范(规则)常⽤的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏⽬:column 页⾯外围控制整体佈局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo ⼴告:banner 页⾯主体:main 热点:hot 新闻:news 下载:download ⼦导航:subnav 菜单:menu ⼦菜单:submenu 搜索:search 友情链接:friendlink 页脚:footer 版权:copyright 滚动:scroll 内容:content 标签:tags ⽂章列表:list 提⽰信息:msg ⼩技巧:tips 栏⽬标题:title 加⼊:joinus 指南:guide 服务:service 注册:regsiter 状态:status 投票:vote 合作伙伴:partnerJavaScript规范注释原则As short as possible(如⽆必要,勿增注释):尽量提⾼代码本⾝的清晰性、可读性。As long as necessary(如有必要,尽量详尽):合理的注释、空⾏排版等,可以让代码更易阅读、更具美感。单⾏注释必须独占⼀⾏。// 后跟⼀个空格,缩进与下⼀⾏被注释说明的代码⼀致。多⾏注释避免使⽤ /…/ 这样的多⾏注释。有多⾏注释内容时,使⽤多个单⾏注释。函数/⽅法注释1. 函数/⽅法注释必须包含函数说明,有参数和返回值时必须使⽤注释标识。;2. 参数和返回值注释必须包含类型信息和说明;/** *

函数描述 * * @param {string} p1

参数1的说明 * @param {string} p2

参数2的说明,⽐较长 *

那就换⾏了. * @param {number=} p3

参数3的说明(可选) * @return {Object}

返回值描述 */function foo(p1, p2, p3) { let p3 = p3 || 10; return { p1: p1, p2: p2, p3: p3 };}命名规范使⽤ Camel 命名法。运算符不要使⽤约相等运算符,使⽤=强相等运算符同理使⽤!==其他:⼀个请求时,使⽤.then()function request(){ getDataList().then(res => { (res); })}多个请求时,使⽤async/awaitasync function request(){ const res1 = await getDataList1(); const res2 = await getDataList2();}Vue 代码规范常规当在组件中使⽤ data 属性的时候 (除了 new Vue 外的任何地⽅),它的值必须是返回⼀个对象的函数 data() { return {…} }。prop 的定义应该尽量详细,⾄少需要指定其类型。export default { prop: [ data: { type: Array, default() { return [] } } ]}布尔类型的 attribute, 为 true 时直接写属性值。不要在computed中对vue变量进⾏操作。应该优先通过 prop 和事件进⾏⽗⼦组件之间的通信,⽽不是 this.$parent 或改变 prop。在组件上总是必须⽤ key 配合 v-for,以便维护内部组件及其⼦树的状态。v-if 和 v-for 不能同时使⽤公共⽅法尽量不要挂到原型上, 可以写在 utils ⽂件,也可以使⽤ mixin ⽂件。不要将业务公共组件注册到全局。不要将任何第三⽅插件挂载到 vue 原型上。具有⾼度通⽤性的⽅法,要封装到 libs、全局组件或指令集⾥。为组件样式设置作⽤域。尽量使⽤指令缩写。vuexState (opens new window)为单⼀状态树,在 state 中需要定义我们所需要管理的数组、对象、字符串等等,只有在这⾥定义了,在 vue的组件中才能获取你定义的这个对象的状态。修改 state 中数据必须通过 mutations。每⼀个可能发⽣改变的 state 必须同步创建⼀条或多条⽤来改变它的 mutations。服务端获取的数据存放在 state 中,作为原始数据保留,不可变动。Getters (opens new window)有点类似 的计算属性,当我们需要从 store 的 state 中派⽣出⼀些状态,那么我们就需要使⽤getters,getters 会接收 state 作为第⼀个参数,⽽且 getters 的返回值会根据它的依赖被缓存起来,只有 getters 中的依赖值(state 中的某个需要派⽣状态的值)发⽣改变的时候才会被重新计算。通过 getters 处理你需要得到的数据格式,⽽不是通过修改 state 原始数据。组件内不强制使⽤ mapGetters,因为你可能需要使⽤ getter 和 setter。改变 state 的唯⼀⽅法就是提交 mutations (opens new window)。组件内使⽤ mapMutations 辅助函数将组件中的 methods 映射为 调⽤。命名采⽤ ⼤写字母 + 下划线 的规则。定义 CLEAR,以确保路由切换时可以初始化数据。Actions页⾯重的数据接⼝尽量在 actions (opens new window)中调⽤。服务端返回的数据尽量不作处理,保留原始数据。获取到的数据必须通过调⽤ mutations 改变 state。Modules通常情况下按照页⾯划分 modules (opens new window)。默认内置了 system 保证了脚⼿架的基础功能。每个页⾯模块或页⾯的⼦模块添加属性 namespaced: true。⽂件命名规则Component所有的Component⽂件都是以⼤写开头 (PascalCase),这也是官⽅所推荐的。所有的Component⽂件都是以⼤写开头 (PascalCase),这也是官⽅所推荐的。但除了 。例⼦:@/components/BackToTop/@/components/Charts/@/views/example/components/ ⽂件所有的.js⽂件都遵循横线连接 (kebab-case)。例⼦:@/utils/@/views/svg-icons/@/components/MarkdownEditor/s在views⽂件下,代表路由的.vue⽂件都使⽤横线连接 (kebab-case),代表路由的⽂件夹也是使⽤同样的规则。例⼦:@/views/svg-icons/@/views/svg-icons/使⽤横线连接 (kebab-case)来命名views主要是出于以下⼏个考虑。横线连接 (kebab-case) 也是官⽅推荐的命名规范之⼀ ⽂档views下的.vue⽂件代表的是⼀个路由,所以它需要和component进⾏区分(component 都是⼤写开头)页⾯的url 也都是横线连接的,⽐如/export-excel,所以路由对应的view应该要保持统⼀没有⼤⼩写敏感问题代码格式化⼯具使⽤prettier插件进⾏开发代码检测⼯具使⽤eslint插件进⾏开发安装ESlint插件安装并配置完成 ESLint 后,我们继续回到 VSCode 进⾏扩展设置,依次点击 ⽂件 > ⾸选项 > 设置 打开 VSCode 配置⽂件,添加如下配置{ "ve": "off", "te": [ "javascript", "javascriptreact", "vue-html", { "language": "vue", "autoFix": true } ], "": "onSave", "xOnSave": true}