JavĂtsa a frontend kĂłdminĹ‘sĂ©get linting Ă©s formázás segĂtsĂ©gĂ©vel. Tanulja meg a kĂłdstĂlus automatizált betartatását Ă©s biztosĂtsa az egysĂ©ges, karbantarthatĂł kĂłdot a globális fejlesztĹ‘csapatban.
Frontend Kódminőség: Linting és Formázás az Egységes Fejlesztésért
A frontend fejlesztĂ©s rohanĂł világában gyakran a funkcionális kĂłd gyors szállĂtása Ă©lvez elsĹ‘bbsĂ©get. A kĂłdminĹ‘sĂ©g elhanyagolása azonban kĂ©sĹ‘bb számos problĂ©mához vezethet. Ezek a problĂ©mák magukban foglalják a megnövekedett karbantartási költsĂ©geket, a csökkent csapattermelĂ©kenysĂ©get Ă©s a frusztrálĂł fejlesztĹ‘i Ă©lmĂ©nyt. A magas minĹ‘sĂ©gű frontend kĂłd egyik sarokköve az egysĂ©ges stĂlus Ă©s a legjobb gyakorlatok betartása, amit hatĂ©konyan lehet elĂ©rni linting Ă©s formázĂł eszközök segĂtsĂ©gĂ©vel. Ez a cikk átfogĂł ĂştmutatĂłt nyĂşjt a linting Ă©s formázás megĂ©rtĂ©sĂ©hez Ă©s bevezetĂ©sĂ©hez a frontend projektjeiben, biztosĂtva az egysĂ©ges Ă©s karbantarthatĂł kĂłdbázist a globálisan elosztott csapatok számára.
Miért Fontos a Frontend Kódminőség?
Mielőtt belemerülnénk a linting és formázás részleteibe, vizsgáljuk meg, miért is olyan kulcsfontosságú a frontend kódminőség:
- KarbantarthatĂłság: A tiszta, jĂłl formázott kĂłd könnyebben Ă©rthetĹ‘ Ă©s mĂłdosĂthatĂł, ami egyszerűsĂti a karbantartást Ă©s csökkenti a hibák bevezetĂ©sĂ©nek kockázatát a frissĂtĂ©sek során. KĂ©pzelje el, hogy egy bangalore-i (India) fejlesztĹ‘ könnyedĂ©n megĂ©rti egy londoni (EgyesĂĽlt Királyság) kollĂ©gája által Ărt kĂłdot.
- OlvashatĂłság: Az egysĂ©ges kĂłdolási stĂlus javĂtja az olvashatĂłságot, megkönnyĂtve a fejlesztĹ‘k számára a kĂłd logikájának Ă©s cĂ©ljának gyors megĂ©rtĂ©sĂ©t. Ez kĂĽlönösen fontos Ăşj csapattagok bevonásakor vagy a kĂĽlönbözĹ‘ idĹ‘zĂłnákban Ă©s kontinenseken átĂvelĹ‘ projekteken valĂł egyĂĽttműködĂ©s során.
- EgyĂĽttműködĂ©s: A szabványosĂtott kĂłdstĂlus megszĂĽnteti a formázási preferenciákkal kapcsolatos szubjektĂv vitákat, Ă©s elĹ‘segĂti a zökkenĹ‘mentesebb egyĂĽttműködĂ©st a fejlesztĹ‘csapatokon belĂĽl. Ez lĂ©tfontosságĂş az elosztott csapatok számára, ahol a szemĂ©lyes kommunikáciĂł korlátozott lehet.
- Kevesebb Hiba: A linterek mĂ©g a futtatás elĹ‘tt azonosĂthatják a potenciális hibákat Ă©s anti-pattern-eket, megelĹ‘zve a bugokat Ă©s javĂtva az alkalmazás általános stabilitását. Egy egyszerű szintaktikai hiba korai elkapása Ăłrákig tartĂł hibakeresĂ©si idĹ‘t takarĂthat meg.
- JavulĂł TeljesĂtmĂ©ny: Bár nem mindig állnak közvetlen kapcsolatban, a kĂłdminĹ‘sĂ©gi gyakorlatok gyakran ösztönöznek a hatĂ©konyabb Ă©s optimalizáltabb kĂłd Ărására, ami jobb alkalmazásteljesĂtmĂ©nyhez vezet.
- HatĂ©kony BeilleszkedĂ©s: Az Ăşj csapattagok gyorsan alkalmazkodhatnak a kĂłdbázishoz, ha egysĂ©ges stĂlust követnek. Ez csökkenti a tanulási görbĂ©t, Ă©s lehetĹ‘vĂ© teszi számukra, hogy hamarabb hatĂ©konyan hozzájáruljanak a munkához.
- Tudásmegosztás: A szabványosĂtott kĂłd lehetĹ‘vĂ© teszi a kĂłdrĂ©szletek Ă©s könyvtárak jobb megosztását a projektek Ă©s csapatok között.
Mi az a Linting és Formázás?
A linting Ă©s a formázás kĂ©t kĂĽlönállĂł, de egymást kiegĂ©szĂtĹ‘ folyamat, amelyek hozzájárulnak a kĂłdminĹ‘sĂ©ghez:
Linting
A linting a kĂłd elemzĂ©sĂ©nek folyamata a potenciális hibák, stĂlusbeli szabálysĂ©rtĂ©sek Ă©s gyanĂşs konstrukciĂłk felderĂtĂ©sĂ©re. A linterek elĹ‘re meghatározott szabályokat használnak a bevált gyakorlatoktĂłl Ă©s kĂłdolási konvenciĂłktĂłl valĂł eltĂ©rĂ©sek azonosĂtására. Számos problĂ©mát kĂ©pesek Ă©szlelni, többek között:
- Szintaktikai hibák
- Nem deklarált változók
- Nem használt változók
- Potenciális biztonsági sebezhetőségek
- StĂlusbeli szabálysĂ©rtĂ©sek (pl. inkonzisztens behĂşzás, elnevezĂ©si konvenciĂłk)
- Kódkomplexitási problémák
Népszerű frontend linterek:
- ESLint: Egy szĂ©les körben használt linter JavaScripthez Ă©s JSX-hez, amely kiterjedt testreszabhatĂłságot Ă©s plugin támogatást kĂnál. Magas szinten konfigurálhatĂł, Ă©s kĂĽlönbözĹ‘ kĂłdolási stĂlusokhoz igazĂthatĂł.
- Stylelint: Egy hatĂ©kony linter CSS-hez, SCSS-hez Ă©s más stĂlusleĂrĂł nyelvekhez, amely biztosĂtja a konzisztens stĂlust Ă©s a legjobb gyakorlatok betartását.
- HTMLHint: Egy linter HTML-hez, amely segĂt azonosĂtani a strukturális problĂ©mákat Ă©s az akadálymentesĂtĂ©si aggályokat.
Formázás
A formázás, más nĂ©ven kĂłd szĂ©pĂtĂ©s, a kĂłd elrendezĂ©sĂ©nek Ă©s stĂlusának automatikus igazĂtása egy elĹ‘re meghatározott szabványhoz. A formázĂłk olyan aspektusokat kezelnek, mint:
- Behúzás
- Sorközök
- Sortörés
- IdĂ©zĹ‘jel stĂlusok
- Pontosvessző használata
Egy népszerű frontend formázó:
- Prettier: Egy vĂ©lemĂ©nyvezĂ©relt kĂłdformázĂł, amely számos nyelvet támogat, beleĂ©rtve a JavaScriptet, TypeScriptet, CSS-t, HTML-t Ă©s JSON-t. A Prettier automatikusan Ăşjraformázza a kĂłdot, hogy az megfeleljen az elĹ‘re meghatározott stĂlusának, ezzel megszĂĽntetve a szubjektĂv formázási vitákat.
Az ESLint Ă©s a Prettier beállĂtása egy Frontend Projektben
VegyĂĽk vĂ©gig az ESLint Ă©s a Prettier beállĂtásának folyamatát egy tipikus frontend projektben. Egy JavaScript/React projektre fogunk koncentrálni, de az elvek más keretrendszerekre Ă©s nyelvekre is alkalmazhatĂłk.
Előfeltételek
- TelepĂtett Node.js Ă©s npm (vagy yarn)
- Egy frontend projekt (pl. egy React alkalmazás)
TelepĂtĂ©s
ElĹ‘ször is, telepĂtse az ESLintet, a Prettiert Ă©s a szĂĽksĂ©ges bĹ‘vĂtmĂ©nyeket fejlesztĂ©si fĂĽggĹ‘sĂ©gkĂ©nt:
npm install eslint prettier eslint-plugin-react eslint-plugin-react-hooks eslint-config-prettier --save-dev
A csomagok magyarázata:
- eslint: A központi ESLint könyvtár.
- prettier: A Prettier kódformázó.
- eslint-plugin-react: Kifejezetten a React fejlesztéshez kapcsolódó ESLint szabályok.
- eslint-plugin-react-hooks: ESLint szabályok a React Hookok legjobb gyakorlatainak betartatásához.
- eslint-config-prettier: Letiltja azokat az ESLint szabályokat, amelyek ütköznek a Prettierrel.
Konfiguráció
Hozzon létre egy ESLint konfigurációs fájlt (.eslintrc.js
vagy .eslintrc.json
) a projekt gyökérkönyvtárában. Itt egy minta konfiguráció:
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'prettier',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: [
'react',
],
rules: {
'react/react-in-jsx-scope': 'off',
},
};
A konfiguráció legfontosabb aspektusai:
env
: Meghatározza a környezetet, amelyben a kód futni fog (böngésző, Node.js, ES2021).extends
: Meghatározza azokat az előre definiált konfigurációkat, amelyeket örökölni szeretnénk.eslint:recommended
: Engedélyezi az ajánlott ESLint szabályokat.plugin:react/recommended
: Engedélyezi az ajánlott ESLint szabályokat a Reacthez.plugin:react-hooks/recommended
: Engedélyezi az ajánlott ESLint szabályokat a React Hookokhoz.prettier
: Letiltja azokat az ESLint szabályokat, amelyek ütköznek a Prettierrel.parserOptions
: Konfigurálja az ESLint által használt JavaScript értelmezőt.plugins
: Meghatározza a használni kĂvánt bĹ‘vĂtmĂ©nyek listáját.rules
: Lehetővé teszi az egyes ESLint szabályok testreszabását. Ebben a példában letiltjuk a `react/react-in-jsx-scope` szabályt, mert a modern React projektekben nem mindig szükséges a React importálása minden komponens fájlban.
Hozzon létre egy Prettier konfigurációs fájlt (.prettierrc.js
, .prettierrc.json
vagy .prettierrc.yaml
) a projekt gyökérkönyvtárában. Itt egy minta konfiguráció:
module.exports = {
semi: false,
trailingComma: 'all',
singleQuote: true,
printWidth: 120,
tabWidth: 2,
};
Ez a konfiguráció a következő Prettier opciókat határozza meg:
semi
: Hozzáadjon-e pontosvesszĹ‘t az utasĂtások vĂ©gĂ©re (false
azt jelenti, hogy nem).trailingComma
: Hozzáadjon-e záró vesszőt a többsoros objektumokban és tömbökben (all
hozzáadja, ahol lehetséges).singleQuote
: Egyszeres idézőjeleket használjon-e a dupla idézőjelek helyett a stringeknél.printWidth
: A maximális sorhossz, mielőtt a Prettier sortörést alkalmaz.tabWidth
: A behúzáshoz használt szóközök száma.
Ezeket az opciĂłkat testreszabhatja a preferált kĂłdolási stĂlusának megfelelĹ‘en. A rendelkezĂ©sre állĂł opciĂłk teljes listájáért tekintse meg a Prettier dokumentáciĂłját.
Integráció az IDE-vel
Ahhoz, hogy a legtöbbet hozza ki az ESLintbĹ‘l Ă©s a PrettierbĹ‘l, integrálja Ĺ‘ket az IDE-jĂ©be. A legtöbb nĂ©pszerű IDE (pl. VS Code, WebStorm, Sublime Text) rendelkezik bĹ‘vĂtmĂ©nyekkel vagy pluginokkal, amelyek valĂłs idejű lintinget Ă©s formázást biztosĂtanak gĂ©pelĂ©s közben. PĂ©ldául a VS Code kĂnál bĹ‘vĂtmĂ©nyeket az ESLinthez Ă©s a Prettierhez, amelyek automatikusan formázhatják a kĂłdot mentĂ©skor. Ez kulcsfontosságĂş lĂ©pĂ©s a kĂłdminĹ‘sĂ©g automatizálásában.
npm scriptek hozzáadása
Adjon hozzá npm scripteket a package.json
fájlhoz, hogy könnyedén futtathassa az ESLintet és a Prettiert a parancssorból:
"scripts": {
"lint": "eslint . --ext .js,.jsx",
"format": "prettier --write .",
"lint:fix": "eslint . --ext .js,.jsx --fix",
"format:check": "prettier --check ."
}
A scriptek magyarázata:
lint
: Futtatja az ESLintet a projekt összes.js
és.jsx
fájlján.format
: Futtatja a Prettiert a projekt összes fájljának formázására. A--write
kapcsolĂł azt jelzi a Prettiernek, hogy közvetlenĂĽl mĂłdosĂtsa a fájlokat.lint:fix
: Futtatja az ESLintet a--fix
kapcsolĂłval, amely automatikusan javĂtja a javĂthatĂł linting hibákat.format:check
: Futtatja a Prettiert annak ellenőrzésére, hogy minden fájl a konfigurációnak megfelelően van-e formázva. Ez hasznos a CI/CD folyamatokban.
Most már futtathatja ezeket a scripteket a parancssorból:
npm run lint
npm run format
npm run lint:fix
npm run format:check
Fájlok figyelmen kĂvĂĽl hagyása
Lehet, hogy bizonyos fájlokat vagy könyvtárakat ki szeretne zárni a lintingből és formázásból (pl. node_modules, build könyvtárak). Hozzon létre .eslintignore
és .prettierignore
fájlokat a projekt gyökérkönyvtárában ezen kizárások megadásához. Például:
.eslintignore
:
node_modules/
dist/
build/
.prettierignore
:
node_modules/
dist/
build/
Kódminőség Automatizálása CI/CD-vel
Annak Ă©rdekĂ©ben, hogy a teljes fejlesztĹ‘csapatban egysĂ©ges kĂłdminĹ‘sĂ©get biztosĂtson, integrálja a lintinget Ă©s a formázást a CI/CD folyamatába. Ez automatikusan ellenĹ‘rzi a kĂłdot a stĂlusbeli szabálysĂ©rtĂ©sek Ă©s a potenciális hibák szempontjábĂłl, mielĹ‘tt az a fĹ‘ ágba kerĂĽlne.
Itt egy példa arra, hogyan integrálhatja az ESLintet és a Prettiert egy GitHub Actions munkafolyamatba:
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Run linters
run: npm run lint
- name: Run format check
run: npm run format:check
Ez a munkafolyamat a következő lépéseket hajtja végre:
- Letölti a kódot.
- BeállĂtja a Node.js-t.
- TelepĂti a fĂĽggĹ‘sĂ©geket.
- Futtatja az ESLintet.
- Futtatja a Prettiert ellenőrző módban.
Ha az ESLint vagy a Prettier hibát észlel, a munkafolyamat meghiúsul, megakadályozva a kód beolvasztását.
Bevált Gyakorlatok a Lintinghez és Formázáshoz
Íme néhány bevált gyakorlat, amelyet érdemes követni a linting és formázás bevezetésekor:
- Hozzon lĂ©tre egy egysĂ©ges kĂłdolási stĂlust: Definiáljon egy tiszta Ă©s következetes kĂłdolási stĂlus ĂştmutatĂłt a projektjĂ©hez. Ennek ki kell terjednie olyan szempontokra, mint a behĂşzás, sorközök, elnevezĂ©si konvenciĂłk Ă©s a kommentezĂ©si gyakorlatok. Fontolja meg egy szĂ©les körben elfogadott stĂlus ĂştmutatĂł, pĂ©ldául az Airbnb JavaScript Style Guide kiindulási pontkĂ©nt valĂł használatát.
- Automatizálja a folyamatot: Integrálja a lintinget Ă©s a formázást a fejlesztĂ©si munkafolyamatába Ă©s a CI/CD folyamatába. Ez biztosĂtja, hogy minden kĂłd megfeleljen a kialakĂtott stĂlusirányelveknek.
- Szabja testre a szabályokat: IgazĂtsa az ESLint Ă©s Prettier szabályokat a projekt specifikus követelmĂ©nyeihez Ă©s preferenciáihoz. Ne fĂ©ljen letiltani azokat a szabályokat, amelyek nem relevánsak vagy ĂĽtköznek a kĂłdolási stĂlusával.
- Használjon IDE-integráciĂłt: Integrálja a lintereket Ă©s a formázĂłkat közvetlenĂĽl az IDE-be a valĂłs idejű visszajelzĂ©s Ă©rdekĂ©ben. Ez segĂt a hibák korai elkapásában Ă©s a stĂlus következetes betartatásában.
- Oktassa a csapatot: GyĹ‘zĹ‘djön meg rĂłla, hogy minden csapattag ismeri a linting Ă©s formázási szabályokat, Ă©s Ă©rti az eszközök használatát. SzĂĽksĂ©g esetĂ©n biztosĂtson kĂ©pzĂ©st Ă©s dokumentáciĂłt.
- Rendszeresen vizsgálja felĂĽl a konfiguráciĂłt: IdĹ‘nkĂ©nt vizsgálja felĂĽl az ESLint Ă©s Prettier konfiguráciĂłit, hogy megbizonyosodjon arrĂłl, hogy azok mĂ©g mindig relevánsak Ă©s hatĂ©konyak. Ahogy a projekt fejlĹ‘dik, szĂĽksĂ©g lehet a szabályok mĂłdosĂtására az Ăşj legjobb gyakorlatok vagy kĂłdolási konvenciĂłk tĂĽkrözĂ©se Ă©rdekĂ©ben.
- Kezdje az alapĂ©rtelmezett beállĂtásokkal Ă©s fokozatosan szabja testre: Kezdje az ESLint Ă©s a Prettier ajánlott vagy alapĂ©rtelmezett konfiguráciĂłival. Fokozatosan szabja testre a szabályokat Ă©s beállĂtásokat, hogy azok igazodjanak a csapata preferenciáihoz Ă©s a projekt követelmĂ©nyeihez.
- Vegye figyelembe az akadálymentessĂ©get: ÉpĂtsen be akadálymentessĂ©gi linting szabályokat, hogy a fejlesztĂ©si folyamat korai szakaszában elkapja a gyakori akadálymentessĂ©gi problĂ©mákat. Ez segĂt biztosĂtani, hogy az alkalmazása használhatĂł legyen a fogyatĂ©kossággal Ă©lĹ‘ emberek számára is.
- Használjon commit hookokat: Integrálja a lintinget Ă©s a formázást a Git munkafolyamatába commit hookok segĂtsĂ©gĂ©vel. Ez automatikusan ellenĹ‘rzi a kĂłdot minden commit elĹ‘tt, Ă©s megakadályozza, hogy olyan kĂłdot commiteljen, amely megsĂ©rti a stĂlusirányelveket. Olyan könyvtárak, mint a Husky Ă©s a lint-staged, segĂthetnek automatizálni ezt a folyamatot.
- Kezelje a technikai adĂłsságot lĂ©pĂ©senkĂ©nt: Amikor egy meglĂ©vĹ‘ projekthez vezeti be a lintinget Ă©s a formázást, a technikai adĂłsságot fokozatosan kezelje. ElĹ‘ször az Ăşj kĂłdra összpontosĂtson, Ă©s fokozatosan alakĂtsa át a meglĂ©vĹ‘ kĂłdot, hogy megfeleljen a stĂlusirányelveknek.
KihĂvások Ă©s Megfontolások
Bár a linting Ă©s a formázás jelentĹ‘s elĹ‘nyöket kĂnál, van nĂ©hány kihĂvás Ă©s megfontolás is, amit szem elĹ‘tt kell tartani:
- Kezdeti beállĂtás Ă©s konfiguráciĂł: Az ESLint Ă©s a Prettier beállĂtása idĹ‘igĂ©nyes lehet, kĂĽlönösen összetett projektek esetĂ©ben. Gondos konfiguráciĂłt Ă©s testreszabást igĂ©nyel, hogy megfeleljen a specifikus igĂ©nyeknek.
- Tanulási görbe: A fejlesztĹ‘knek esetleg Ăşj eszközöket Ă©s kĂłdolási konvenciĂłkat kell megtanulniuk, ami idĹ‘t Ă©s erĹ‘feszĂtĂ©st igĂ©nyelhet.
- Potenciális ütközések: Az ESLint és a Prettier néha ütközhetnek egymással, ami gondos konfigurációt igényel a váratlan viselkedés elkerülése érdekében.
- Betartatás: KihĂvást jelenthet a linting Ă©s formázási szabályok következetes betartatása egy nagy fejlesztĹ‘csapatban, kĂĽlönösen globálisan elosztott környezetben. A tiszta kommunikáciĂł, a kĂ©pzĂ©s Ă©s az automatizált ellenĹ‘rzĂ©sek elengedhetetlenek.
- TĂşlzott testreszabás: KerĂĽlje a szabályok tĂşlzott testreszabását, ami merev Ă©s rugalmatlan kĂłdolási stĂlushoz vezethet. Amikor csak lehetsĂ©ges, ragaszkodjon a szĂ©les körben elfogadott legjobb gyakorlatokhoz Ă©s kĂłdolási konvenciĂłkhoz.
- TeljesĂtmĂ©nybeli hatás: A linting Ă©s a formázás enyhe teljesĂtmĂ©nybeli hatással lehet, kĂĽlönösen nagy projektek esetĂ©ben. Optimalizálja a konfiguráciĂłt Ă©s a munkafolyamatot ennek a hatásnak a minimalizálása Ă©rdekĂ©ben.
Összegzés
A linting Ă©s a formázás elengedhetetlen gyakorlatok a magas minĹ‘sĂ©gű frontend kĂłd fenntartásához, kĂĽlönösen, ha globálisan elosztott csapatokkal dolgozik. A kĂłdstĂlus betartatásának automatizálásával Ă©s a potenciális hibák korai azonosĂtásával javĂthatja a kĂłd olvashatĂłságát, karbantarthatĂłságát Ă©s az egyĂĽttműködĂ©st. Bár van nĂ©hány kihĂvás, amit figyelembe kell venni, a linting Ă©s a formázás elĹ‘nyei messze felĂĽlmĂşlják a hátrányokat. A cikkben felvázolt legjobb gyakorlatok követĂ©sĂ©vel egysĂ©ges kĂłdolási stĂlust hozhat lĂ©tre, csökkentheti a hibákat, Ă©s javĂthatja a frontend alkalmazásai általános minĹ‘sĂ©gĂ©t, fĂĽggetlenĂĽl attĂłl, hogy a csapattagjai hol tartĂłzkodnak.
A kódminőségbe való befektetés egy befektetés a projekt hosszú távú sikerébe és a fejlesztőcsapat termelékenységébe. Fogadja el a lintinget és a formázást a fejlesztési munkafolyamat részeként, és élvezze egy tisztább, karbantarthatóbb kódbázis előnyeit.