Lập Trình Frontend: Bản Đồ Kiến Thức Cho Người Bắt Đầu

0 0 0

Người đăng: Nhân Phạm

Theo Viblo Asia

First things first

Chào các bạn. Nhân lúc đang có họat động MayFest sôi nổi này, mình tranh thủ làm vài dòng về những thứ mà mình đã được trải nghiệm trong công việc của một lập trình viên. Mình là Nhân, một Backend ĐÉP, mình rất thích tìm hiểu về các công nghệ xoay quanh các công nghệ backend, kiến trúc, đóng gói và triển khai ứng dụng phía server. Nhưng đợt này công ty mình có làm nhiều task liên quan tới FrontEnd vì vậy để tổng hợp lại những kiến thức FrontEnd từ lúc chập chững vào nghề ( Mảng này mình khá yếu, toàn dùng template 😂). Nên giờ mình sẽ làm một số bài viết về chủ đề này. Ngoài ra mình cũg sẽ viết 1 số bài viết về BackEnd nữa, nếu các bạn quan tâm thì đọc tiếp nha. Bài viết này sẽ là phần mở đầu nội dung bao gồm những kiến thức tổng quan nhất về FrontEnd.

PHẦN 1: THÀNH PHẦN

Front-End bao gồm ba công nghệ chính hợp tác tạo nên giao diện web:

  • HTML xây dựng cấu trúc và nội dung. HTML là “bộ khung” của trang, xác định các phần tử (đoạn văn, tiêu đề, hình ảnh, v.v.)
  • CSS điều khiển trình bày và bố cục. CSS định kiểu (màu sắc, font, khoảng cách, bố cục)
  • JavaScript bổ sung tính năng tương tác và động. JavaScript xử lý logic, phản hồi sự kiện người dùng (click, nhập liệu) và cập nhật DOM.
  • TypeScript: là ngôn ngữ mở rộng của JavaScript thêm tính năng kiểu tĩnh (static typing). TypeScript kiểm tra kiểu tại thời gian biên dịch và cung cấp công cụ IDE mạnh hơn (gợi ý mã, bắt lỗi sớm). Mã TS được biên dịch về JS để chạy ở trình duyệt.
Ví dụ:
JavaScript:
let age = 30;
age = "thirty"; // Không báo lỗi, nhưng dễ gây bug
TypeScript:
let age: number = 30;
age = "thirty"; // Lỗi: Type 'string' is not assignable to type 'number'

Tóm tắt sự khác biệt chính:

Tính năng JavaScript TypeScript
Kiểu dữ liệu tĩnh Không
Phát hiện lỗi sớm Không Có lúc biên dịch
Khai báo biến có kiểu rõ ràng Không
Hàm có kiểm tra tham số và kiểu trả về Không
Hướng dẫn lập trình viên tốt hơn Không Có (nhờ IntelliSense, type checking)

DOM (Document Object Model)

Là mô hình đối tượng tài liệu, đại diện cây cấu trúc HTML của trang, cho phép JavaScript truy xuất và thay đổi nội dung, cấu trúc hoặc style động trên trang. Ví dụ, DOM cho phép tìm phần tử theo ID và cập nhật giá trị hoặc sự kiện cho chúng.

BOM (Browser Object Model)

Bao gồm các đối tượng mà JavaScript dùng để tương tác với trình duyệt, như window, history, location… BOM không chuẩn hóa nhưng cho phép kiểm soát cửa sổ trình duyệt, URL, lịch sử… mà DOM không có. Vậy chúng ta đã có 3 thành phần chính để cấu tạo nên các website cơ bản nhưng các phần phần trên chạy ở đâu ? Hãy đến phần 2 để rõ hơn .

PHẦN 2: MÔI TRƯỜNG

Ở phần 1 ta đã có cá nhìn khái quát về các thành phần của 1 trang web, nhưng các thành phần ấy chạy ở đâu, tại sao chúng cần môi trường để chạy ?

Vì bản thân chúng không phải là chương trình độc lập hoặc ứng dụng máy tính, mà chỉ là:

  • HTML: Cấu trúc nội dung.
  • CSS: Trình bày giao diện.
  • JavaScript: Tạo động, tương tác.

Chúng cần môi trường hiểu và xử lý chúng – cụ thể là:

  • HTML/CSS cần một engine render (trình duyệt) để vẽ UI.
  • JS cần một engine như V8 (Chrome) hay SpiderMonkey (Firefox) để chạy lệnh. Trình duyệt Web (Browser) – Môi trường gốc để chạy
Thành phần Vai trò của trình duyệt
HTML Trình duyệt phân tích cú pháp (parse), xây DOM
CSS Trình duyệt xây dựng CSSOM và render giao diện
JavaScript Trình duyệt thực thi mã JS bằng engine (VD: V8 của Chrome)

Ví dụ: Khi bạn mở file index.html bằng Chrome, trình duyệt sẽ:

  1. Đọc HTML ➝ xây DOM Tree.
  2. Đọc CSS ➝ xây CSSOM Tree.
  3. Kết hợp DOM + CSSOM ➝ tạo Render Tree để vẽ UI.
  4. Đọc và thực thi JavaScript để tạo tương tác, xử lý logic động.

TypeScript không chạy trực tiếp trong trình duyệt, mà cần biên dịch sang JavaScript (transpile) trước đó (thường bằng tsc, Webpack, hoặc Vite).

Như vậy từ các file html, css, js tĩnh và môi trường thì ta đã có thể xây dựng được các trang web cực kỳ sống động rồi. Nhưng những trang web hiện tại có nhiều trang, rất nhiều thành phần, hoạt ảnh vì vậy để có thể dễ dàng hơn trong việc lập trình ta tới phần tiếp theo là Frameword và Lib FrontEnd.

Mình sẽ nói kỹ hơn về cách mà HTML/CSS/JS chạy trên trình duyệt ở một bài viết khác.

PHẦN 3: LIBRARY & FRAMEWORK

Đầu tiên ta cần phân biệt giữa Library và Framework

1. Library = Bộ công cụ (Toolbox)

Ví dụ: Bạn có một bộ dụng cụ sửa xe: có tua vít, cờ lê, búa, kìm…

Bạn chọn ra từng món phù hợp để sửa cái bạn muốn: bánh xe, dây điện, đèn pha...

Bạn điều khiển quá trình sửa – bạn là người ra quyết định.

2. Framework = Bộ máy/Khung sườn hoàn chỉnh

Ví dụ: Một dây chuyền lắp ráp ô tô có sẵn:

Băng chuyền chạy sẵn.

Có các module đã định nghĩa (gắn động cơ, lắp bánh, kiểm tra an toàn…)

Việc của bạn: “gắn” các bộ phận riêng (code, logic, UI...) vào đúng chỗ.

3. So sánh

Đặc điểm Library (Bộ công cụ) Framework (Bộ máy hoàn chỉnh)
Ai kiểm soát luồng Bạn (code của bạn gọi thư viện) Framework (framework gọi code của bạn)
Mức độ linh hoạt Cao, tuỳ chỉnh tuỳ ý Thấp hơn, phải theo quy tắc có sẵn
Mục tiêu Giải quyết bài toán nhỏ/lẻ Xây dựng cả hệ thống front-end
Ví dụ React, Lodash, Axios Angular, Vue, Svelte, Next.js, Nuxt.js
Ẩn dụ Bộ đồ nghề – bạn chủ động sửa/lắp Dây chuyền – bạn chỉ gắn phần mình vào thôi

4. Các Library

  • Các Library UI giúp thiết kế UI nhanh, chuẩn hóa : Một số Lib có sẵn giúp việc tùy chỉnh giao diện được dễ dàng, responsive hơn như: Tailwind, Ant Design, Bootstrap, …
  • Các thư viện tiện ích như Axios: Gọi API Three.js: Đồ họa 3D WebGL Chart.js, Recharts: Vẽ biểu đồ, data visualization
  • … và còn rất nhiều lib khác nhau tùy theo nhu cầu sử dụng

5. Các Framework

Hiện nay có rất nhiều Framework, về từng loại mình sẽ đề cập riêng ở từng vài về cá Framework cụ thể, sau đây là phần tổng quan về các Framwork hiện nay:

React.js (Library - Facebook): (về thực chất thì ReactJS không hẳn là 1 Framework FE nhưng khi kết hợp với Redux, React Router thì cũng có thể xem như ReactJS là 1 Framework FE) Dựa trên component, dễ mở rộng, thường dùng với Redux, React Router.

Vue.js (Progressive Framework): Kết hợp ưu điểm của Angular và React, cú pháp gần HTML, nhẹ, dễ học.

Angular (Full Framework - Google): Tích hợp đầy đủ (Router, HTTP, Form,...), mạnh trong enterprise.

Svelte: Compile trực tiếp thành JS thuần, hiệu năng cao, không dùng virtual DOM.

SolidJS: Cực nhanh, cú pháp JSX như React, reactive bằng signals.

Sau đây là bảng so sánh độ phổ biến của các Framework FrontEnd:

Nguồn : https://gist.github.com/tkrotoff/b1caa4c3a185629299ec234d2314e190****

PHẦN 4: KẾT LUẬN

Thế giới Front-End rất rộng lớn và không ngừng thay đổi từng ngày. Để nắm bắt hết mọi khía cạnh của lĩnh vực này là điều không dễ dàng – nó đòi hỏi thời gian, trải nghiệm thực tế, và sự cập nhật liên tục.

Tuy nhiên, qua bài viết này, bạn đã có được một cái nhìn tổng quan về Front-End: từ những công nghệ cốt lõi như HTML, CSS, JavaScript đến môi trường thực thi, thư viện, framework, và cách chúng phối hợp để tạo nên những ứng dụng web hiện đại.

Muốn tiến xa trong lĩnh vực này, kiến thức nền tảng là điều bắt buộc. Bởi lẽ, dù công nghệ có thay đổi ra sao, thì phần lớn các framework hiện nay vẫn xoay quanh ba trụ cột: HTML, CSS và JavaScript.

Cảm ơn đã đọc hết bài viết, nếu thấy có nội dung nào cần sửa đổi thì mình xin 1 comment để cùng sửa nhé.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thủ thuật nhỏ để căn chỉnh image với object-fit

Chào các bạn,. Có lẽ trong hành trình code của các bạn thì không ít lần gặp vấn đề méo ảnh do fix cứng cả width, height của ảnh nhỉ? Hoặc kể cả khi bạn set value cho 1 thuộc tính weigth hoặc height còn thuộc tính còn lại để auto thì nhiều lúc ảnh cũng không được hiển thị toàn vẹn cho lắm.

0 0 56

- vừa được xem lúc

Tìm hiểu về CSS framework - Bulma

Mở đầu:. Mấy bữa nay đang lướt web thấy có giới thiệu framework bulma này, được mọi người giới thiệu gọn nhẹ và dễ sử dụng, nên mình mới tìm hiểu thử và hôm nay xin viết 1 bài viết giới thiệu sơ qua với các bạn.

0 0 40

- vừa được xem lúc

Một số mẹo vặt "hay ho" của ES6 có thể bạn chưa biết - Phần 4

Xin chào, ở 3 bài trước của series "Một số mẹo vặt "hay ho" của ES6", mình đã chia sẻ 1 số tips/tricks nhỏ với ES6, hy vọng ít nhiều nó sẽ có ích với các bạn khi áp dụng vào thực tế. Hôm nay, xin mời các bạn theo dõi phần 4 của series này.

0 0 51

- vừa được xem lúc

Tìm hiểu về Jest Mocks Test phía frontend

Giới thiệu. Chắc hẳn không ai phủ nhận rằng UnitTest là 1 phần quan trọng trong giai đoạn phát triển phần mềm, đảm bảo cho code được coverage tránh các bug không mong muốn.

0 0 42

- vừa được xem lúc

Convert từ SVG sang Icon Font như thế nào?

Chào các bạn. Như câu hỏi trên title của bài viết, hôm nay mình sẽ hướng dẫn các bạn cách convert 1 file svg 1 cách khá đơn giản và vô cùng tiện lợi cho các bạn. https://icomoon.io/app/#/select.

0 0 64

- vừa được xem lúc

Một vài thủ thuật làm việc với các dạng layout - Phần 4

. Chào mọi người, cũng đã lâu rồi mình không thấy nhau. Để tiếp tục với series's về các dạng layout hôm nay mình sẽ chia sẻ thêm một trick thú vị nữa về step layout.

0 0 50