Loadding..

11 Kỹ Năng Frontend Mà 90% Dev Bỏ Qua

11 Kỹ Năng Frontend Mà 90% Dev Bỏ Qua

Bạn quăng <div> vào mọi chỗ, load Google Fonts từ CDN, và import cả bộ Font Awesome chỉ để dùng 15 icon. Trang web chậm, điểm Lighthouse đỏ lòm, nhưng bạn không hiểu tại sao. 11 thứ trong bài này — mỗi cái đều fix được một vấn đề bạn đang gặp mà không nhận ra.

11 Kỹ Năng Frontend Mà 90% Dev Bỏ Qua

Đây không phải list tổng hợp recycled. Đây là những thứ tác giả thực sự thấy developer bỏ qua — và nó hiện rõ trong sản phẩm của họ.

1. 🏗️ Semantic HTML

Đừng ném <div> vào mọi chỗ. Semantic HTML không chỉ cho SEO — mà còn cho accessibility, readability, và long-term maintainability.

Dùng đúng tag cho đúng việc: <header><main><footer><nav><aside><article>. Screen reader và search engine đều phụ thuộc vào structure này để hiểu trang của bạn.

2. 📝 Biết Khi Nào Dùng Heading Tag

Heading tag có ý nghĩa cấu trúc, không phải styling. Lỗi phổ biến: thấy CTA lớn kiểu “Ready to get started?” là quăng <h2> vào — sai. Đó là text presentational, dùng <span> rồi style cho to.

  • Một trang chỉ có một <h1>
  • <h2> trở xuống dùng có chủ đích cho content thực sự cấu trúc trang

3. 🖼️ Image Optimization

Không ảnh nào trên website được vượt quá 100kb. Đây là quy tắc, không phải gợi ý.

  • Dùng WebP — nhỏ hơn JPEG/PNG, không mất chất lượng nhìn thấy được
  • Compress bằng Squoosh hoặc Sharp (Node.js) trước khi ship
  • Luôn define width và height để tránh layout shift
  • Dùng srcset để serve kích thước phù hợp theo device

4. ⚡ Lazy Loading & Fetch Priority

Không phải mọi thứ cần load cùng lúc — loading="lazy" trên ảnh và iframe below the fold là win dễ nhất bạn có thể lấy.

Nhưng phần người ta hay bỏ qua: Hero image không bao giờ được lazy load. Nó above the fold, user thấy đầu tiên — dùng fetchpriority="high".

Hai attribute này cùng nhau tác động đo được đến LCP score.

5. 🔤 Host Google Fonts Locally

Google Fonts CDN = extra DNS lookup + extra connection + extra request mỗi page load. Bạn đang thêm latency không cần thiết.

Fix đơn giản: Download font về, tự serve.

  • Dùng font-display: swap để text vẫn hiển thị khi font đang load
  • Dùng woff2 — mọi browser hiện đại support và đây là format nhỏ nhất
  • Tool hỗ trợ: google-webfonts-helper

6. 🎨 Bỏ Font Awesome CDN, Dùng Custom SVG Icon

Font Awesome CDN load hàng trăm kilobyte icon. Bạn dùng khoảng 15 cái. Đây là trade-off tệ hại.

Thay vào đó: dùng inline SVG. AI generate SVG icon rất tốt — hỏi đúng cái bạn cần, paste vào. Scale perfect mọi screen, support currentColor để theming dễ, zero HTTP request thêm.

7. 🎯 Xây Design System, Không Phải Random Styles

Spacing, sizing, màu sắc, font phải theo hệ thống — không phải cảm tính. Khi mỗi dev tự bịa margin value, codebase trở thành mớ hỗn độn không gì align.

:root {
  --space-xs: 4px;   --space-sm: 8px;
  --space-md: 16px;  --space-lg: 32px;
  --text-sm: 0.875rem;  --text-base: 1rem;
}

Define token một lần, dùng ở khắp nơi. Bạn ngừng debate “14px hay 15px?” — chỉ cần --text-sm.

8. ✍️ Viết Custom CSS Thay Vì Phụ Thuộc Third-Party

Tailwind, Bootstrap không phải ác — nhưng lean vào chúng cho mọi thứ sẽ bloat project và cản việc hiểu CSS thực sự.

Hãy dùng native CSS hiện đại:

  • clamp() cho fluid typography thay vì hardcode breakpoint
  • grid và flex native — không cần library cho layout
  • Container queries để component responsive theo size của chính nó, không phải viewport
@container (min-width: 400px) {
  .card { flex-direction: row; }
}

9. ♿ Accessibility Không Phải Tùy Chọn

Semantic HTML mới được một nửa. Nếu user không navigate được bằng keyboard — website của bạn bị broken. Đơn giản vậy thôi.

Checklist cơ bản:

  • Mọi interactive element phải reachable bằng Tab, operable bằng Enter/Space
  • Đừng bao giờ remove focus outline mà không thay thế bằng thứ gì visible
  • Dùng aria-label trên icon button không có visible text
  • Color contrast đạt WCAG AA: 4.5:1 ratio cho normal text

10. 📊 Hiểu Core Web Vitals

Không phải vì Google bảo — mà vì chúng đo những thứ thực sự quan trọng với user thật.

MetricĐo gìCách tối ưu
LCPMain content xuất hiện nhanh khôngOptimize hero image, server response
CLSPage có nhảy loạn không khi loadLuôn set image dimensions
INPPage respond input nhanh khôngTránh long task trên main thread

Mở Chrome DevTools, chạy Lighthouse audit, thực sự đọc kết quả.

11. 👁️ Rèn Con Mắt Design

Khi AI ngày càng giỏi viết code, thứ phân biệt frontend developer giỏi với số còn lại là design judgment.

Bạn không cần trở thành designer. Bạn cần:

  • Hiểu tại sao spacing inconsistent trông “lạc lõng”
  • Nắm basic typography: line height, line length, font pairing
  • Nhìn site bạn thích và tự hỏi tại sao nó trông tốt
  • Practice trong Figma hoặc ngay trên browser

Chỉ có một kỹ năng sẽ không đưa bạn đi xa. Frontend developer nổi bật là người vừa nghĩ về code, vừa nghĩ về thứ hiện ra trên màn hình.

💡 Tổng Kết Nhanh

#Kỹ năngMức độ bị bỏ qua
1-2Semantic HTML & Headings🔴 Rất thường xuyên
3-4Image opt & Lazy loading🔴 Rất thường xuyên
5-6Self-host fonts & SVG icons🟡 Thường xuyên
7-8Design system & Custom CSS🟡 Thường xuyên
9Accessibility🔴 Rất thường xuyên
10Core Web Vitals🟡 Thường xuyên
11Design eye🟠 Ít ai chủ động học
Print