国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一定要看的前端codeReview規(guī)范指南

這篇具有很好參考價(jià)值的文章主要介紹了一定要看的前端codeReview規(guī)范指南。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言
針對目錄結(jié)構(gòu)、CSS規(guī)范、JavaScript規(guī)范、Vue規(guī)范
可參照官方給出的 風(fēng)格指南
這里主要總結(jié)業(yè)務(wù)開發(fā)中常遇到的代碼問題和實(shí)踐,幫助大家后續(xù)各自做好codeReview,一些你遇到的典型問題,也可以在留言區(qū)評論,幫助團(tuán)隊(duì)共同進(jìn)步。

二、實(shí)踐規(guī)范
2.1 防止重復(fù)提交
--表單提交或者編輯新增數(shù)據(jù)時(shí),按鈕必須加loading,防止重復(fù)提交
<el-button type="primary" :loading="submitLoading" @click="handleSubmit"> 提交 </el-button>

--針對table的操作列中的操作項(xiàng),沒有二次確認(rèn)的也要注意加loading
[圖片]

 <yun-table
        :pagination="pagination"
        :border="true"
        :columns="columns"
        :loading="loading"
        :data="tableData"
        @update:pagination="handlePageUpdate"
      >
        <template #action="{ row }">
          <yun-rest>
            <el-button
              :loading="row.loadingSync"
              type="action"
              @click="handleAction(row, 'sync')"
            >
              同步
            </el-button>
          </yun-rest>
        </template>
      </yun-table>
      ...
   <script setup>
    const { result } = await fetchApi(data);
    if (result) {
      tableData.value = result.records.map((item) => {
        return {
          ...item,
          loadingSync: false,
        };
      });
      total.value = result.total;
    }
      </script>

2.2 滾動(dòng)到報(bào)錯(cuò)位置
--長表單頁面或抽屜內(nèi)容很長,點(diǎn)擊提交時(shí),有驗(yàn)證錯(cuò)誤時(shí),頁面需要做好滾動(dòng)到報(bào)錯(cuò)位置

const handleSubmit = async () => {
    let flag = true;
    formRef.value.elForm.validate((valid, noValidObj) => {
      flag = valid;
      if (!valid) {
        const errorArr = Object.keys(noValidObj).filter(
          (key) => Array.isArray(noValidObj[key]) && noValidObj[key][0]?.field
        );
        contractFormRef.value.elForm.scrollToField(errorArr[0]); // 滾動(dòng)到報(bào)錯(cuò)位置
      }
    });
    if (!flag) {
      ElMessage.warning("表單未填寫完成!");
      return;
    }
    // 走后續(xù)提交請求
    submitLoading.value = true;
    ...

2.3 模板上的多個(gè)判斷條件,寫成方法或者computed

<template>
  // bad
         <el-button
              v-if="
                ['NORMAL', 'UNUSUAL'].includes(row.archiveType) &&
                ['ALREADY_SEND'].includes(row.contractStatus) &&
                ['ENABLED'].includes(row.enabledStatus)
              "
              type="action"
              @click="handleAction(row, 'modify')"
            >
              變更
            </el-button>
            <el-button
              v-if="
                ['NORMAL', 'UNUSUAL'].includes(row.archiveType) &&
                ['ALREADY_SEND'].includes(row.contractStatus) &&
                ['ENABLED'].includes(row.enabledStatus)
              "
              type="action"
              @click="handleAction(row, 'renewal')"
            >
              續(xù)簽
            </el-button>
            <el-button
              v-if="
                ['NORMAL', 'UNUSUAL'].includes(row.archiveType) &&
                ['ALREADY_SEND'].includes(row.contractStatus) &&
                ['ENABLED'].includes(row.enabledStatus)
              "
              type="action"
              @click="handleAction(row, 'rebook')"
            >
              改簽
            </el-button>
// good
           <el-button
            v-if="isChangeAvailiable(row)"
            type="action"
            @click="handleAction(row, 'modify')"
          >
            變更
          </el-button>
          <el-button
            v-if="isChangeAvailiable(row)"
            type="action"
            @click="handleAction(row, 'renewal')"
          >
            續(xù)簽
          </el-button>
          <el-button
            v-if="isChangeAvailiable(row)"
            type="action"
            @click="handleAction(row, 'rebook')"
          >
            改簽
          </el-button>

</template>

<script setup>
// good
const isChangeAvailiable = (row) => {
return (
  ["ALREADY_SEND", "ALREADY_ARCHIVE"].includes(row.contractStatus) &&
  ["ENABLED"].includes(row.enabledStatus)
);
};

</script>

2.4 保持?jǐn)?shù)據(jù)響應(yīng)式

<script setup>
  import { reactive } from "vue";
  let state = reactive({
      loading: false,
      a: true,
    });
    function handleChange(){
       // bad 無法實(shí)現(xiàn)數(shù)據(jù)響應(yīng)式
       state = {...state,b:'test'}
       // bad 無法實(shí)現(xiàn)數(shù)據(jù)響應(yīng)式
       state = reactive({...state,b:'test'})
       
       // correct 數(shù)據(jù)具有響應(yīng)式
       state.b = 'test';
       // correct 數(shù)據(jù)具有響應(yīng)式
       Object.assign(state,{b:'test'});
    
    }


</script>

2.5 避免使用 delete
delete 操作符并不會(huì)釋放內(nèi)存,而且會(huì)使得附加到對象上的 hidden class 失效,讓對象變成 slow object。(hidden class 是 V8 為了優(yōu)化屬性訪問時(shí)間而創(chuàng)建的隱藏類)

2.6 盡量使用 export 而 不是 export default 來導(dǎo)出
export default 有兩個(gè)問題:1)不利于 tree shaking 2)如果使用了一個(gè)導(dǎo)出對象上不存在的屬性,要運(yùn)行時(shí)才能發(fā)現(xiàn)。

2.7 可選鏈訪問數(shù)組元素

 <template>
     // bad
     <span>{{row[0].contract.name}}<span>
     <span>{{Array.isArray(row) && row[0].contract.name}}<span>
     
    // good
    <span>{{row?.[0]?.contract?.name}}<span>

</template>

2.8 參數(shù)硬編碼

// bad 硬編碼1001
const isActive = this.$route.query.id === '1001'

// good  寫到配置信息中。這樣,id和狀態(tài)的對應(yīng)關(guān)系一目了然,便于管理和維護(hù)。
const idConfig = {
  1001: STATUS.ACTIVE
}
const isActive = idConfig[this.$route.query.id] === STATUS.ACTIVE

2.9 定時(shí)器是否及時(shí)清理

mounted () {
  this.timer = setInterval(() => {
    doSomething();
  }, 300)
}
destroyed () {
  if (this.timer) {
    clearInterval(this.timer)
  }
}

2.10 監(jiān)聽事件是否有解綁
在window/body 上的事件需要解綁:

mounted() {
  window.addEventListener(‘resize’, this.func)
  window.addEventListener(‘scroll’, this.func)
}
beforeDestroy () {
  window.removeEventListener('resize', this.func);
  window.removeEventListener('scroll', this.func);
}

三、總結(jié)

不積跬步,無以至千里??隙ㄟ€有很多遺漏的點(diǎn),歡迎補(bǔ)充喲。文章來源地址http://www.zghlxwxcb.cn/news/detail-474214.html

到了這里,關(guān)于一定要看的前端codeReview規(guī)范指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 抖音小店怎么開通?六步教你開通抖音小店,創(chuàng)業(yè)者一定要看!

    大家好,我是電商花花。 新年新氣象,想做抖音小店必然是要先開抖音小店的, 2024年,抖音小店相關(guān)規(guī)則又有了一些新變化,那么2024年我們應(yīng)該怎么開通抖音小店呢? 今天來給大家分享一下最新開通抖音小店的流程和教學(xué),幫助大家在開通抖音小店的時(shí)候避免踩坑。 我們

    2024年02月19日
    瀏覽(23)
  • 成功上岸奇安信!這份零基礎(chǔ)入門網(wǎng)絡(luò)安全的學(xué)習(xí)路線你一定要看,學(xué)長帶你網(wǎng)絡(luò)安全從入門到就業(yè)!

    成功上岸奇安信!這份零基礎(chǔ)入門網(wǎng)絡(luò)安全的學(xué)習(xí)路線你一定要看,學(xué)長帶你網(wǎng)絡(luò)安全從入門到就業(yè)!

    ? 作為一個(gè)實(shí)用型技術(shù)博主,?由于我之前寫了不少網(wǎng)絡(luò)安全技術(shù)相關(guān)的文章,不少讀者朋友知道我是從事網(wǎng)絡(luò)安全相關(guān)的工作,于是經(jīng)常有人在后臺問我: 現(xiàn)在轉(zhuǎn)行學(xué)網(wǎng)絡(luò)安全是一個(gè)正確的選擇嗎? 我剛?cè)腴T網(wǎng)絡(luò)安全,該怎么學(xué)? 網(wǎng)絡(luò)安全要學(xué)哪些東西? 網(wǎng)絡(luò)安全有哪些

    2024年02月06日
    瀏覽(23)
  • 做測試一定要知道的——軟件測試流程和測試規(guī)范標(biāo)準(zhǔn)文檔

    做測試一定要知道的——軟件測試流程和測試規(guī)范標(biāo)準(zhǔn)文檔

    目錄 1、目的 2、工作范圍 3、工作職責(zé) 4、測試的流程?? 5、測試準(zhǔn)備階段 6、測試方法制定階段 7、測試執(zhí)行階段 8、bug管理 9、標(biāo)準(zhǔn)文檔 總結(jié)感謝每一個(gè)認(rèn)真閱讀我文章的人!??! 重點(diǎn):配套學(xué)習(xí)資料和視頻教學(xué) 通過制定公司測試流程規(guī)范,確保測試工作的規(guī)范性和有效性

    2023年04月10日
    瀏覽(21)
  • 給 Web 前端工程師看的用 Rust 開發(fā) wasm 組件實(shí)戰(zhàn)

    wasm 全稱 WebAssembly,是通過虛擬機(jī)的方式,可以在服務(wù)端、客戶端如瀏覽器等環(huán)境執(zhí)行的二進(jìn)制程序。他有速度快、效率高、可移植的特點(diǎn)。 對我們 Web 前端工程最大的好處就是可以在瀏覽器端使用二進(jìn)制程序處理一些計(jì)算量大的處理,使用他比 javascript 快的特點(diǎn)優(yōu)化性能。

    2024年02月05日
    瀏覽(20)
  • 【前端學(xué)習(xí)路線】你一定需要掌握的熱門前端技術(shù)棧

    這份學(xué)習(xí)路線并不完美,也不會(huì)有最終形態(tài),正如前端不可預(yù)見、永無止境的未來。 轉(zhuǎn)自魚皮 ?? + ?? = ???? 建議先觀看視頻導(dǎo)讀:https://www.bilibili.com/video/BV1nh411e7oG/ 前言 - 學(xué)編程需要的特質(zhì) 前端學(xué)習(xí)七階段 前端入門 鞏固基礎(chǔ) 前端工程化 前端優(yōu)化 前端生態(tài) 前端求職 前

    2024年02月12日
    瀏覽(45)
  • CodeReview 小工具

    CodeReview 小工具

    ? ? ? ? 大家開發(fā)中有沒有遇到一個(gè)版本開發(fā)的非常雜,開發(fā)很多個(gè)項(xiàng)目,改動(dòng)幾周后甚至已經(jīng)忘了自己改了些什么,領(lǐng)導(dǎo)要對代碼review的時(shí)候,理不清楚自己改過的代碼,只能將主要改動(dòng)的大功能過一遍。這樣就很容易造成review遺漏,進(jìn)而造成錯(cuò)誤的代碼直接上線。 ? ?

    2024年01月20日
    瀏覽(9)
  • 黑馬程序員pink老師前端入門教程,零基礎(chǔ)必看的h5(html5)+css3+移動(dòng)端

    黑馬程序員pink老師前端入門教程,零基礎(chǔ)必看的h5(html5)+css3+移動(dòng)端

    1.1什么是網(wǎng)頁? 1.2什么是HTML? 2.1常用的瀏覽器 2.2瀏覽器內(nèi)核 ?3.1為啥需要Web標(biāo)準(zhǔn)? 3.2Web標(biāo)準(zhǔn)的構(gòu)成 : 4.1基本語法概述: 4.2標(biāo)簽關(guān)系: 5.1HTML網(wǎng)頁: ? 6.1VSCode常用快捷鍵: 第二篇:前端VSCode常用插件-快捷鍵-以及常用技巧-pink老師 - 嗶哩嗶哩 快速復(fù)制一行:shift+alt+下/上箭

    2024年04月08日
    瀏覽(42)
  • 安全需求規(guī)范和管理指南

    安全需求規(guī)范 安全需求的標(biāo)記法 對應(yīng)于2.2章節(jié)中的安全需求特性,通過如下組合來定義安全需求: 自然語言(適應(yīng)于較高層面的安全需求,如功能和技術(shù)安全需求); 表1中所列舉方法(適應(yīng)于較低層面的安全需求,如軟件和硬件安全需求); 表1 定義安全需求 方法 ASIL

    2024年02月05日
    瀏覽(16)
  • Git提交規(guī)范指南

    在開發(fā)過程中,Git每次提交代碼,都需要寫Commit message(提交說明),規(guī)范的Commit message有很多好處: 方便快速瀏覽查找,回溯之前的工作內(nèi)容 可以直接從commit 生成Change log(發(fā)布時(shí)用于說明版本差異) 為了方便使用,我們避免了過于復(fù)雜的規(guī)定,格式較為簡單且不限制中英文

    2024年02月12日
    瀏覽(25)
  • 數(shù)倉建設(shè)七大規(guī)范指南

    數(shù)倉建設(shè)七大規(guī)范指南

    一、數(shù)據(jù)模型架構(gòu)規(guī)范 ? 1.數(shù)據(jù)層次的劃分 ? ODS: Operational Data Store,操作數(shù)據(jù)層,在結(jié)構(gòu)上其與源系統(tǒng)的增量或者全量數(shù)據(jù)基本保持一致。它相當(dāng)于DW數(shù)據(jù)的一個(gè)數(shù)據(jù)準(zhǔn)備區(qū),同時(shí)又承擔(dān)著基礎(chǔ)數(shù)據(jù)的記錄以及歷史變化。其主要作用是把基礎(chǔ)數(shù)據(jù)引入到DMP。 ? CDM: Common D

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包