前端代碼規范詳細配置

以下是現代前端項目的完整代碼規范配置方案,涵蓋主流技術棧和自動化工具鏈配置:


一、基礎工程配置

1. 項目結構規范
project/
├── src/
│   ├── assets/         # 靜態資源
│   ├── components/     # 通用組件
│   ├── layouts/        # 布局組件
│   ├── router/         # 路由配置
│   ├── store/          # 狀態管理
│   ├── styles/         # 全局樣式
│   ├── utils/          # 工具函數
│   └── views/          # 頁面組件
├── .editorconfig       # 編輯器統一配置
├── .eslintrc.js        # ESLint 配置
├── .prettierrc         # Prettier 配置
├── .stylelintrc.js     # Stylelint 配置
└── .commitlintrc.js    # Git 提交規范

二、JavaScript/TypeScript 規范

1. ESLint 配置 (.eslintrc.js)
module.exports = {root: true,env: { browser: true, es2021: true },extends: ['eslint:recommended','plugin:@typescript-eslint/recommended','plugin:vue/vue3-recommended', // Vue項目添加'prettier'],parserOptions: {ecmaVersion: 'latest',sourceType: 'module'},rules: {// 核心規則'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off','no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off','max-depth': ['error', 4], // 最大嵌套層級// TypeScript 規則'@typescript-eslint/no-explicit-any': 'off','@typescript-eslint/ban-ts-comment': 'warn',// Vue 專用規則'vue/multi-word-component-names': 'off','vue/html-self-closing': ['error', {html: { void: 'always' }}]},overrides: [{files: ['*.vue'],rules: {'max-lines-per-function': 'off'}}]
};
2. Prettier 配置 (.prettierrc)
{"printWidth": 100,"tabWidth": 2,"useTabs": false,"semi": true,"singleQuote": true,"quoteProps": "consistent","trailingComma": "none","bracketSpacing": true,"arrowParens": "avoid","vueIndentScriptAndStyle": true,"htmlWhitespaceSensitivity": "ignore"
}

三、CSS/SCSS 規范

1. Stylelint 配置 (.stylelintrc.js)
module.exports = {extends: ['stylelint-config-standard','stylelint-config-recommended-scss','stylelint-config-prettier'],plugins: ['stylelint-order'],rules: {'selector-class-pattern': '^[a-z][a-z0-9]*(-[a-z0-9]+)*$', // 短橫線命名'order/properties-order': ['position','top','display','flex-direction', // 按邏輯分組排序'width','height','margin','padding','color','background'],'max-nesting-depth': 3, // 最大嵌套層級'scss/at-import-partial-extension': 'never'}
};
2. BEM 命名示例
// Good
.user-profile {&__avatar { ... }&__name--highlight { ... }
}// Bad
.userProfile {.avatar { ... }.nameHighlight { ... }
}

四、Vue 組件規范

1. 單文件組件結構
<template><!-- 組件根元素使用 kebab-case --><div class="user-card"><!-- 使用 PascalCase 組件名 --><UserAvatar /></div>
</template><script setup>
// 組合式 API 規范
import { ref } from 'vue'// 變量命名
const isLoading = ref(false)// 方法命名
const handleButtonClick = () => { ... }
</script><style lang="scss" scoped>
.user-card {// Scoped 樣式
}
</style>
2. Props 定義規范
// TypeScript 類型定義
interface Props {/** 用戶ID */userId: number/** 是否顯示詳情 */showDetail?: boolean
}const props = defineProps<Props>()

五、Git 提交規范

1. Commitlint 配置 (.commitlintrc.js)
module.exports = {extends: ['@commitlint/config-conventional'],rules: {'type-enum': [2,'always',['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert']],'subject-case': [0]}
};
2. Commitizen 適配器
# 安裝工具
npm install -g commitizen cz-conventional-changelog# 提交示例
git commit -m "feat(user): add login functionality"

六、自動化工具鏈

1. Husky + lint-staged 配置
// package.json
{"scripts": {"prepare": "husky install","lint": "npm run lint:js && npm run lint:style","lint:js": "eslint --ext .js,.vue src","lint:style": "stylelint src/**/*.{css,scss,vue}"},"lint-staged": {"*.{js,vue}": ["eslint --fix", "prettier --write"],"*.{css,scss}": ["stylelint --fix", "prettier --write"]}
}
2. Git Hook 配置
# 創建 pre-commit hook
npx husky add .husky/pre-commit "npx lint-staged"# 創建 commit-msg hook
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

七、最佳實踐總結

  1. 命名規范

    • PascalCase:Vue組件、TypeScript 類型
    • camelCase:JavaScript 變量/函數
    • kebab-case:CSS類名、文件名
  2. 代碼組織

    • 組件復雜度控制:單個組件不超過 500 行
    • 方法長度限制:單個方法不超過 50 行
    • 文件大小限制:單文件不超過 1000 行
  3. 性能優化

    // 組件懶加載
    const UserProfile = () => import('./UserProfile.vue')// 圖片懶加載
    <img v-lazy="imageUrl" />
    
  4. 文檔規范

    /*** 格式化日期* @param {Date} date - 需要格式化的日期對象* @param {string} format - 格式字符串* @returns {string} 格式化后的日期字符串*/
    function formatDate(date, format = 'YYYY-MM-DD') {// ...
    }
    

該配置方案適用于 Vue3 + TypeScript + Vite 技術棧,可根據項目需求調整擴展規則。建議搭配 VSCode 的 ESLint、Prettier 插件實現實時校驗。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79790.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79790.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79790.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Missashe考研日記-day34

Missashe考研日記-day34 1 專業課408 學習時間&#xff1a;3h學習內容&#xff1a; 今天是學習I/O管理第二小節的內容&#xff0c;聽了課也做了題&#xff0c;這是操作系統倒數第二節知識了&#xff0c;還差最后一節就完結了。知識點回顧&#xff1a; 1.I/O核心子系統&#x…

Milvus 向量數據庫詳解與實踐指南

一、Milvus 核心介紹 1. 什么是 Milvus&#xff1f; Milvus 是一款開源、高性能、可擴展的向量數據庫&#xff0c;專門為海量向量數據的存儲、索引和檢索而設計。它支持近似最近鄰搜索&#xff08;ANN&#xff09;&#xff0c;適用于圖像檢索、自然語言處理&#xff08;NLP&am…

算力經濟模型研究:從云計算定價到去中心化算力市場設計

引言&#xff1a;算力商品化的雙重革命 在H800 GPU集群的算力供給能力突破2.3 EFLOPS的今天&#xff0c;算力定價機制正經歷從"資源租賃"到"動態市場"的范式轉變。傳統云計算定價模型&#xff08;如AWS按需實例&#xff09;的靜態價格機制已難以適應大模型…

[D1,2] 貪心刷題

文章目錄 擺動序列最大子數組合買賣股票跳躍游戲跳躍2 擺動序列 不像是貪心&#xff0c;只要抓住擺動這個點&#xff0c;前一個上升&#xff0c;那下一個就要下降&#xff0c;記錄上一次的狀態為1的話&#xff0c;那下一次就要更新為-1&#xff0c;如果上一次為1&#xff0c;這…

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵蓋增刪改查、聚合查詢、索引、事務等核心功能&#xff1a; 一、基礎CRUD操作 1. 環境配置 依賴配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…

【實戰教程】零基礎搭建DeepSeek大模型聊天系統 - Spring Boot+React完整開發指南

&#x1f525; 本文詳細講解如何從零搭建一個完整的DeepSeek AI對話系統&#xff0c;包括Spring Boot后端和React前端&#xff0c;適合AI開發入門者快速上手。即使你是編程萌新&#xff0c;也能輕松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;強推專欄…

Linux系統基本指令和知識指南

一、Linux系統簡介 Linux是一種自由和開放源代碼的類UNIX操作系統&#xff0c;由林納斯托瓦茲在1991年首次發布。它以穩定性、安全性和靈活性著稱&#xff0c;廣泛應用于服務器、嵌入式系統和個人計算機。 Linux主要特點&#xff1a; 開源免費 多用戶、多任務 良好的安全性…

【計算機視覺】OpenCV實戰項目:Long-Exposure:基于深度學習的長時間曝光合成技術

Long-Exposure&#xff1a;基于深度學習的長時間曝光合成技術 項目概述與技術背景項目核心功能技術原理 環境配置與安裝硬件要求建議詳細安裝步驟可選組件安裝 實戰應用指南1. 基礎使用&#xff1a;視頻轉長曝光2. 高級模式&#xff1a;自定義光軌合成3. 批量處理模式 技術實現…

TikTok 矩陣賬號運營實操細節:打造爆款矩陣

在 TikTok 的流量版圖里&#xff0c;打造 TikTok 矩陣賬號能顯著提升影響力與吸粉能力。而借助 AI 工具&#xff0c;更可為 TikTok 矩陣運營效率的提升賦能&#xff0c;讓運營如虎添翼。下面就為大家詳細講講其中的實操細節&#xff0c;并結合一些偽代碼示例輔助理解。 一、矩…

互聯網大廠Java求職面試:分布式系統中向量數據庫與AI應用的融合探索

互聯網大廠Java求職面試&#xff1a;分布式系統中向量數據庫與AI應用的融合探索 面試開場&#xff1a;技術總監與鄭薪苦的“較量” 技術總監&#xff08;以下簡稱T&#xff09;&#xff1a;鄭薪苦先生&#xff0c;請簡單介紹一下你在分布式系統設計方面的經驗。 鄭薪苦&…

【每日八股】學習 RocketMQ Day2:進階(一)

文章目錄 復習昨日內容為什么要使用消息隊列為什么選擇 RocketMQRocketMQ 的優缺點&#xff1f;談談你對 RocketMQ 的理解&#xff1f;消息隊列有哪些類型&#xff1f;RocketMQ 采用哪種消息隊列模型&#xff1f;消息的消費模式了解嗎&#xff1f;了解 RocketMQ 的基本架構嗎&a…

探索智能體開發新邊界:Cangjie Magic開源平臺體驗與解析

文章目錄 每日一句正能量前言一、Cangjie Magic的核心技術&#xff08;一&#xff09;Agent DSL架構&#xff08;二&#xff09;原生支持MCP通信協議&#xff08;三&#xff09;智能規劃功能 二、實際應用場景&#xff08;一&#xff09;智能客服系統&#xff08;二&#xff09…

深入解析進程間通信與Socket原理:從理論到TypeScript實戰

文章目錄 一、進程中如何通信1.1 管道1.1.1 核心特性1.1.2 缺點1.1.3 匿名管道與命名管道的對比 1.2 信號1.2.1 核心特性1.2.2 缺點1.2.3 信號分類對比 1.3 消息隊列1.3.1 核心特性1.3.2 缺點 1.4 共享內存1.4.1 核心特性1.4.2 缺點 1.5 信號量1.5.1 核心特性1.5.2 缺點 二、So…

力扣-hot100(旋轉圖像)

48. 旋轉圖像 中等 給定一個 n n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。 你必須在 原地 旋轉圖像&#xff0c;這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,2,3],[4…

Docker編排工具---Compose的概述及使用

目錄 一、Compose工具的概述 二、Compose的常用命令 1、列出容器 2、查看訪問日志 3、輸出綁定的公共端口 4、重新構建服務 5、啟動服務 6、停止服務 7、刪除已停止服務的容器 8、創建和啟動容器 9、在運行的容器中執行命令 10、指定一個服務啟動容器的個數 11、其…

C25-數組應用及練習

第一題 題目: 代碼 #include <stdio.h> int main() {//數組及相關數據定義int arr[10];int i;//基于循環的數組數據輸入for(i0;i<10;i){arr[i]i;}//基于循環的數組數據輸出for(i9;i>0;i--){printf("%d ",arr[i]);}return 0; }結果 第二題 題目 代碼 …

網絡安全怎么入門?快速了解

網絡安全是一個快速發展的領域&#xff0c;入門需要系統化的學習和實踐。以下是適合零基礎或轉行者的分階段學習路徑&#xff0c;涵蓋必備知識、學習資源、實戰方法和職業方向&#xff1a; 一、基礎階段&#xff08;1-3個月&#xff09; 1. 掌握核心基礎知識 計算機網絡&#…

express 怎么搭建 WebSocket 服務器

一&#xff1a;使用 express-ws var express require(express); var app express(); var expressWs require(express-ws)(app);app.use(function (req, res, next) {console.log(middleware);req.testing testing;return next(); });app.get(/, function(req, res, next){…

【AI論文】SuperEdit:修正并促進基于指令的圖像編輯的監督信號

摘要&#xff1a;由于手動收集準確的編輯數據存在挑戰&#xff0c;現有的數據集通常使用各種自動化方法構建&#xff0c;導致編輯指令和原始編輯圖像對之間不匹配導致監督信號出現噪聲。 最近的研究試圖通過生成更高質量的編輯圖像、在識別任務上進行預訓練或引入視覺語言模型&…

關于大疆紅外圖片提取溫度方法 python 方法

思路 紅外圖片需要是黑白圖片 提取紅外圖片最高和最低溫度 溫度圖例 根據最高溫度31.2攝氏度 最低溫度19.9攝氏度 那中間的值在 0到255 之間 那有這個值之后。就可以獲取到圖片里面 每個點或者面的值 實現方式 def find_Gray(self, t_max, t_min, c_temp):"""…