vue编写规范

前端编写规范

一、常见避免风险操作

1、vue3.0事件名称不要定义常用保留词[强制]。

比如(click、change、select、submit)。

也可以通过子组件的选项中设置了 ==inheritAttrs: false==解决这个问题。

原因:vue3.0 移除v-on.native修饰符,对于原生的事件v-on也可以接收到。那么可能就造成原生本地事件触发定义事件,导致意外的事件触发。

==错误示例==:

this.$emit("change")

正确示例:

this.$emit('search')

2、query取出来的参数不能直接当参数传入的后端接口[建议]

原因: 对于后端的接入参数不可控制。防止参数利用。

==错误示例==:

const query = this.$route.query;
XXrequest(query)

正确示例:

//其他方式也都行。这里只是演示
const {name, id} = this.$route.query;
XXrequest({name,id})

3、对于query传复杂类型的值,需要用encodeURI, decode URL进行编码[建议]

原因:url参数特殊字符不能传参。如#/

==错误示例:==

const link = () => {
    //currentModel 为当前正确查询的form数据。
    this.$router.push({path: '/**', 
    query: {data: JSON.stringify(currentModel)}})
}

...
    //formModel 为页面双向绑定数据。 query为路由query参数
    onMounted(() => {
        Object.assign(formModel, JSON.pares(query)) 
    })
...

正确示例:

const link = () => {
    //currentModel 为当前正确查询的form数据。
    this.$router.push({path: '/**', query: {data: encodeURL(JSON.stringify(currentModel))}})
}

...
    //formModel 为页面双向绑定数据。 query为路由query参数
    onMounted(() => {
        Object.assign(formModel, decodeURL(JSON.pares(query))) 
    })
...

4、vue在销毁时将页面的定时器回收销毁[强制]。

原因:setTimeut,setInterval 浏览器会在页面关闭后才会销毁。而vue
是单页面。路由跳转也没有销毁定时器

正确示例:

    destroy(() => {
        clearInterval(timer);
        clearTimeout(timer)
    })

二、模块划分规则。

1、request.data文件需要用闭包导出[建议]。

原因:防止页面数据共享。出现页面数据需要回收。

==错误示例:==

export const requestData =  ref([]);
export const requestFun = funciotn() { ...}

正确示例:

export function () {
    const requestData =  ref([]);
    const requestFun = funciotn() { ...};
    return {
        requestData,
        requestFun
    }
}()

三、组件划分规则。

四、查询问题。

1、正确查询之后将之前的错误消息提示清除[建议]。

==错误示例:==

const search = () => {
    if() {
    ...
        message.error('错误!')
    }
    ...
}

正确示例:

const search = () => {
  if() {
    ...
        message.error('错误!')
    }
    ...
    message.destroy();
}

2、正确查询之后,并临时存入正确查询的formModel数据。所有的参数从临时数据获取。[强制]

原因:防止翻页之前,改变formModel,没有点击查询。翻页数据不一致。防止下载excel文件数据之前,改变formModel,没有点击查询,导致的excel与页面数据不一致。

==错误示例:==

const search = () => {
    //formModel 与页面input双向绑定
    this.$emit("search", {...formModel})
}

正确示例:

const currentModel = ref({});
const search = () => {
    //formModel 与页面input双向绑定
    currentModel.value = {...formModel};
    this.$emit("search", {...currentModel.value})
}

五、ant-design-vue组件相关问题。

1、table组件加上rowkey。[建议]

原因:防止页面数据重载时。没有根据diff算法消耗性能。
错误示例:

    <a-table v-bind="{ columns, dataSource }" :pagination="pagination">
    </a-table>

正确示例:

    <a-table v-bind="{ columns, dataSource }" :pagination="pagination" rowKey="id">
    </a-table>

You May Also Like

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注