1.概要

前端开发时,开发人员需要遵循的一些开发规范。

2. VUE规范

2.1 VUE文件存放文件夹views

views 文件夹下面是由 以页面为单位的 vue 文件 或者 模块文件夹 组成的,放在 src 目录之下,与 components、assets 同级。

2.2 views 下的文件夹命名

views 下面的文件夹代表着模块的名字

文件夹命名

  • 由名词组成(car、order、cart)

  • 单词只能有一个(good: car order cart)(bad: carInfo carpage)

  • 尽量是名词(good: car)(bad: greet good)

  • 以小写开头(good: car)(bad: Car)

2.3 views 下的 vue 文件命名

  • 放在模块文件夹之下

  • 只有一个文件的情况下不会出现文件夹,而是直接放在 views 目录下面,如 Login Home

  • 尽量是名词

  • 大写开头,开头的单词就是所属模块名字(CarDetail、CarEdit、CarList)

  • 名字至少两个单词(good: CarDetail)(bad: Car)

  • 常用结尾单词有(Detail、Edit、List、Info、Report)

  • 以 Item 结尾的代表着组件(CarListItem、CarInfoItem)

2.4 vue 编码顺序

在编写vue 文件时,需要注意代码的顺序,需要遵循如下的顺序来编写代码。

  • name(名字)
  • components(组件注册)
  • props(属性)
  • mixins(继承)
  • computed(计算属性)
  • data(数据)
  • created(实例创建完成)
  • mounted(模板渲染完成,可以拿到DOM节点和数据)
  • activited(keeplive)
  • updated (组件更新后调用)
  • beforeUpdate(组件更新之前)
  • metods(vue方法)
  • filter
  • watch

2.5 方法命名

  • method 自定义方法命名

动宾短语(good:jumpPage、openCarInfoDialog)(bad:go、nextPage、show、open、login)

  • ajax 方法
    以 get、post 开头,以 data 结尾(good:getListData、postFormData)(bad:takeData、confirmData、getList、postForm)

  • 事件方法

以 on 开头(onTypeChange、onUsernameInput)

init、refresh 单词除外

  • 尽量使用常用单词开头

(set、get、open、close、jump)

  • 驼峰命名

(good: getListData)(bad: get_list_data、getlistData)

2.6 data props 注意点

  • 使用 data 里的变量时请先在 data 里面初始化

  • props 指定类型,也就是 type

  • props 改变父组件数据 基础类型用 $emit ,复杂类型直接改

  • ajax 请求数据用上 isLoading、isError 变量,控制加载进度条

  • 不命名多余数据
    例如 现在是详情页、你的数据是 ajax 请求的,那就直接声明一个对象叫 data,而不是每个字段都声明

2.7 生命周期方法注意点

  • 不在 mounted、created 之类的方法写逻辑,取 ajax 数据,
  • 在 created 里面监听 Bus 事件

2.8 实例

2.8.1 文件命名

src
    assets
        ...
    components
        ...
    views
        car
            CarEdit.vue
            CarList.vue
            CarDetai.vue
        user
            UserDetail.vue
            UserEdit.vue
            UserPasswordRest.vue
        customer
            CustomerCardItem.vue
            CustomerList.vue

2.8.2 vue文件

<template>
    <div class="container">
        <ul>
            <li v-for="car in carList" :key="car.id">
                <img src="car.logo" alt="">
                <p>{{car.name | empty}}</p>
            </li>
        </ul>
        <button @click="loadNextPage">下一页</button>
        <div class="last" v-show="isLast">已经没有更多了...</div>
        <div class="loading" v-show="isLoading">正在加载...</div>
        <div class="error" v-show="isError" @click="getCarListData">加载错误,点击 <span class="font-blue">这里</span> 重试</div>
    </div>
</template>
<script>
    export default {
        computed: {
            // 是否是最后一条
            isLast() {
                return !this.isLoading && this.carList.length > 10 && !this.isError && this.page >= this.totalPage;
            }
        },
        data() {
            return {
                carList: [],
                // 总页数
                totalPage: 1, 
                // 当前页数
                page: 0, 
                // 是否正在加载
                isLoading: false, 
                // 是否加载错误
                isError: false 
            }
        },
        mounted() {
            this.loadNextPage();
        },
        methods: {
            // 获取列表数据
            getCarListData() {
                let data = {
                    page: this.page, // 当前页数
                    pageSize: 10 // 每页条数 
                }

                this.isLoading = true;
                this.isError = false;
                this.$ajaxGet('/car/list', data).then(data => {
                    // 加载成功
                    this.carList.concat(data.list);
                    this.page = data.page;
                    this.totalPage = data.totalPage
                    this.isLoading = false;
                }).catch(() => {
                     //  加载列表失败
                    this.isLoading = false;
                    this.isError = true;
                });
            },
            // 下一页
            loadNextPage() {
                if(this.page <= this.totalPage) {
                    this.page ++;
                    this.getCarListData();
                }
            }
        },
        filters: {
            empty(value) {
                return value || '未知';
            }
        }

    }
</script>

2.9 组件文档

在编写组件时我们需要会编写组件的属性,发布的事件,或者控件的返回的数据类型。

  • 控件的属性都需要进行说明,如果参数是JSON格式的数据,需要进行说明。
  • 控件发布的事件,事件参数进行说明
  • 控件的返回数据需要给出结构及说明。
文档更新时间: 2022-04-02 14:22   作者:zyg