变量命名要与后端保持一致
发布时间:2025-06-24 18:18:55 作者:北方职教升学中心 阅读量:204
请仔仔细细阅读 Vue官方规范,切记,此为第一步。 标签顺序保持一致
👉1.5、script 标签内部结构顺序 👉1.8、Vue 项目目录规范 👉2.1、 标签顺序保持一致
单文件组件应该总是让标签顺序保持为
正例:<template></template><script></script><stylescoped></style>
反例:
<template></template><stylescoped></style><script></script>
👉1.5、 目录说明
目录名按照上面的命名规范,其中components 组件用大写驼峰,其余除components 组件目录外的所有目录均便用 kebab-case 合名。
router 尽量按照 views 中的结构保持一致
srore 按照业务进行拆分不同的正文件6.views 目录
- 命名要与后端、Vue Router 规范
- 页面跳转数据传递使用路由参数
页面跳转,例如A页面跳转到B页面,需要将A页面的数据传递到B页面,推使用路由参数进行传参,而不是将需要传递的数据保存 vuex,然后在 B页面取出 vuex的数据,因为如果在 B页面刚新会导致 vuex 数据丢失
正例:letid='1113'this.$router.push({name:'userDetail',query:{id:id }})
- 使用路由懒加载(延迟加载)机制
{path:"/Login",name:"Login",// 登录页component:()=>import('@/components/Login/Login.vue'),},
3.router 中的命名规范
path、其他
- 尽量不要手动操作 DOM
因使用 vue 框架,所以在项目开发中尽量使用 vue 的数据驱动更新 DOM,尽量(不到万不得已)不要手动操作DOM,包括:增删改 dom 元素、指令都使用缩写形式指令推荐都使用缩写形式,(用 : 表示v·bind: ,用 @ 表示 v-on, 用#表示 v-slot:)
正例:<input@input="onInput"@focus="onFocus">
反例:
<inputv-on:input="onInput"@focus="onFocus">
👉1.4、
正例:
<1--在单文件组件、script 标签内部结构顺序
components>props>data>compued>watch>filter>钩子函数(钩子函数按其执行顺序)>methods
👉1.8、Vue编码基础
- 👉1.1、router、我们应该尽量描述应该出现的是什么,而非如何计算那个值。文件名都是kebab-case,这样很方便找到对应的文件)
{path:'/system/system-list',// 系统列表name:'SystemList',component:()=>import('../components/system/system-list.vue')}
4.router 中的 path 命名规范
path除了采用kebab-case命名规范以外,必须以/开头,即使是children里的path也要以/开头。正例:
后端ulr:EmployeeController.java
/employee/add/employee/delete/id/employee/update
前端:employee.js
//添加员工addEmployee:(data)=>{rerutn postAxios('/employee/add',data)}//更新员工updateEmployee:(data)=>{rerutn postAxios('/employee/update',data)}//删除员工deleteEmployee:(employeeId)=>{rerutn postAxios('/employee/delete/'+employeeId)}
2. assets目录
assels 为静态资源,里面存放 images,styles,icons等静态资源,静态资源命名格式为 kebab-case|-- assets|-- images| |-- background-color.png| |-- upload-header.png|-- styles
3.components目录
此目录应按照组件进行目录划分,目录命名为KebabCase,组件命名规则也为KebabCase|-- error-log| |--index.vue| |-- index.less|-- markdow-editor| |--index.vue| |--index.js|-- kebab-case
4.constants 目录
此目录存放项目所有常量,如果常量在vue 中使用,请使用vue-enum 插件(https://gitee.com/lab1024/vue-enum)
vue-enum
目录结构:|-- index.js|-- role.js|-- employee.js
例子:index.js
exportletenumInfo ={SOURCE_IN_TYPE:{PURCHASE_IN:{value:1,desc:'采购入库'},REFUND_IN:{value:2,desc:'退货入库'},CHECK_IN:{value:3,desc:'盘点入库'},CONFIRM_IN:{value:4,desc:'取消订单入库'}}}
5.router与store 目录
这两个目录一定要将业务进行拆分,不能放到一个文件里。如下示例
目的:
经常有这样的场景:某个页面有问题,要立刻找到这个文件,如果不用以/开头,path为parent和children组成的,可能经常需要在router文件里搜索多次才能找到,而如用以/开头,则能立刻搜索到对应的组件{path:'/',// 首页name:'home',component:()=>import('../components/home/home.vue'),redirect:'/panel',// 重定向到看板页children:[{path:'/panel',// 大屏面板name:'Panel',component:()=>import('../components/panel/panel.vue'),meta:{bg:'bg'},// 背景图},{path:'/system',// 系统设置name:'System',component:()=>import('../components/system/system.vue')}]}
👉2、字符串模板和JSX中--><myComponent/><Rom><table:colum="data"/></Rom>
反例:
<my-component/><row><table:column="data"/></row>
- 组件的 data 必须是一个函致
当在组件中使用 data 属性的时候 (除了 new Vue 外的任何地方),它的值必须是返回一个对象的函数。前端代码规范Vue篇
👉1、 目录说明
- 👉2.4、组件规范
- 组件名为多个单词
组件名应该始终是多个单词组成(大于等于 2),且命名规范为KebabCase格式。复杂表达式会让你的模极变得不那么声明式。childrenPoints命名规范采用kebab-case命名规范(尽量vue文件的目录结构保持一致,因为目录、使用 Vue-cli 脚手架使用 vue·cli3 来初始化项目,项目名按照上面的命名规范
👉2.3、而且计算属性和方法使得代码可以重用。v-show 与 v-if 选择
- 👉1.7、
- 此目录对应后端 API 接口,按照后端一个controller 一个api.js文件。若项目较大时,可以按照业务划分子目录,并与后端保持一致。Vue 项目目录规范
- 👉2.1、
🟢 一、
引自《阿里规约》的开头片段:
…现代软件架构的复杂性需要协同开发完成,如何高效地协同呢?无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没有限速,没有红绿灯,谁还敢上路行驶。- api中的方法名字要与后端 api url 尽量保持语义高度一致性。组件规范
- 👉1.2、以及更改样式、 因为如果直按是一个对象的话,子组件之间的属性值会互相影响,
正例:
exportdefault{name:'App',data(){return{title:'我是一个标题',}},}
反例:
exportdefault{name:'App',data:{title:'我是一个标题',},}
- Prop 定义应该尽量详细
- 必须使用 camelCase 驼峰命名
- 必须指定类型
- 必须加上注释,表明其含义
- 必须加上 required 或者 default,两者二选其一
- 如果有业务需要,必须加上 validator 验证
正例:
exportdefault{name:"HelloWorld",props:{//组件状态,用于控制组件的颜色status:{type:String,required:true,validator:function(value){return["succ","info","error"].indexof(value)!==-1;},},// 用户级别,用于显示皇冠个效userLevel:{type:String,required:true,},},};
- 为组件样式设置作用域
正例:
<template><divclass="hello">HelloWorld </div></template><!-- Add "scoped" attribute to limit CSS to this component only --><stylescoped>.hello{color:white;font-size:22px;margin:10px 0 0;}</style>
反例:
<template><divclass="hello">HelloWorld </div></template><!-- 没有scoped 特性--><style>.hello{color:white;font-size:22px;margin:10px 0 0;}</style>
- 如果特性元素较多,应该主动换行
正例:
<MyComponentfoo="a"bar="b"baz="c"></MyComponent>
反例:
<MyComponentfoo="a"bar="b"baz="c"></MyComponent>
👉1.2、
正例:
exportdefault{name:'TodoItem',// ...}
反例:
exportdefault{name:'Todo',// ...}exportdefault{name:'todo-item',// ...}
- 组件文件名为 pascal-case 格式
正例:
components/|-my-component.vue
反例:
components/|-myCoaponent.vue|-MyCoaponent.vue
- 基础组件文件名为 base 开头,使用完整单词而不是缩写
正例:
components/|-base-button.vue|-base-table.vue|-base-icon.vue
反例:
components/|-MySutton.vue|-VueTable.vue|-Icon.vue
- 和父组件紧密属合的子组件应该以父组件名作为前缀命名
正例:
components/|-todo-list.vue|-todo-list-item.vue|-todo-list-item-button.vue|-user-profi1e-options.vue(完整单词)
反例:
components/|-TodoList.vue|-TodoItem.vue|-TodoButton.vue|-UProfopts.vue(使用了缩写)
- 在Template 模版中使用组件,应使用 PascalCase 模式,并且使用自闭合组件。其他
✒️总结