vue項目代碼格式規(guī)范設(shè)置參考指南
前言
為了盡量統(tǒng)一項目成員的代碼風(fēng)格,降低開發(fā)者對代碼的理解成本,所以我們需要為項目統(tǒng)一代碼格式規(guī)范;同時我們不能為了降低理解成本,去增加開發(fā)成本,所以我們借助VS Code的相關(guān)插件去完成代碼格式化的功能。
為項目添加eslint
使用vue-cli構(gòu)建的項目,在項目構(gòu)建時,就會讓你選擇格式化方案,如果是已有項目運行vue add eslint添加格式化方式,建議選擇Prettier 的格式化方案;如果是uniapp的項目,如果使用的是vue-cli,也是使用vue add eslint,如果是使用HBuilder構(gòu)建打包,需要安裝另外安裝@vue/cli-service,不然npm run lint無法正常格式化。
添加eslint之后,根據(jù)你的選擇,eslint的配置項,可能在.eslintrc.js文件中,如果該文件不存在,配置項應(yīng)該在package.json,默認配置應(yīng)該如下:
module.exports = {
root: true,
env: {
node: true,
},
extends: [
"plugin:vue/essential",
"eslint:recommended",
"plugin:prettier/recommended",
],
parserOptions: {
parser: "@babel/eslint-parser",
}
};這些配置不建議改動,如果有其他需求,我們可以在其基礎(chǔ)上進行自定義配置。
自定義eslint配置
module.exports = {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"plugin:vue/recommended",
"eslint:recommended",
"@vue/prettier"
],
"parserOptions": {
"parser": "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "error" : "warn",
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "warn",
"no-unused-vars": [
"error",
{ vars: "all", args: "none", ignoreRestSiblings: true },
],
"vue/order-in-components": ["error", {
"order": [
"el",
"name",
"key",
"parent",
"functional",
["delimiters", "comments"],
["components", "directives", "filters"],
"extends",
"mixins",
["provide", "inject"],
"ROUTER_GUARDS",
"layout",
"middleware",
"validate",
"scrollToTop",
"transition",
"loading",
"inheritAttrs",
"model",
["props", "propsData"],
"emits",
"setup",
"asyncData",
"data",
"fetch",
"head",
"computed",
"watch",
"watchQuery",
"LIFECYCLE_HOOKS",
"onLoad",
"onShow",
"onReady",
"onHide",
"onUnload",
"onResize",
"onPullDownRefresh",
"onReachBottom",
"onTabItemTap",
"onShareAppMessage",
"onPageScroll",
"methods",
["template", "render"],
"renderError"
]
}]
},
globals: {
uni: true,
requirePlugin: true
},
}推薦的eslint配置如上。
extends中添加了plugin:vue/recommended,這個插件是限制了vue的一些代碼規(guī)范,如組件屬性的順序,vue選項的順序等。
rules中的no-console和no-debugger限制了代碼中的console和debugger,在開發(fā)環(huán)境會生成警告信息,在生產(chǎn)環(huán)境會提示報錯;no-unused-vars對為使用的變量做了限制,除了參數(shù)和reset中不允許出現(xiàn)未使用的變量;vue/order-in-components是在uniapp中對plugin:vue/recommended規(guī)范的一個補充,uniapp中存在許多vue沒有的選項,設(shè)置vue/order-in-components將這些沒有的選項也進行格式化排序。
globals中添加使用到的全局變量,如果不添加會在格式化時報錯。uni是uniapp常用的全局對象,requirePlugin是微信開發(fā)用的的全局變量。
pre-commit設(shè)置
pre-commit在git commit之前做一些處理,我們需要在提交之前對代碼格式規(guī)范做檢查,避免在項目打包時,出現(xiàn)eslint的報錯。在項目添加lint-staged,然后再package.json中配置(我們使用vue命令添加eslint時,選擇commit時格式化,會自動幫我們添加):
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,jsx,vue}": [
"vue-cli-service lint --mode production",
"git add"
]
}VS Code配置
我們需要用的eslint和vetur這兩個插件,eslint插件需要npm全局安裝eslint包,兩個插件安裝完之后,在VS Code的配置中,設(shè)置:
"[vue]": {
"editor.defaultFormatter": "octref.vetur"
}如果無法格式化,可能是格式化工具沖突導(dǎo)致的,設(shè)置:
// 保存時使用VSCode 自身格式化程序格式化
"editor.formatOnSave": true,
// 保存時用eslint格式化
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
// 兩者會在格式化js時沖突,所以需要關(guān)閉默認js格式化程序
"javascript.format.enable": false參考
總結(jié)
到此這篇關(guān)于vue項目代碼格式規(guī)范設(shè)置的文章就介紹到這了,更多相關(guān)vue3封裝input組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Element-UI Table 表格指定列添加點擊事件
這篇文章主要介紹了關(guān)于Element-UI Table 表格指定列添加點擊事件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue實現(xiàn)輸入框回車發(fā)送和粘貼文本與圖片功能
這篇文章主要為大家詳細介紹了Vue如何實現(xiàn)聊天輸入框回車發(fā)送、粘貼文本(包括HTML)、粘貼圖片等功能,文中的實現(xiàn)方法講解詳細,需要的可以參考一下2022-05-05
完美解決vue 中多個echarts圖表自適應(yīng)的問題
這篇文章主要介紹了完美解決vue 中多個echarts圖表自適應(yīng)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
vue單頁面如何通過prerender-spa-plugin插件進行SEO優(yōu)化
這篇文章主要介紹了vue單頁面如何通過prerender-spa-plugin插件進行SEO優(yōu)化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05

