Vue3+TS 项目规范及使用规范(个人见解)

文章介绍了前端项目目录结构,包括.vue文件的组织,actions、api、format、interface文件夹的使用。提到了文件命名规范,如图片、html、css、js文件的小写、下划线分隔命名,以及组件命名的大驼峰规则。此外,讨论了变量、常量、方法、接口命名的约定,并强调了注释的重要性和不同语言的注释格式。最后,文章提及了代码风格和复杂度的一般指导原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.项目搭建方面

1.1项目目录文件名

项目文件夹命名基本就和项目名称命名规则一样,有复数结构的要使用复数,例如下面这些文件src下的 assets、components、directives、utils、views,一些api 接口会放到api文件夹,interface(接口)定义在文件夹下,一些格式化的东西放format,  .vue具体处理封装成函数放actions文件夹下等,下图标出了一些,除了生成项目时默认生成的一些文件夹,自己定义的文件夹,用于存放各种用途的东西

1.2 actions、api、format、interface、store(这里使用的是Pinia)定义及使用举例(待验证好不好用)

拿个页面看看这些文件定义及使用是怎么个使用,这里拿购物车页面作为示范,其中可能有些不好的习惯,大家不用在意(因为是之前写的可能来不及更改),只需要关注我们的聚焦点(也就是标题1.2)下面具体瞧瞧

来看看cart.vue文件,随便提一提我的样式风格

我们的项目现在基本极大部分都会使员工 TailwindCss,看看使用TailwindCss之后,style样式代码基本可以直接去掉了,结果就是少了一百多行样式代码,所以我们项目的样式风格就TailwindCss为主Sass/Less为辅,具体TailwindCss怎么用可以看看其官网

接下来正式看看,我们的各个文件的定义 

首先看看.vue文件中是怎么使用各个文件的东西的,然后再各个去看各文件夹下的具体内容

.vue文件夹下的东西

actions文件夹下的东西(将具体操作放这里,让.vue文件更简洁)

api文件夹下的东西

interface文件夹下的具体东西

format 文件夹里面的东西

这个文件夹里面的东西一般是格式化相关的代码,这里就不具体举例了,其使用方式也是导入,然后通过 Format.formatPrice(10.222)就会得到10.22,一般后台管理系统会使用得多一点。

1.3项目配置文件

这块主要就是使用构建项目时生成的即可,例如像

vue.config.js、README.md等等这些就不用改变了......

2.文件、组件命名方面

2.1文件命名

2.1.1 图片文件命名

全部采用小写方式, 优先选择单个单词命名,多个单词命名以下划线分隔

例如


logo.png
home_log.jpg

2.1.2 html文件命名

html文件命名其实和图片命名规则样,例如

home_view.html
login_view.html

2.1.3 css文件命名

根据自己在日常的积累过程中,发现是以短横线为分隔的命名方式,是我喜欢的,所说义就总结下来作为自己的日常开发规范了


index.css
home-view.css
login-view.css

2.1.4 js文件命名

命名方式通css文件命名规则

index.js
home-view.js
login-view.js

2.2组件命名

2.2.1 多项目复用的组件

有的组件,我们可能多个项目都会用到,所以命名的时候,我们可以使用Base作为开头,例如我们这个组件在后台管理类项目用到,在前台商城项目也用到,那我们在命名组件名称的时候就可以加一个Base作为前缀,例如


BaseDialog.vue
BaseTags.vue

2.2.2 本项目全局复用的组件

也应该使用大驼峰命名法,就如比气门scr目录下的compoments下的组件,命名时使用大驼峰法


MyTable.vue
MyForm.vue

2.2.3 各个页面组件

各个页面下的组件命名规则,使用父组件最为前缀的方式进行命名,因为编译器会按照一定规则排序我们的组件文件,并且组件命名以一般化的单词开头,以描述性的修饰词结尾,例如


Cart.vue
CartInputAdd.vue
CartInputSearch.vue
/** 一般化单词-元素/组件-动作修饰词,而且不是常用的缩写,尽量别用 */

最后总结一下,就是组件名尽量使用多单词大驼峰命名法,因为这样做可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的

    • 代码方面

3.1 变量、常量、方法、类型、请求接口命名

3.1.1 变量

一般使用小驼峰命名法,我的规则是使用,类型(大概意思就是属于什么的) + 描述例如


let userName = '张三' 
let loginPassword = '1997224'

3.1.2 常量

常量一般使用全大写,多个单词使用下划线,例如


const MAX_VALUE = 100
const URL = 'http://www.xxx.com'

3.1.3 方法

方法一般也是使用小驼峰命名规则,可以是动词开头,一般是动词加名词

例如


getHomeList
setPassword
postFormData

当然也可以是类似以下的词

动词

含义

返回值

is

判断是否是某个值

是:true 不是:false

can

判断是否可以xxx

可以:true 不可以:false

has

判断是否有

有:true 没有:false

set

设置

一般无返回值/返回是否设置成功

get

获取

返回获取的值

3.1.4 ts类型定义

对于vue3+ts开发,一般我们都需要进行类型定义,像我一般定义 interface的时候,就喜欢类每个接口带一个后缀Type, 代表其实一个类型,例如


interface LoginDataType {
    userName: string
    password: string
}

3.1.5 请求接口定义

我在定义请求接口的时候,也会给接口加一个Api后缀,因为这样就可以与普通方法进行区别


export const loginApi = (data)=>{
    return axios({
        url: 'xxx',
        method: 'post',
        data
    })
}

3.1.6 自定义事件及其处理方法命名

自定义事件命名一般使用on开头,主要目的就是与原生事件做区分,而事件对应处理方法则使用handle开头,代表是处理某个事件的方法,具体例子如下

<div
  @on-search="handleSearch"
  @on-clear="handleClear"
  @on-clickoutside="handleClickOutside">
</div>

3.2 注释

注释目的:

提稿代码的可读性,从而提高可维护性

注释的原则

如无必要,勿增注释

如有必要, 尽量详尽

3.2.1 html 注释

单行注释:一般用于简单的描述,如某些状态、属性描述等

<!-- 单行注释 -->
<div>...</div>

模块注释

<!-- Strat module1 --> 
<div class="module1">
  ...
</div>
<!-- End module1 -->

嵌套的注释

<!-- Strat module1 --> 
<div class="module1">
    <!-- module A -->
    <div>A</div>
    <!-- module B -->
    <div>B</div>
    <!-- module C -->
    <div>C</div>    
</div>
<!-- End module1 -->

3.2.2 css注释

行注释:行注释与行之间分隔 一行

/* test1 注释 */ 
.test1 {} 

/* test2 注释 */ 
.test2 {} 

模块注释:模块注释之间分隔两行

/* css Module A
---------------------------------------------------------------- */
.mod_a {}


/* css Module B
---------------------------------------------------------------- */
.mod_b {}

3.2.3 js注释

单行注释:其实与css hang单行注释规则类似,只不过是,符号不一样 js使用 // 作为单行注释

// js 单行注释
const active = true

模块注释:多行注释使用 /** ... */,而不是多行的 //。

/**
 * 功能
 * 参数
 * 返回值
 */
function make (tag) {
  // ...

  return element
}

3.3 其他

一般交给elint 就可以了

还有一些规范,比如说一个方法不能超过50行,嵌套不能超过5层等...

4.总结

        以上是个人的一些见解,希望对你有所帮助,当然,如果有大佬愿意指出其中不好的地方就更好了,哈哈哈

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZL随心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值