๐ ์ต์ ์น์ฌ์ดํธ์ ๊ผผ๊ผผํ ๊ฐ๋ฐ์๋ค์ ์ํ ์๋ฒฝ ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ
See the code
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋น์ ์ HTML ์ฌ์ดํธ ๋๋ ํ์ด์ง๋ฅผ ํ๋ก๋์ ์ผ๋ก ๋ฐ์นญํ๊ธฐ ์ด์ ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ , ๋ํ ํ ์คํธ ๋์ด์ผ ํ ์ ๋ฐ์ ์ธ ์์๋ค์ ์งํฉ์ ๋๋ค.
How To Use โข Contributing โข Website โข Product Hunt
Other Checklists:
๐ฎ Front-End Performance Checklist โข ๐ Front-End Design Checklist
์ด ๋ฆฌ์คํธ๋ ๋ค๋ ๊ฐ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ ๊ฒฝํ์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ช๋ช ํญ๋ชฉ๋ค์ ํ ์คํ์์ค ์ฒดํฌ๋ฆฌ์คํธ๋ค์ ์ฐธ๊ณ ๋ฅผ ํตํด ์ถ๊ฐ๋์์ต๋๋ค.
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ์ ์ํด์๋ ๋ชจ๋ ํญ๋ชฉ๋ค์ ๋๋ค์์ ํ๋ก์ ํธ์์ ํ์๋ก ํ๋ ์ฌํญ๋ค์ด์ง๋ง, ๋ช๋ช ์์๋ค์ ์๋ต๋๊ฑฐ๋ ํ์์ ์ด ์๋ ์๋ ์์ต๋๋ค(์๋ฅผ ๋ค๋ฉด ๊ด๋ฆฌํ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ RSS ํผ๋๋ ํ์ ์์ ๊ฒ์ ๋๋ค). ์ฐ๋ฆฌ๋ ๋ฐ๋ผ์ ๊ฐ๊ฐ์ ํญ๋ชฉ๋ค์ 3๊ฐ์ง์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ์์ต๋๋ค:
๋ช๋ช ์ถ๊ฐ ๋ด์ฉ๋ค์ ๊ทธ๊ฒ๋ค์ด ์ด๋ ํ ์ข ๋ฅ์ ๋ด์ฉ์ธ์ง ์ดํดํ๋๋ฐ์ ๋์์ ์ฃผ๊ธฐ ์ํ์ฌ ์ด๋ชจํฐ์ฝ์ ์ถ๊ฐํ์์ต๋๋ค. ์ด๋ก ์ธํด ์ฒดํฌ๋ฆฌ์คํธ์์ ํด๋น ํญ๋ชฉ๋ค์ ์ดํดํ๋ ๋ฐ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค:
๋ ธํธ: a list of everything ์์ HTML ๋ฌธ์ ๋ด์
<head>์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ฐพ์๋ณด์ค ์ ์์ต๋๋ค.
<!-- Doctype HTML5 -->
<!doctype html>
๋ค์ 2๊ฐ์ ๋ฉํ ํ๊ทธ(Charset and Viewport)๋ค์ ๋ค๋ฅธ ์์๋ค์ ๋นํด head ์์์๋ ์๋จ์ ์์นํด์ผ๋ง ํฉ๋๋ค.
<!-- ์ด ๋ฌธ์์ ๋ํ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ค์ -->
<meta charset="utf-8">
<!-- ๋ฐ์ํ ์น ๋์์ธ์ ์ํ Viewport ์ค์ -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<!-- ๋ฌธ์์ Title -->
<title>55๊ฐ ์ดํ์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ํ์ด์ง ์ ๋ชฉ</title>
- ๐ Title - HTML - MDN
- ๐ SERP Snippet Generator
<!-- Meta Description -->
<meta name="description" content="ํ์ด์ง์ ๋ํ ์ค๋ช
(150๊ฐ ์ดํ์ ๋ฌธ์)">
favicon.ico ํ์ผ๋ง ๊ฐ์ง๊ณ ์๋ค๋ฉด, ํด๋น ๋ด์ฉ์ ํ์ด์ง์ ์๋จ๋ถ์ ์ถ๊ฐํ๋ผ. ์ผ๋ฐ์ ์ผ๋ก๋ ํด๋น ํ๊ทธ๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ง๋ง, ์๋์ ์์๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์ข์ ์ต๊ด์. ์ค๋๋ ์๋ .ico ํฌ๋งท๋ณด๋ค PNG ํฌ๋งท์ ์์ด์ฝ ์ฌ์ฉ์ ์ถ์ฒํจ(ํฌ๊ธฐ: 32x32px).<!-- ํ์ค ํ๋น์ฝ -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- ์ถ์ฒ ํ๋น์ฝ ํฌ๋งท -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
<!-- Apple ํฐ์น ์์ด์ฝ (์ต์ํ 200x200 px) -->
<link rel="apple-touch-icon" href="/custom-icon.png">
<!-- ์น ์ดํ๋ฆฌ์ผ์ด์
๋ชจ๋ ์ค์ ํ๊ธฐ (Apple ์น ์ฑ์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํจ) -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- ์ํ์ฐฝ ์คํ์ผ (๋ฐ์ ๋งํฌ์์ ์ง์ ๊ฐ๋ฅํ ๋ฉํ ํ๊ทธ๋ค์ ํ์ธํด๋ณด์ธ์) -->
<!-- ์น ์ดํ๋ฆฌ์ผ์ด์
๋ชจ๋์ฌ์ผ ๋์ํจ -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- Microsoft ํ์ผ -->
<meta name="msapplication-config" content="browserconfig.xml" />
browserconfig.xml ํ์ผ์์ ์ฌ์ฉ๋๋ ์ต์ํ์ XML ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="small.png"/>
<square150x150logo src="medium.png"/>
<wide310x150logo src="wide.png"/>
<square310x310logo src="large.png"/>
</tile>
</msapplication>
</browserconfig>
rel="canonical" ์ ์ฌ์ฉํจ<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-read.html">
<html lang="ko">
<!-- rtl: right to left; ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก -->
<html dir="rtl">
- ๐ dir - HTML - MDN
<link rel="alternate" href="https://en.example.com/" hreflang="en">
<link rel="alternate" href="https://example.com/" hreflang="x-default" />
- ๐ x-default - Google
RSS ํผ๋: ๋ง์ผ ํ์ด์ง๊ฐ ๋ธ๋ก๊ทธ์ด๊ฑฐ๋ ๊ธฐ์ฌ๊ฐ ์๋ค๋ฉด, RSS ๋งํฌ์ ๋ํด ํ์ธํ์์ค
CSS Critical: ํ์ด์ง๊ฐ ๋ก๋ฉ๋๋ ์ฆ์(ํผ์ณ์ง๋ ๊ทธ ์๊ฐ) ์ปจํ
์ธ ์ ์ํฅ์ ๋ผ์น๋ CSS๋ฅผ "critical CSS" ๋ผ๊ณ ํจ. ์ด๋ ๋น์ ์ ์ค์ง์ ์ธ ์ดํ๋ฆฌ์ผ์ด์
์ CSS ๊ฐ ๋ก๋ฉ๋๊ธฐ ์ด์ ์
<style></style> ํ๊ทธ ์ฌ์ด์ ์ต์ํ ๋ ์ํ๋ก ํ ์ค๋ก ์ถ๊ฐ๋์ด ์๋ฒ ๋ฉ ๋จ
- ๐ Critical by Addy Osmani on Github ์ด ๋ ํฌ๋ CSS Critical์ ์๋ํ ํ๋๋ฐ์ ๋์์ ์ค๋๋ค.
<head> ๋ด์์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ณด๋ค ์ด์ ์ ๋ก๋ฉ์ด ์๋ฃ๋จ (์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฉ๋๋ ํน์ ํ ๊ฒฝ์ฐ๋ ์ ์ธํจ).Meta Tags ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํ ํ๊ทธ๋ฅผ ์๊ฐํํ๊ณ ์์ฑํ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก Facebook ์ Open Graph ์ Twitter ์ Card ๋ ๋ฐ๋์ ์ค์ ํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ๋ค๋ฅธ ์์ ๋ฏธ๋์ด ํ๊ทธ๋ค์ ํน์ ํ ์๋๋ฅผ ๋์์ผ๋ก ํ ๊ฒฝ์ฐ์ ๊ณ ๋ คํด๋ณด์ธ์.
๋ ธํธ:
og:image:width์og:image:height๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์น ํฌ๋กค๋ฌ์๊ฒ ์๋ ค์ฃผ์ด์, ์ด๋ฏธ์ง๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์ฒ๋ฆฌํ ํ์ ์์ด ์ฆ์ ๋ณด์ฌ์ค ์ ์๋๋ก ํฉ๋๋ค.
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="์ ๋ชฉ">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="๋ด์ฉ์ ๋ํ ์ค๋ช
">
<meta property="og:site_name" content="์ฌ์ดํธ๋ช
">
<meta property="og:locale" content="en_US">
<!-- ๋ค์์ ํ๊ทธ๋ ํ์๋ ์๋์ง๋ง, ์ฑ๋ฅ์ ์ํ์ฌ ํฌํจํ๋ ๊ฒ์ ์ถ์ฒํจ -->
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
- ๐ ์น๋ง์คํฐ๋ฅผ ์ํ ์์ด๋ง ๊ฐ์ด๋
- ๐ ์์ด๋ง - ๋ชจ๋ฒ ์ฌ๋ก
- ๐ Facebook OG testing ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ ํ์ด์ง ํ ์คํธํ๊ธฐ
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="์ ๋ชฉ">
<meta name="twitter:description" content="๋ด์ฉ์ ๋ํ ์ค๋ช
. 200์ ๋ฏธ๋ง์ด์ด์ผ ํจ.">
<meta name="twitter:image" content="https://example.com/image.jpg">
- ๐ Twitter cards ์์ํ๊ธฐ โ Twitter Developers
- ๐ Twitter card ๊ฒ์ฌ๊ธฐ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ ํ์ด์ง ํ ์คํธํ๊ธฐ
- ๐ HTML ๋ ํผ๋ฐ์ค
์๋ฌ ํ์ด์ง: ์๋ฌ๋ฅผ ์ํ 404 ํ์ด์ง์ 5xx ํ์ด์ง๊ฐ ์กด์ฌํ๋๊ฐ? 5xx ํ์ด์ง๋ ์๋ฒ ์๋ฌ์ด๊ธฐ ๋๋ฌธ์, ์๋ฒ๋ก๋ถํฐ์ ๋ณ๋์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฐ์ง ์๊ณ ๋
๋ฆฝ์ ์ธ ์์ฒด CSS๋ฅผ ํฌํจํ๊ณ ์์ด์ผ ํจ์ ๊ธฐ์ตํจ
Noopener: ์ธ๋ถ ๋งํฌ๋ฅผ
target="_blank"๋ฅผ ์ด์ฉํ์ฌ ์ฐ ๊ฒฝ์ฐ, tab nabbing ํผ์ฑ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ rel="noopener" ์์ฑ์ ์ฌ์ฉํด์ผ๋ง ํจ. ๋ง์ฝ Firefox ์ ๋ฒ์ ์ ์ง์ํด์ผ๋ง ํ๋ค๋ฉด, rel="noopener noreferrer" ์ ์ฌ์ฉํจ
- ๐ W3C ๊ฒ์ฌ๊ธฐ
- ๐ Dirty markup: HTML ์ฝ๋๋ฅผ ์ ๋ํด์ฃผ๋ ์จ๋ผ์ธ ๋๊ตฌ
- ๐ W3C Link Checker
๋ ธํธ: ์นํฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ๋ง ๋์ง ์์ ๊ธ์๋ ๋ณด์ด์ง ์๋ ๊ธ์๋ค์ด ๊น๋นก์ผ ์ ์์ต๋๋ค. ์คํจํ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ ๋์ฒด์ฉ ํฐํธ๋ฅผ ํฌํจํ๊ฑฐ๋, ์นํฐํธ ๋ก๋๋ฅผ ํ์ฉํ์ฌ ์ด๋ฌํ ๋์๋ค์ ์ ์ดํ์ธ์.
์นํฐํธ ํฌ๊ธฐ: ๋ชจ๋ ์ข
๋ฅ(์ดํค๋ฆญ, ๋ณผ๋์ฒด ๋ฑ๋ฑ์ ํฌํจ)์ ์นํฐํธ ํฌ๊ธฐ์ ์ด ํฉ๊ณ๋ 2 MB๋ฅผ ๋์ง ์๋๋ก ํจ
์นํฐํธ ๋ก๋: ์นํฐํธ ๋ก๋๋ฅผ ์ด์ฉํ์ฌ ํฐํธ๊ฐ ๋ก๋ฉ๋๋ ๋์์ ์ ์ดํจ
๋ ธํธ: ๋๋ค์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ๋ฐ๋ฅด๋ CSS ๊ฐ์ด๋๋ผ์ธ๊ณผ Sass ๊ฐ์ด๋๋ผ์ธ ์ ์ดํด๋ณด์ธ์. ๋ง์ฝ ๋ชจ๋ฅด๋ CSS ์์ฑ ๊ฐ์ด ์๋ค๋ฉด, CSS ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋๋ค. ๋ํ CSS์ ์ผ๊ด์ฑ์ ์ํ ์ฝ๋ ๊ฐ์ด๋๋ ์ฝ์ด๋ณด๊ธฐ ๋ฐ๋๋๋ค.
- ๐ Reset.css
- ๐ Normalize.css
- ๐ Reboot
<div id="js-slider" class="my-slider">
<!-- ๋๋ -->
<div id="id-used-by-cms" class="js-slider my-slider">
๋ฐ์ํ ์น ๋์์ธ: ๋ชจ๋ ํ์ด์ง๊ฐ ๋ค์ ์ง์ ์์ ํ
์คํธ ์๋ฃ๋์์: 320px, 768px, 1024px (๊ทธ ์ธ ๋น์ ์ด ํ์ํ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
Responsive Checker -
- ๐ Am I Responsive?
- ๐ Mobile Friendly Test
- ๐ Responsive Website Design Tester
- ๐ Responsinator
- ๐ XRespond
- ๐ CSS ๊ฒ์ฌ๊ธฐ
๋ ธํธ: ์ด๋ฏธ์ง ์ต์ ํ์ ์์ ํ ์ดํด๋ฅผ ์ํด์๋, Addy Osmani๊ฐ ์ด ๋ฌด๋ฃ ebook Essential Image Optimization ์ ํ์ธํ์ธ์.
- ๐ Imagemin
- ๐ ImageOptim๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ฌด๋ฃ๋ก ์ต์ ํํ์ธ์
- ๐ Kraken.io๋ฅผ ์ฌ์ฉํ์ฌ png์ jpg์ ๊ฝค๋ ๋๋จํ๊ฒ ์ต์ ํ ํ ์ ์์ต๋๋ค. ํ์ผ ๋น 1MB์ ๋ํด์๋ ๋ฌด๋ฃ์ ๋๋ค.
- ๐ KeyCDN Image Processing ์ฌ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ์ด๋ฏธ์ง ์ต์ ํ
- ๐ TinyPNG png, apng (animated png), jpg images๋ฅผ ๋ฌด์์ค ์ต์ ํ ํ ์ ์์ต๋๋ค. ๋ฌด๋ฃ ๋ฒ์ ๊ณผ ์ ๋ฃ ๋ฒ์ ์ด ์กด์ฌ
- ๐ SVGO SVG ๋ฒกํฐ ๊ทธ๋ํฝ ํ์ผ๋ค์ ์ต์ ํํ๋ Nodejs ๊ธฐ๋ฐ ๋๊ตฌ
- ๐ SVGOMG SVGO์ ์น ๋ฒ์
<img> ํ๊ทธ์ ๋๋น์ ๋์ด๊ฐ ์ค์ ๋์์ (px์ด๋ %๋ก ์ง์ ํ์ง ๋ง์์ค)<img> ํ๊ทธ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์์ ํ๋ ๋์ฒด ํ
์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ (alt ์์ฑ์ผ๋ก ๋ถ์ฌ).min ์ ๋ฏธ์ฌ๋ฅผ ๋ถ์ด๋ ๊ฒ์ ์ถ์ฒ)noscript ํ๊ทธ: <noscript> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์์ค. ์ด๋ React.js ์ดํ๋ฆฌ์ผ์ด์
์ฒ๋ผ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ ๋ ๋๋ง์ด ๊ต์ฅํ ๋ฌด๊ฑฐ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ๊ต์ฅํ ์ ์ฉํจ. ๋ค์์ ์์ ๋ฅผ ์ดํด๋ณด์์ค<noscript>
์ด ์ดํ๋ฆฌ์ผ์ด์
์ ์คํ์ํค๊ธฐ ์ํด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํ ์์ผ์ผ ํฉ๋๋ค.
</noscript>
async์ defer ์์ฑ๊ฐ์ ์ด์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ ๋์ด์ผ ํจ<html> ํ๊ทธ ๋ด์ ํด๋์ค๋ค์ ์ถ๊ฐํ ์ ์์ Lazy ๋ก๋ฉ: ์ด๋ฏธ์ง, ์คํฌ๋ฆฝํธ, CSS ํ์ผ๋ค์ด lazy ๋ก๋ ๋์ด์ ํ ํ์ด์ง์ ์๋ต์๊ฐ์ ํฅ์์ํด (๊ฐ ์น์
์ ์์ธํ ๋ถ๋ถ์ ์ฐธ์กฐํ์์ค)
์ฟ ํค ํฌ๊ธฐ: ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๊ฐ ์ฟ ํค์ ํฌ๊ธฐ๊ฐ 4096 ๋ฐ์ดํธ๋ฅผ ๋์ง ์๊ณ , ๋๋ฉ์ธ ๋ด์ 20๊ฐ ์ด์์ ์ฟ ํค๋ฅผ ๊ฐ์ง์ง ์๋๋ก ์ฃผ์ํ์์ค
- ๐ ์ฟ ํค ์ฌ์: RFC 6265
- ๐ ์ฟ ํค
- ๐ ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์ ํ์
dns-prefetch ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํํฐ ์๋น์ค์ DNS ๊ฐ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ resolve ๋๋๋ก ํจ<link rel="dns-prefetch" href="https://example.com">
preconnect ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ํ์ํ ์๋น์ค์ DNS ์ ๋ฃฉ์
, TCP ํธ๋์
ฐ์ดํฌ์ TLS ํ์์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๋๋ก ํจ<link rel="preconnect" href="https://example.com">
prefetch ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ํ์ํ ๋ฆฌ์์ค๋ค(์์: ๋ ์ด์ง ๋ก๋ ๋๋ ์ด๋ฏธ์ง) ์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์์ฒญํ๋๋ก ํจ<link rel="prefetch" href="image.png">
preload ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํด ์๊ฐ์ ํ์ฌ ํ์ด์ง ๋ด์ ํ์ํ ๋ฆฌ์์ค๋ค (์์: body ํ๋จ์ ์์นํ๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ค) ์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์์ฒญํ๋๋ก ํจ<link rel="preload" href="app.js">
๋ ธํธ: ์ ํ๋ธ์ ์ฌ์ ๋ชฉ๋ก์ ํ์ธํด๋ณด์ธ์ A11ycasts with Rob Dodson ๐น
- ๐ ๋๋น์จ
aria-label ์ ๋์ ์ฌ์ฉํ์์ค
- ๐ Wave ํ ์คํธ
- ๐ Search Console
- ๐ The robots.txt file
- ๐ Google Robots ํ ์คํธ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ robots.txt ํ์ผ์ ํ ์คํธ ํด๋ณด์ธ์
- ๐ ๊ตฌ์กฐํ ๋ ๋ฐ์ดํฐ ์๊ฐ - Search - Google Developers
- ๐ JSON-LD
- ๐ Microdata
- ๐ Test your page with the Rich Restults Test
- ๐ ๊ตฌ์กฐํ ๋ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ ์ ์๋ ๋จ์ด๋ค์ ๋ชฉ๋ก์ ๋ง๋ค์ด๋ณด์ธ์ Schema.org Full Heirarchy
rel="prev" ์ rel="next" ํ๊ทธ๋ฅผ ์ ๊ณตํจ<!-- Example: ํ์ด์ง๋ค์ด์
๋ชฉ๋ก์ 2ํ์ด์ง์ ํ์ด์ง๋ค์ด์
๋งํฌ ํ๊ทธ -->
<link rel="prev" href="https://example.com/?page=1">
<link rel="next" href="https://example.com/?page=3">
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋ค๋ฅธ ์ธ์ด๋ก๋ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค. ๋ชจ๋ ๋ฒ์ญ์๋ค๊ณผ ๊ทธ๋ค์ ๋ฉ์ง ๋ ธ๋ ฅ์ ๊ฐ์ฌํฉ๋๋ค!
๋ง์ฝ ๋น์ ์ด ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ์ ๊ท์น์ ๋ฐ๋ฅด๊ณ ์๋ค๊ณ ๋ณด์ฌ์ฃผ๊ธธ ์ํ๋ค๋ฉด, ํ๋จ์ ๋ฐฐ์ง๋ฅผ README ํ์ผ์ ์ถ๊ฐํ์ธ์!
[](https://github.com/thedaviddias/Front-End-Checklist/)
์ด์๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ PR์ ๋ ๋ ค์ ์์ ์ฌํญ์ด๋ ์ถ๊ฐํ ๋ถ๋ถ์ ๋ํด ์๋ ค์ฃผ์ธ์.
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ ๋ ํฌ์งํ ๋ฆฌ๋ 2๊ฐ์ ๋ธ๋์น๋ก ๊ตฌ์ฑ๋์ด์ ธ ์์ต๋๋ค:
master์ด ๋ธ๋์น๋ ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ ์น์ฌ์ดํธ์ ๋ฐ์๋๋ README.mdํ์ผ๋ก ๊ตฌ์ฑ๋์ด์ ธ ์์ต๋๋ค.
develop์ด ๋ธ๋์น๋ ํ์ํ๋ค๋ฉด ๊ตฌ์กฐ๋ ์ปจํ ์ธ ์ ์๋นํ ๋ณํ๋ฅผ ์ค ์ ์์ต๋๋ค. ๊ฐ๋จํ ์๋ฌ ์์ ์ ํ๊ฑฐ๋ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ ๊ฒฝ์ฐ, master ๋ธ๋์น์ ์ง์ ํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ง๋ฌธ์ด๋ ์ ์์ด ์๋ค๋ฉด, ์ฃผ์ ํ์ง ๋ง๊ณ Gitter๋ Twitter๋ฅผ ์ด์ฉํ์ธ์:
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! ๐ [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
266 followers ยท starred May 2022
314 followers ยท starred Mar 2020
80 followers ยท starred Dec 2021
670 followers ยท starred Apr 2025
๐ ์ต์ ์น์ฌ์ดํธ์ ๊ผผ๊ผผํ ๊ฐ๋ฐ์๋ค์ ์ํ ์๋ฒฝ ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ
See the code
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋น์ ์ HTML ์ฌ์ดํธ ๋๋ ํ์ด์ง๋ฅผ ํ๋ก๋์ ์ผ๋ก ๋ฐ์นญํ๊ธฐ ์ด์ ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ , ๋ํ ํ ์คํธ ๋์ด์ผ ํ ์ ๋ฐ์ ์ธ ์์๋ค์ ์งํฉ์ ๋๋ค.
How To Use โข Contributing โข Website โข Product Hunt
Other Checklists:
๐ฎ Front-End Performance Checklist โข ๐ Front-End Design Checklist
์ด ๋ฆฌ์คํธ๋ ๋ค๋ ๊ฐ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ ๊ฒฝํ์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ช๋ช ํญ๋ชฉ๋ค์ ํ ์คํ์์ค ์ฒดํฌ๋ฆฌ์คํธ๋ค์ ์ฐธ๊ณ ๋ฅผ ํตํด ์ถ๊ฐ๋์์ต๋๋ค.
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ์ ์ํด์๋ ๋ชจ๋ ํญ๋ชฉ๋ค์ ๋๋ค์์ ํ๋ก์ ํธ์์ ํ์๋ก ํ๋ ์ฌํญ๋ค์ด์ง๋ง, ๋ช๋ช ์์๋ค์ ์๋ต๋๊ฑฐ๋ ํ์์ ์ด ์๋ ์๋ ์์ต๋๋ค(์๋ฅผ ๋ค๋ฉด ๊ด๋ฆฌํ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ RSS ํผ๋๋ ํ์ ์์ ๊ฒ์ ๋๋ค). ์ฐ๋ฆฌ๋ ๋ฐ๋ผ์ ๊ฐ๊ฐ์ ํญ๋ชฉ๋ค์ 3๊ฐ์ง์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ์์ต๋๋ค:
๋ช๋ช ์ถ๊ฐ ๋ด์ฉ๋ค์ ๊ทธ๊ฒ๋ค์ด ์ด๋ ํ ์ข ๋ฅ์ ๋ด์ฉ์ธ์ง ์ดํดํ๋๋ฐ์ ๋์์ ์ฃผ๊ธฐ ์ํ์ฌ ์ด๋ชจํฐ์ฝ์ ์ถ๊ฐํ์์ต๋๋ค. ์ด๋ก ์ธํด ์ฒดํฌ๋ฆฌ์คํธ์์ ํด๋น ํญ๋ชฉ๋ค์ ์ดํดํ๋ ๋ฐ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค:
๋ ธํธ: a list of everything ์์ HTML ๋ฌธ์ ๋ด์
<head>์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ฐพ์๋ณด์ค ์ ์์ต๋๋ค.
<!-- Doctype HTML5 -->
<!doctype html>
๋ค์ 2๊ฐ์ ๋ฉํ ํ๊ทธ(Charset and Viewport)๋ค์ ๋ค๋ฅธ ์์๋ค์ ๋นํด head ์์์๋ ์๋จ์ ์์นํด์ผ๋ง ํฉ๋๋ค.
<!-- ์ด ๋ฌธ์์ ๋ํ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ค์ -->
<meta charset="utf-8">
<!-- ๋ฐ์ํ ์น ๋์์ธ์ ์ํ Viewport ์ค์ -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<!-- ๋ฌธ์์ Title -->
<title>55๊ฐ ์ดํ์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ํ์ด์ง ์ ๋ชฉ</title>
- ๐ Title - HTML - MDN
- ๐ SERP Snippet Generator
<!-- Meta Description -->
<meta name="description" content="ํ์ด์ง์ ๋ํ ์ค๋ช
(150๊ฐ ์ดํ์ ๋ฌธ์)">
favicon.ico ํ์ผ๋ง ๊ฐ์ง๊ณ ์๋ค๋ฉด, ํด๋น ๋ด์ฉ์ ํ์ด์ง์ ์๋จ๋ถ์ ์ถ๊ฐํ๋ผ. ์ผ๋ฐ์ ์ผ๋ก๋ ํด๋น ํ๊ทธ๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ง๋ง, ์๋์ ์์๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์ข์ ์ต๊ด์. ์ค๋๋ ์๋ .ico ํฌ๋งท๋ณด๋ค PNG ํฌ๋งท์ ์์ด์ฝ ์ฌ์ฉ์ ์ถ์ฒํจ(ํฌ๊ธฐ: 32x32px).<!-- ํ์ค ํ๋น์ฝ -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- ์ถ์ฒ ํ๋น์ฝ ํฌ๋งท -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
<!-- Apple ํฐ์น ์์ด์ฝ (์ต์ํ 200x200 px) -->
<link rel="apple-touch-icon" href="/custom-icon.png">
<!-- ์น ์ดํ๋ฆฌ์ผ์ด์
๋ชจ๋ ์ค์ ํ๊ธฐ (Apple ์น ์ฑ์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํจ) -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- ์ํ์ฐฝ ์คํ์ผ (๋ฐ์ ๋งํฌ์์ ์ง์ ๊ฐ๋ฅํ ๋ฉํ ํ๊ทธ๋ค์ ํ์ธํด๋ณด์ธ์) -->
<!-- ์น ์ดํ๋ฆฌ์ผ์ด์
๋ชจ๋์ฌ์ผ ๋์ํจ -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- Microsoft ํ์ผ -->
<meta name="msapplication-config" content="browserconfig.xml" />
browserconfig.xml ํ์ผ์์ ์ฌ์ฉ๋๋ ์ต์ํ์ XML ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="small.png"/>
<square150x150logo src="medium.png"/>
<wide310x150logo src="wide.png"/>
<square310x310logo src="large.png"/>
</tile>
</msapplication>
</browserconfig>
rel="canonical" ์ ์ฌ์ฉํจ<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-read.html">
<html lang="ko">
<!-- rtl: right to left; ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก -->
<html dir="rtl">
- ๐ dir - HTML - MDN
<link rel="alternate" href="https://en.example.com/" hreflang="en">
<link rel="alternate" href="https://example.com/" hreflang="x-default" />
- ๐ x-default - Google
RSS ํผ๋: ๋ง์ผ ํ์ด์ง๊ฐ ๋ธ๋ก๊ทธ์ด๊ฑฐ๋ ๊ธฐ์ฌ๊ฐ ์๋ค๋ฉด, RSS ๋งํฌ์ ๋ํด ํ์ธํ์์ค
CSS Critical: ํ์ด์ง๊ฐ ๋ก๋ฉ๋๋ ์ฆ์(ํผ์ณ์ง๋ ๊ทธ ์๊ฐ) ์ปจํ
์ธ ์ ์ํฅ์ ๋ผ์น๋ CSS๋ฅผ "critical CSS" ๋ผ๊ณ ํจ. ์ด๋ ๋น์ ์ ์ค์ง์ ์ธ ์ดํ๋ฆฌ์ผ์ด์
์ CSS ๊ฐ ๋ก๋ฉ๋๊ธฐ ์ด์ ์
<style></style> ํ๊ทธ ์ฌ์ด์ ์ต์ํ ๋ ์ํ๋ก ํ ์ค๋ก ์ถ๊ฐ๋์ด ์๋ฒ ๋ฉ ๋จ
- ๐ Critical by Addy Osmani on Github ์ด ๋ ํฌ๋ CSS Critical์ ์๋ํ ํ๋๋ฐ์ ๋์์ ์ค๋๋ค.
<head> ๋ด์์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ณด๋ค ์ด์ ์ ๋ก๋ฉ์ด ์๋ฃ๋จ (์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฉ๋๋ ํน์ ํ ๊ฒฝ์ฐ๋ ์ ์ธํจ).Meta Tags ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํ ํ๊ทธ๋ฅผ ์๊ฐํํ๊ณ ์์ฑํ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก Facebook ์ Open Graph ์ Twitter ์ Card ๋ ๋ฐ๋์ ์ค์ ํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ๋ค๋ฅธ ์์ ๋ฏธ๋์ด ํ๊ทธ๋ค์ ํน์ ํ ์๋๋ฅผ ๋์์ผ๋ก ํ ๊ฒฝ์ฐ์ ๊ณ ๋ คํด๋ณด์ธ์.
๋ ธํธ:
og:image:width์og:image:height๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์น ํฌ๋กค๋ฌ์๊ฒ ์๋ ค์ฃผ์ด์, ์ด๋ฏธ์ง๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์ฒ๋ฆฌํ ํ์ ์์ด ์ฆ์ ๋ณด์ฌ์ค ์ ์๋๋ก ํฉ๋๋ค.
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="์ ๋ชฉ">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="๋ด์ฉ์ ๋ํ ์ค๋ช
">
<meta property="og:site_name" content="์ฌ์ดํธ๋ช
">
<meta property="og:locale" content="en_US">
<!-- ๋ค์์ ํ๊ทธ๋ ํ์๋ ์๋์ง๋ง, ์ฑ๋ฅ์ ์ํ์ฌ ํฌํจํ๋ ๊ฒ์ ์ถ์ฒํจ -->
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
- ๐ ์น๋ง์คํฐ๋ฅผ ์ํ ์์ด๋ง ๊ฐ์ด๋
- ๐ ์์ด๋ง - ๋ชจ๋ฒ ์ฌ๋ก
- ๐ Facebook OG testing ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ ํ์ด์ง ํ ์คํธํ๊ธฐ
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="์ ๋ชฉ">
<meta name="twitter:description" content="๋ด์ฉ์ ๋ํ ์ค๋ช
. 200์ ๋ฏธ๋ง์ด์ด์ผ ํจ.">
<meta name="twitter:image" content="https://example.com/image.jpg">
- ๐ Twitter cards ์์ํ๊ธฐ โ Twitter Developers
- ๐ Twitter card ๊ฒ์ฌ๊ธฐ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ ํ์ด์ง ํ ์คํธํ๊ธฐ
- ๐ HTML ๋ ํผ๋ฐ์ค
์๋ฌ ํ์ด์ง: ์๋ฌ๋ฅผ ์ํ 404 ํ์ด์ง์ 5xx ํ์ด์ง๊ฐ ์กด์ฌํ๋๊ฐ? 5xx ํ์ด์ง๋ ์๋ฒ ์๋ฌ์ด๊ธฐ ๋๋ฌธ์, ์๋ฒ๋ก๋ถํฐ์ ๋ณ๋์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฐ์ง ์๊ณ ๋
๋ฆฝ์ ์ธ ์์ฒด CSS๋ฅผ ํฌํจํ๊ณ ์์ด์ผ ํจ์ ๊ธฐ์ตํจ
Noopener: ์ธ๋ถ ๋งํฌ๋ฅผ
target="_blank"๋ฅผ ์ด์ฉํ์ฌ ์ฐ ๊ฒฝ์ฐ, tab nabbing ํผ์ฑ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ rel="noopener" ์์ฑ์ ์ฌ์ฉํด์ผ๋ง ํจ. ๋ง์ฝ Firefox ์ ๋ฒ์ ์ ์ง์ํด์ผ๋ง ํ๋ค๋ฉด, rel="noopener noreferrer" ์ ์ฌ์ฉํจ
- ๐ W3C ๊ฒ์ฌ๊ธฐ
- ๐ Dirty markup: HTML ์ฝ๋๋ฅผ ์ ๋ํด์ฃผ๋ ์จ๋ผ์ธ ๋๊ตฌ
- ๐ W3C Link Checker
๋ ธํธ: ์นํฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ๋ง ๋์ง ์์ ๊ธ์๋ ๋ณด์ด์ง ์๋ ๊ธ์๋ค์ด ๊น๋นก์ผ ์ ์์ต๋๋ค. ์คํจํ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ ๋์ฒด์ฉ ํฐํธ๋ฅผ ํฌํจํ๊ฑฐ๋, ์นํฐํธ ๋ก๋๋ฅผ ํ์ฉํ์ฌ ์ด๋ฌํ ๋์๋ค์ ์ ์ดํ์ธ์.
์นํฐํธ ํฌ๊ธฐ: ๋ชจ๋ ์ข
๋ฅ(์ดํค๋ฆญ, ๋ณผ๋์ฒด ๋ฑ๋ฑ์ ํฌํจ)์ ์นํฐํธ ํฌ๊ธฐ์ ์ด ํฉ๊ณ๋ 2 MB๋ฅผ ๋์ง ์๋๋ก ํจ
์นํฐํธ ๋ก๋: ์นํฐํธ ๋ก๋๋ฅผ ์ด์ฉํ์ฌ ํฐํธ๊ฐ ๋ก๋ฉ๋๋ ๋์์ ์ ์ดํจ
๋ ธํธ: ๋๋ค์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ๋ฐ๋ฅด๋ CSS ๊ฐ์ด๋๋ผ์ธ๊ณผ Sass ๊ฐ์ด๋๋ผ์ธ ์ ์ดํด๋ณด์ธ์. ๋ง์ฝ ๋ชจ๋ฅด๋ CSS ์์ฑ ๊ฐ์ด ์๋ค๋ฉด, CSS ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋๋ค. ๋ํ CSS์ ์ผ๊ด์ฑ์ ์ํ ์ฝ๋ ๊ฐ์ด๋๋ ์ฝ์ด๋ณด๊ธฐ ๋ฐ๋๋๋ค.
- ๐ Reset.css
- ๐ Normalize.css
- ๐ Reboot
<div id="js-slider" class="my-slider">
<!-- ๋๋ -->
<div id="id-used-by-cms" class="js-slider my-slider">
๋ฐ์ํ ์น ๋์์ธ: ๋ชจ๋ ํ์ด์ง๊ฐ ๋ค์ ์ง์ ์์ ํ
์คํธ ์๋ฃ๋์์: 320px, 768px, 1024px (๊ทธ ์ธ ๋น์ ์ด ํ์ํ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
Responsive Checker -
- ๐ Am I Responsive?
- ๐ Mobile Friendly Test
- ๐ Responsive Website Design Tester
- ๐ Responsinator
- ๐ XRespond
- ๐ CSS ๊ฒ์ฌ๊ธฐ
๋ ธํธ: ์ด๋ฏธ์ง ์ต์ ํ์ ์์ ํ ์ดํด๋ฅผ ์ํด์๋, Addy Osmani๊ฐ ์ด ๋ฌด๋ฃ ebook Essential Image Optimization ์ ํ์ธํ์ธ์.
- ๐ Imagemin
- ๐ ImageOptim๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ฌด๋ฃ๋ก ์ต์ ํํ์ธ์
- ๐ Kraken.io๋ฅผ ์ฌ์ฉํ์ฌ png์ jpg์ ๊ฝค๋ ๋๋จํ๊ฒ ์ต์ ํ ํ ์ ์์ต๋๋ค. ํ์ผ ๋น 1MB์ ๋ํด์๋ ๋ฌด๋ฃ์ ๋๋ค.
- ๐ KeyCDN Image Processing ์ฌ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ์ด๋ฏธ์ง ์ต์ ํ
- ๐ TinyPNG png, apng (animated png), jpg images๋ฅผ ๋ฌด์์ค ์ต์ ํ ํ ์ ์์ต๋๋ค. ๋ฌด๋ฃ ๋ฒ์ ๊ณผ ์ ๋ฃ ๋ฒ์ ์ด ์กด์ฌ
- ๐ SVGO SVG ๋ฒกํฐ ๊ทธ๋ํฝ ํ์ผ๋ค์ ์ต์ ํํ๋ Nodejs ๊ธฐ๋ฐ ๋๊ตฌ
- ๐ SVGOMG SVGO์ ์น ๋ฒ์
<img> ํ๊ทธ์ ๋๋น์ ๋์ด๊ฐ ์ค์ ๋์์ (px์ด๋ %๋ก ์ง์ ํ์ง ๋ง์์ค)<img> ํ๊ทธ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์์ ํ๋ ๋์ฒด ํ
์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ (alt ์์ฑ์ผ๋ก ๋ถ์ฌ).min ์ ๋ฏธ์ฌ๋ฅผ ๋ถ์ด๋ ๊ฒ์ ์ถ์ฒ)noscript ํ๊ทธ: <noscript> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์์ค. ์ด๋ React.js ์ดํ๋ฆฌ์ผ์ด์
์ฒ๋ผ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ ๋ ๋๋ง์ด ๊ต์ฅํ ๋ฌด๊ฑฐ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ๊ต์ฅํ ์ ์ฉํจ. ๋ค์์ ์์ ๋ฅผ ์ดํด๋ณด์์ค<noscript>
์ด ์ดํ๋ฆฌ์ผ์ด์
์ ์คํ์ํค๊ธฐ ์ํด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํ ์์ผ์ผ ํฉ๋๋ค.
</noscript>
async์ defer ์์ฑ๊ฐ์ ์ด์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ ๋์ด์ผ ํจ<html> ํ๊ทธ ๋ด์ ํด๋์ค๋ค์ ์ถ๊ฐํ ์ ์์ Lazy ๋ก๋ฉ: ์ด๋ฏธ์ง, ์คํฌ๋ฆฝํธ, CSS ํ์ผ๋ค์ด lazy ๋ก๋ ๋์ด์ ํ ํ์ด์ง์ ์๋ต์๊ฐ์ ํฅ์์ํด (๊ฐ ์น์
์ ์์ธํ ๋ถ๋ถ์ ์ฐธ์กฐํ์์ค)
์ฟ ํค ํฌ๊ธฐ: ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๊ฐ ์ฟ ํค์ ํฌ๊ธฐ๊ฐ 4096 ๋ฐ์ดํธ๋ฅผ ๋์ง ์๊ณ , ๋๋ฉ์ธ ๋ด์ 20๊ฐ ์ด์์ ์ฟ ํค๋ฅผ ๊ฐ์ง์ง ์๋๋ก ์ฃผ์ํ์์ค
- ๐ ์ฟ ํค ์ฌ์: RFC 6265
- ๐ ์ฟ ํค
- ๐ ๋ธ๋ผ์ฐ์ ์ฟ ํค์ ์ ํ์
dns-prefetch ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํํฐ ์๋น์ค์ DNS ๊ฐ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ resolve ๋๋๋ก ํจ<link rel="dns-prefetch" href="https://example.com">
preconnect ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ํ์ํ ์๋น์ค์ DNS ์ ๋ฃฉ์
, TCP ํธ๋์
ฐ์ดํฌ์ TLS ํ์์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๋๋ก ํจ<link rel="preconnect" href="https://example.com">
prefetch ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ํ์ํ ๋ฆฌ์์ค๋ค(์์: ๋ ์ด์ง ๋ก๋ ๋๋ ์ด๋ฏธ์ง) ์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์์ฒญํ๋๋ก ํจ<link rel="prefetch" href="image.png">
preload ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํด ์๊ฐ์ ํ์ฌ ํ์ด์ง ๋ด์ ํ์ํ ๋ฆฌ์์ค๋ค (์์: body ํ๋จ์ ์์นํ๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ค) ์ ์ ํด ์๊ฐ์ ๋ฏธ๋ฆฌ ์์ฒญํ๋๋ก ํจ<link rel="preload" href="app.js">
๋ ธํธ: ์ ํ๋ธ์ ์ฌ์ ๋ชฉ๋ก์ ํ์ธํด๋ณด์ธ์ A11ycasts with Rob Dodson ๐น
- ๐ ๋๋น์จ
aria-label ์ ๋์ ์ฌ์ฉํ์์ค
- ๐ Wave ํ ์คํธ
- ๐ Search Console
- ๐ The robots.txt file
- ๐ Google Robots ํ ์คํธ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋น์ ์ robots.txt ํ์ผ์ ํ ์คํธ ํด๋ณด์ธ์
- ๐ ๊ตฌ์กฐํ ๋ ๋ฐ์ดํฐ ์๊ฐ - Search - Google Developers
- ๐ JSON-LD
- ๐ Microdata
- ๐ Test your page with the Rich Restults Test
- ๐ ๊ตฌ์กฐํ ๋ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ ์ ์๋ ๋จ์ด๋ค์ ๋ชฉ๋ก์ ๋ง๋ค์ด๋ณด์ธ์ Schema.org Full Heirarchy
rel="prev" ์ rel="next" ํ๊ทธ๋ฅผ ์ ๊ณตํจ<!-- Example: ํ์ด์ง๋ค์ด์
๋ชฉ๋ก์ 2ํ์ด์ง์ ํ์ด์ง๋ค์ด์
๋งํฌ ํ๊ทธ -->
<link rel="prev" href="https://example.com/?page=1">
<link rel="next" href="https://example.com/?page=3">
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋ค๋ฅธ ์ธ์ด๋ก๋ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค. ๋ชจ๋ ๋ฒ์ญ์๋ค๊ณผ ๊ทธ๋ค์ ๋ฉ์ง ๋ ธ๋ ฅ์ ๊ฐ์ฌํฉ๋๋ค!
๋ง์ฝ ๋น์ ์ด ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ์ ๊ท์น์ ๋ฐ๋ฅด๊ณ ์๋ค๊ณ ๋ณด์ฌ์ฃผ๊ธธ ์ํ๋ค๋ฉด, ํ๋จ์ ๋ฐฐ์ง๋ฅผ README ํ์ผ์ ์ถ๊ฐํ์ธ์!
[](https://github.com/thedaviddias/Front-End-Checklist/)
์ด์๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ PR์ ๋ ๋ ค์ ์์ ์ฌํญ์ด๋ ์ถ๊ฐํ ๋ถ๋ถ์ ๋ํด ์๋ ค์ฃผ์ธ์.
ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ ๋ ํฌ์งํ ๋ฆฌ๋ 2๊ฐ์ ๋ธ๋์น๋ก ๊ตฌ์ฑ๋์ด์ ธ ์์ต๋๋ค:
master์ด ๋ธ๋์น๋ ํ๋ก ํธ์๋ ์ฒดํฌ๋ฆฌ์คํธ ์น์ฌ์ดํธ์ ๋ฐ์๋๋ README.mdํ์ผ๋ก ๊ตฌ์ฑ๋์ด์ ธ ์์ต๋๋ค.
develop์ด ๋ธ๋์น๋ ํ์ํ๋ค๋ฉด ๊ตฌ์กฐ๋ ์ปจํ ์ธ ์ ์๋นํ ๋ณํ๋ฅผ ์ค ์ ์์ต๋๋ค. ๊ฐ๋จํ ์๋ฌ ์์ ์ ํ๊ฑฐ๋ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ ๊ฒฝ์ฐ, master ๋ธ๋์น์ ์ง์ ํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ง๋ฌธ์ด๋ ์ ์์ด ์๋ค๋ฉด, ์ฃผ์ ํ์ง ๋ง๊ณ Gitter๋ Twitter๋ฅผ ์ด์ฉํ์ธ์:
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! ๐ [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
266 followers ยท starred May 2022
314 followers ยท starred Mar 2020
80 followers ยท starred Dec 2021
670 followers ยท starred Apr 2025