Web frontend stack ngắn cho junior Việt | HTML → CSS → JS → framework【2026】
Stack web cho junior Việt không phải “học hết mọi framework”. Thứ tự bền: HTML → CSS → JavaScript → Git → một framework (React hoặc Vue). Thêm TypeScript khi đã làm được app JS nhỏ. Outsource cần đọc Figma + gọi API + PR sạch hơn là chứng chỉ dài. Portfolio một trang responsive và một CRUD gọi API thật đánh bại mười tutorial clone chưa deploy.
Từ khóa “học web”, “frontend stack”, “nên học React không” xuất hiện mỗi mùa tuyển dụng. Sinh viên và junior Việt hay bị ngập trong roadmap YouTube: tuần này Next 15, tuần sau Nest, tuần tới Kubernetes — trong khi vẫn chưa tự center một div bằng Flexbox.
Bài này là lộ trình frontend ngắn theo góc junior / fresher Việt Nam 2026: đủ để xin intern hoặc task outsource nhỏ, không phải encyclopedia toàn bộ ngành web.
Ai nên đọc
- Sinh viên năm 2–3 muốn hướng UI thay vì chỉ LeetCode
- Fresher join team outsource, bị lead hỏi “em biết React hooks chưa?”
- Người tự học đang nhảy cóc giữa 4 khóa Udemy
Bản đồ stack (nhìn một lần)
[Trình duyệt]
HTML — cấu trúc, form, accessibility tối thiểu (label, heading)
CSS — Flex/Grid, responsive, token màu/chữ
JS — DOM, event, fetch, async/await
Git — branch → commit → PR
Framework — React hoặc Vue (một cái)
(sau) TypeScript, Next/Nuxt, test, CI
Mọi lớp trên dựa vào lớp dưới. Framework không thay HTML/CSS; nó chỉ tổ chức UI thành component.
Giai đoạn 1: HTML + CSS (đừng bỏ)
Mục tiêu: tự dựng landing / form / bảng đơn giản không dùng UI library.
Nên thành thạo:
- Thẻ ngữ nghĩa:
header,main,nav,button(không phảidivonclick cho mọi thứ) - Form:
label+input+ validate HTML5 cơ bản - Flexbox cho hàng; CSS Grid cho trang 2 cột
- Responsive: mobile-first,
min-widthbreakpoints
Bài tập 1 tuần: clone layout một trang tin tức hoặc portfolio — chỉ HTML/CSS, deploy GitHub Pages.
Lỗi hay gặp: học Tailwind trước khi hiểu margin/padding → khi Figma lệch 4px không biết sửa utility nào.
Giai đoạn 2: JavaScript “đủ đi làm”
Không cần thuộc toàn ES2024. Ưu tiên:
| Chủ đề | Vì sao junior cần |
|---|---|
const/let, destructuring | Đọc code review |
Array map/filter/find | Render list từ API |
DOM querySelector, event | Form trước khi có framework |
fetch + async/await | Gọi REST |
| try/catch + trạng thái loading/error | UX thật, không chỉ happy path |
Bài tập: app thời tiết hoặc danh sách việc — nhập liệu, lưu localStorage, gọi một API public, hiện lỗi mạng.
async function loadItems() {
setStatus("loading");
try {
const res = await fetch("/api/items");
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
renderList(data);
setStatus("idle");
} catch (err) {
setStatus("error");
console.error(err);
}
}
Khi bạn tự viết được đoạn trên không copy nguyên file từ ChatGPT, bạn sẵn sàng học framework.
Giai đoạn 3: Git trước khi “biết React”
Team outsource Việt sống trên Pull Request. Junior biết hooks nhưng không tách branch sẽ làm chậm cả squad.
Tối thiểu:
status→add→commit→push- Nhánh
feature/...riêng, không commit thẳngmain - Message nói rõ thay đổi (tiếng Anh ngắn nếu repo khách quốc tế)
Chi tiết lệnh: xem cheat sheet Git cho junior.
Giai đoạn 4: Chọn React hoặc Vue (một cái)
| Tiêu chí | React (+ thường Next) | Vue 3 (+ thường Nuxt) |
|---|---|---|
| Tin tuyển dụng HCM/HN | Nhiều hơn, nhất là product & outsource US/JP | Ổn định ở agency/product Việt & một số team EU |
| Đường cong đầu | JSX + ecosystem rộng (dễ lạc) | SFC dễ đọc hơn với người mới CSS |
| Việc thực tế | CRUD, auth cookie/JWT, table, form nặng | Tương tự — đừng chọn vì “dễ hơn trên YouTube” |
| Nên chọn khi | Mentor/repo khách đang React | Team bạn đang Vue hoặc thích SFC |
Quy tắc: theo việc và mentor, không theo hype Twitter. Học sâu một stack đến mức:
- List + trang chi tiết từ API
- Form create/update kèm validate
- Đăng nhập giả (token trong memory/cookie httpOnly nếu có backend)
- Deploy URL thật để ghi vào CV
Next.js / Nuxt học sau khi hiểu routing và data fetching của React/Vue thuần — nếu không, file app/page.tsx trở thành ma thuật.
TypeScript: khi nào thêm
- Chưa: vẫn rối
undefinedlà gì, chưa phân biệt sync/async. - Nên: đã có app JS, join repo khách có sẵn
strict, hoặc lead yêu cầu PR typed.
Học TS theo “sửa lỗi trên PR thật” hiệu quả hơn khóa 20 giờ lý thuyết generic.
Stack outsource hay gặp (để khỏi sốc ngày đầu)
Figma → bạn cắt UI (React/Vue + Tailwind hoặc CSS module)
→ gọi API team backend (REST JSON)
→ PR trên GitHub/GitLab
→ staging → production (bạn ít khi giữ server)
Kỹ năng mềm kỹ thuật quan trọng hơn “biết 3 state library”:
- Đọc ticket / AC (acceptance criteria)
- Hỏi sớm khi API thiếu field
- Tự test mobile trước khi “em xong rồi”
- Không commit
.envvà secret
Case: hai lộ trình 3 tháng
A — Nhảy cóc: Tuần 1 cài Next, tuần 2 copy dashboard template, tuần 3 apply intern. Phỏng vấn hỏi “Flex khác Grid chỗ nào?” — Speeches. Portfolio toàn template, không giải thích được data flow.
B — Nền tảng rồi framework: Tháng 1 HTML/CSS + 2 trang responsive. Tháng 2 JS + Git + 1 app API. Tháng 3 React (hoặc Vue) viết lại app đó thành component, deploy. Phỏng vấn có URL + giải thích được loading/error — tỷ lệ callback cao hơn dù “ít buzzword”.
Việc không cần làm ngay (tiết kiệm thời gian)
- Học song song React và Vue và Angular
- Docker/K8s khi chưa deploy nổi static site
- GraphQL + gRPC + message queue ngày đầu frontend
- Pixel-perfect animation trước khi form submit được
Những thứ trên hữu ích sau khi bạn đã có một vòng giao hàng (ship) hoàn chỉnh.
Checklist tự đánh giá “sẵn sàng intern frontend”
- Tự tay dựng form + bảng bằng HTML/CSS, mobile ổn
-
fetch+ hiện loading/error không copy mù - Tạo nhánh, commit, mở PR trên GitHub
- Một app framework (React hoặc Vue) gọi API và deploy
- Đọc được Figma cơ bản (spacing, màu, trạng thái hover)
- Giải thích được dự án của mình trong 3 phút (tiếng Việt hoặc Anh)
Câu hỏi thường gặp
Có cần học jQuery năm 2026 không?
Không ưu tiên. Chỉ đọc khi maintain legacy. Tập trung DOM hiện đại + framework team bạn dùng.
Backend có nên học song song không?
Biết HTTP status, JSON, CORS cơ bản là đủ để frontend giỏi. Full Nest/Laravel để sau nếu dual-track.
Portfolio nên để tiếng Anh hay Việt?
README ngắn tiếng Anh giúp khách quốc tế; nội dung demo có thể Việt. Quan trọng là URL chạy được.