Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Programming

/

Web Development

Từ sự kiện đến SPA, động cơ thiết yếu của web tương tác - [Chinh phục hoàn toàn DOM Part 2]

Khóa học này không chỉ dừng lại ở thao tác DOM đơn thuần, mà còn đi sâu vào việc tìm hiểu cách cấu trúc và phản ứng động với giao diện người dùng web trong tương tác thực tế với người dùng. Bản chất của hệ thống sự kiện, bubbling và capturing, ủy quyền sự kiện, phản hồi UX theo thời gian thực, và tối ưu hóa hiệu suất bằng cách sử dụng throttle & debounce, đã được cấu trúc để bạn có thể tự mình triển khai và nắm vững các vấn đề thường gặp trong thực tế. Dựa trên sự hiểu biết về cấu trúc của cây DOM, bạn sẽ phát triển khả năng liên kết linh hoạt luồng sự kiện và thay đổi trạng thái.

19 học viên đang tham gia khóa học này

  • nhcodingstudio
실습 중심
웹개발
풀스택
이론 실습 모두
시각화
HTML/CSS
JavaScript
React
Web API
DOM

Dịch cái này sang tiếng Việt

  • Ứng dụng thực tế của addEventListener và removeEventListener

  • Luồng sự kiện: Nắm vững cấu trúc Capture → Target → Bubbling

  • Sự khác biệt và cách sử dụng của event.target, currentTarget, this

  • Cách thức hoạt động thực tế của preventDefault, stopPropagation

  • Xử lý hiệu quả các phần tử động với event delegation

  • Thực hiện hệ thống xác thực thời gian thực và phản hồi UX

  • Thiết kế cấu trúc liên kết trạng thái reactive dùng Proxy.

  • Kiểm soát sự kiện tần suất cao với throttle và debounce

  • Cách gắn sự kiện vào DOM tạo/xóa động

  • Cách đồng bộ hóa thay đổi trạng thái và sự kiện DOM trong cấu trúc SPA

🚀Bí mật của tương tác phản hồi chỉ với một cú nhấp chuột, tất cả về DOM Event

🚦Thông báo bằng viền đỏ khi nhập sai giá trị,
🖱 Tooltip tự nhiên theo dõi khi di chuột,
🗑 Xóa gọn gàng hàng chục mục động chỉ với một nút…

Làm thế nào để tạo ra những UI như thế này?
Chúng ta tương tác với các trang web hàng ngày, nhưng thường không hiểu rõ về 'nguyên lý hoạt động tinh vi của hệ thống sự kiện' diễn ra bên trong đó.

Trong khóa học này, bạn sẽ hoàn toàn nắm vững nguyên lý đó thông qua việc trực quan hóa và thực hành tất cả từ cơ bản đến tối ưu hóa hiệu suất.


Đây là khóa học thực hành tập trung vào nguyên lý hoạt động của hệ thống sự kiện DOM và toàn bộ kỹ thuật triển khai UI động sử dụng hệ thống này. Không chỉ dừng lại ở việc giải thích khái niệm đơn thuần, bạn sẽ học từng bước một cách thực hành từ sự kiện chuột đến nhập liệu bàn phím, kiểm soát luồng sự kiện, ủy quyền sự kiện, và các kỹ thuật tối ưu hóa hiệu suất.

Đặc biệt là target, currentTarget, stopPropagation, mouseover, mouseenter và các yếu tố sự kiện dễ gây nhầm lẫn khác được so sánh trực quan và thực hành thông qua debugging chính là cốt lõi của khóa học. Thông qua quá trình theo dõi các ví dụ thực hành, quan sát bằng mắt và tự tay xây dựng cấu trúc, DOM event sẽ không còn là lý thuyết mà trở thành 'công cụ quen thuộc'.

Cuối cùng, chúng ta sẽ mở rộng đến UI dựa trên trạng thái sử dụng Proxy, cho phép bạn trải nghiệm trước cấu trúc sự kiện-trạng thái được sử dụng trong các framework thực tế. Hiểu được cấu trúc này sẽ giúp bạn dễ dàng tiếp nhận luồng hoạt động bên trong của các thư viện như React, Vue.

Từ người mới bắt đầu đến trình độ trung cấp, nếu bạn muốn học vượt ra ngoài việc đăng ký sự kiện đơn giản để hiểu 'bản chất của tương tác web và chiến lược tối ưu hóa hiệu suất', thì đây chính là khóa học chinh phục hoàn toàn DOM Event mà bạn nhất định phải tham gia.

📌Khuyến nghị cho những người như thế này

🎯 Người mới bắt đầu muốn làm cho trang web trở nên động hơn với JavaScript

HTML/CSS thì đã quen thuộc, nhưng đây là cuốn sách nhập môn sự kiện đầu tiên dành cho những ai cảm thấy bối rối khi triển khai các tương tác như click, nhập liệu, sự kiện chuột.

🧱 Publisher muốn thiết kế UI như nhấp chuột nút, xóa danh sách

Phù hợp với các designer/publisher muốn học cách kết nối sự kiện để làm cho thiết kế hoạt động thực tế.

🧪 Người học thực hành muốn học bằng cách quan sát và xác nhận bằng mắt thay vì chỉ học thuộc lòng đơn thuần

Giống như sự khác biệt giữa mouseovermouseenter, những khái niệm dễ gây nhầm lẫn khi chỉ nghe qua có thể được hiểu rõ ràng thông qua các ví dụ thực tế và quá trình debug.

🔀 Người học frontend đã học React, Vue nhưng vẫn bối rối về luồng sự kiện

Nếu các khái niệm như target, currentTarget, stopPropagation vẫn chưa được sắp xếp rõ ràng trong đầu bạn thì khóa học này sẽ tạo ra điểm chuẩn cho bạn.

Nhà phát triển tập trung vào hiệu suất muốn tự tay triển khai debounce và throttle

Đây là khóa học tập trung vào code thực tế dành cho những ai muốn tìm hiểu nguyên lý thực sự và cách thức hoạt động của tối ưu hóa hiệu suất sự kiện, chứ không phải là code học thuộc lòng.

🧩 Những người có kinh nghiệm dự án muốn cảm nhận được hiệu quả và cấu trúc của event delegation

Thoát khỏi cách thức đăng ký sự kiện riêng lẻ mỗi khi nhấp vào li, bạn sẽ làm quen với cấu trúc điều khiển hàng chục phần tử bằng một listener duy nhất.

🧠 Nhà phát triển trung cấp muốn hiểu sâu về DOM và sự kiện thông qua việc debug

Không chỉ là cuộc gọi API đơn giản, mà còn theo dõi thời gian thực thông qua console về cách các sự kiện chảy và được xử lý bên trong trình duyệt.

🏗 Nhà phát triển muốn thành thạo các khái niệm trước framework thông qua cấu trúc SPA tự xây dựng

Trải nghiệm trực tiếp những gì React/Vue thực hiện bên trong thông qua cấu trúc theo dõi trạng thái sử dụng Proxy và tự động phản ánh UI.

🧼 Người học hướng thực tiễn muốn triển khai các cấu trúc UX thường được sử dụng trong thực tế

Thực hành các mẫu lặp lại trong thực tế như thay đổi màu viền khi giá trị nhập sai, hiển thị thông báo, kích hoạt điều kiện nút, v.v.

🔍 Event - tất cả các developer đều nghĩ mình biết hết nhưng khi thực sự phải sử dụng thì lại bối rối

Nếu bạn không hiểu rõ lý do tại sao phải sử dụng preventDefault trong form.submit, hoặc luồng sự kiện còn mơ hồ, thì khóa học này sẽ là tài liệu tổng hợp rõ ràng nhất.

Đặc điểm của khóa học này

📌 Giải thích 100% tập trung vào hình ảnh: Cấu trúc addEventListener, luồng bubbling/capturing, đến cả event delegation đều được giải thích bằng hình ảnh trực quan

📌 Thực hành 70%, triển khai 30%: Tất cả các khái niệm đều được thực hành trực tiếp bằng HTML/CSS/JS và kiểm tra bằng mắt

📌 Cung cấp các nhiệm vụ thực hành xuyên suốt: luyện tập lặp lại các kỹ năng như xác thực đầu vào, xóa danh sách, triển khai UI động, kết nối trạng thái

📌 Kiến thức cần thiết trước khi chuyển sang Framework: Nắm vững luồng sự kiện và cấu trúc kết nối trạng thái-render trước khi chuyển sang React/Vue

📌 Không chỉ ghi nhớ khái niệm đơn thuần mà là rèn luyện 'cảm giác tương tác': Kiểm soát góc nhìn tập trung vào UX, phân tích luồng hành vi người dùng

🎓 Sau khi hoàn thành khóa học

  • Bạn có thể sử dụng thành thạo tất cả các tùy chọn và luồng của addEventListener.

  • Có thể kiểm soát hoàn hảo các sự kiện đầu vào như chuột, bàn phím, ô nhập liệu, v.v.

  • target, currentTarget, stopPropagation và các khái niệm dễ nhầm lẫn khác có thể được phân biệt hoàn toàn bằng hình ảnh.

  • mouseover, mouseenter, mousemove có thể giải thích chính xác sự khác biệt và tiêu chí lựa chọn

  • Có thể thiết kế cấu trúc ủy quyền sự kiện (event delegation) trong các dự án thực tế

  • Có thể tự triển khai và áp dụng các hàm debounce và throttle để tối ưu hóa hiệu suất

  • Xác thực đầu vào thời gian thực, phản hồi màu viền, xóa danh sách động và các tính năng khác để triển khai cấu trúc sự kiện tập trung vào UX

  • Bạn có thể tự tạo cấu trúc kết nối tự động giữa trạng thái-UI dựa trên Proxy

  • Bạn có thể hiểu cấu trúc cơ bản của SPA để điều khiển đồng thời nhiều phần tử DOM bằng một state

  • Bạn sẽ có được con mắt và cảm giác có thể debug và theo dõi toàn bộ cấu trúc sự kiện qua console

🎯 Bạn sẽ học những nội dung như thế này

Hiểu cấu trúc đối tượng sự kiện

Phân tích tất cả các thuộc tính của đối tượng sự kiện như target, currentTarget, type và học cách sử dụng chúng trong thực tế.

🐭 Sự khác biệt tinh tế của sự kiện chuột

mouseover, mouseenter, mousemove khác nhau khi nào và như thế nào? Chúng ta sẽ so sánh chính xác bằng cách trực quan hóa luồng thực tế.

Kỹ thuật kiểm soát lan truyền sự kiện

stopPropagation, stopImmediatePropagation sự khác biệt và cách chúng hoạt động trong luồng DOM thực tế được hiểu thông qua thí nghiệm.

📝 Thiết kế kiểm tra tính hợp lệ của đầu vào

Sử dụng các sự kiện input, focus, blur để thiết kế logic xác thực giá trị đầu vào và tạo cấu trúc xác thực form thực tế.

🎨 Giao diện phản hồi trực quan thời gian thực

Thay đổi màu viền theo giá trị đầu vào, hiển thị thông báo lỗi và các mẫu UX thân thiện với người dùng khác được triển khai bằng CSS + JS.

🪢 Làm chủ mẫu ủy quyền sự kiện

Thiết kế cấu trúc ủy quyền sự kiện tự động áp dụng cho cả các mục được thêm động và áp dụng vào dự án thực tế.

🕵 Debug và trực quan hóa luồng sự kiện

Giai đoạn Capturing → Target → Bubbling에서 theo dõi cách sự kiện được truyền bằng cách sử dụng trình gỡ lỗi và công cụ của trình duyệt.

🔁 Liên kết trạng thái-UI dựa trên Proxy

Khi trạng thái thay đổi, cấu trúc UI tự động cập nhật được tạo trực tiếp bằng đối tượng Proxy, trải nghiệm bên trong các framework như React.

🧠 Hiểu hoàn toàn throttle vs debounce

Tự tay triển khai các kỹ thuật kiểm soát sự kiện [[CODE_1]]throttle[[/CODE_2]] và [[CODE_2]]debounce[[/CODE_2]] để tối ưu hóa hiệu suất, và học bằng thực hành khi nào, tại sao cần sử dụng chúng.

🧩 Thiết kế cấu trúc SPA dựa trên sự kiện DOM

Trong môi trường SPA, chúng ta sẽ tìm hiểu cấu trúc thông qua việc tạo ra các dự án mini thực tế để hiểu cách state, event và rendering được kết nối với nhau.

🧩 Chúng tôi xử lý những nhiệm vụ như thế này

Mission A – Nhiệm vụ phản hồi đầu vào thời gian thực
Mục tiêu thực hành: Triển khai UX phản ứng ngay lập tức một cách trực quan theo giá trị đầu vào của người dùng.
Tóm tắt nội dung: Sử dụng các sự kiện input, blur, focus để kiểm tra giá trị đầu vào, nếu không hợp lệ thì hiển thị viền đỏ và thông báo lỗi, nếu hợp lệ thì chuyển thành viền xanh lá. Học cấu trúc cải thiện trải nghiệm người dùng thông qua phản hồi thời gian thực.

Mission B – Nhiệm vụ xóa danh sách thông qua ủy quyền sự kiện
Mục tiêu thực hành: Học cấu trúc áp dụng sự kiện hiệu quả cho các phần tử động.
Tóm tắt nội dung:

    chỉ đăng ký một listener duy nhất, sau đó xác định vị trí của button được click thông qua event.targetclosest() để chỉ xóa item tương ứng. Thực hành chiến lược ủy quyền sự kiện có thể duy trì listener ngay cả khi render lặp lại.

    Mission C – Nhiệm vụ tối ưu hóa hiệu suất
    Mục tiêu thực hành: Triển khai cấu trúc tự động cập nhật màn hình theo sự thay đổi của đối tượng trạng thái
    Tóm tắt nội dung: Sử dụng Proxy để phát hiện giá trị của đối tượng trạng thái, và khi giá trị này thay đổi thì tự động cập nhật display.textContent. Tạo ra màn hình phản ứng động mà không cần hàm render lại và học nguyên lý cốt lõi của SPA.

    Mission D – Nhiệm vụ cấu trúc SPA liên kết trạng thái
    Mục tiêu thực hành: Kết hợp trạng thái và ủy quyền sự kiện để quản lý danh sách động một cách ổn định
    Tóm tắt nội dung: Render danh sách theo trạng thái todos được quản lý bằng Proxy, và khi nhấn nút hoàn thành, chỉ cần thay đổi trạng thái là màn hình sẽ tự động phản ứng. Thông qua ủy quyền sự kiện, các mục được tạo động cũng có thể được kiểm soát mà không gặp vấn đề gì.

    Mission E – Nhiệm vụ theo dõi luồng sự kiện và gỡ lỗi
    Mục tiêu thực hành: Duy trì hiệu suất thông qua kiểm soát thông lượng xử lý các sự kiện nặng
    Tóm tắt nội dung: Áp dụng các hàm throttledebounce cho các sự kiện thường xuyên như scroll, mousemove, input để giảm số lần xử lý không cần thiết và tối thiểu hóa tải cho trình duyệt. Học các chiến lược tối ưu hóa thực tế xem xét đồng thời UX và hiệu suất.

Những lưu ý trước khi học

Tài liệu học tập

  • Tất cả các bài giảng đều được cung cấp kèm theo PDF tóm tắt, file code thực hành, bài tập và nhiệm vụ thử thách.

  • Mỗi tài liệu được cấu trúc theo từng bước phù hợp với dòng chảy bài giảng, giúp việc ôn tập và thực hành đều hiệu quả.

Kiến thức tiên quyết và lưu ý

  • Nếu bạn đã biết cấu trúc cơ bản HTML/CSScú pháp cơ bản JavaScript thì có thể theo dõi một cách suôn sẻ.

  • Đặc biệt, tốt nhất là bạn nên biết về addEventListener, if/else, forEach, và cách truy cập đối tượng.

  • Mac/Windows đều có thể học được, chỉ cần có trình duyệt web là có thể thực hành mà không cần cài đặt gì thêm.

  • Khuyến nghị sử dụng trình duyệt Chrome mới nhất.

  • (Tùy chọn) Phần 1: Hoàn thành khóa học các khái niệm cơ bản về cấu trúc DOM và API

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên sơ-trung cấp muốn hiểu cấu trúc luồng sự kiện DOM

  • Lập trình viên Front-end muốn tự tay thiết kế UI có nhiều tương tác thời gian thực.

  • Học viên gặp khó khăn về ủy quyền sự kiện, phát hiện mục tiêu, liên kết trạng thái.

  • Người muốn tạo hệ thống sự kiện hiệu quả bằng JavaScript.

  • Người có mục tiêu triển khai UI thực tế như ô tìm kiếm, checklist, phát hiện lỗi real-time, v.v.

  • Nhà phát triển trải qua tắc nghẽn hiệu suất do sự kiện bị chạy lặp lại.

  • Người muốn điều khiển trạng thái UI bằng JS thuần mà không dùng framework.

  • Những ai muốn tìm hiểu cách hoạt động nội bộ của cấu trúc Proxy và SPA.

  • Designer/Planner muốn hiểu cấu trúc phản hồi form real-time và render tự động

  • Nhà phát triển nhóm muốn cải thiện mã xử lý sự kiện DOM trùng lặp.

Cần biết trước khi bắt đầu?

  • HTML/CSS: Cơ bản về các thẻ và cấu trúc DOM

  • Ngữ pháp cơ bản JavaScript

  • querySelector và kinh nghiệm chọn/thao tác các phần tử DOM

  • (Tùy chọn) Part 1: Hoàn tất kiến thức cơ bản về cấu trúc DOM và API

Xin chào
Đây là

147

Học viên

6

Đánh giá

4.3

Xếp hạng

9

Các khóa học

안녕하세요, 우리동네코딩 스튜디오에 오신 것을 환영합니다!

우리동네코딩 스튜디오는 카네기 멜론, 워싱턴, 토론토, 워터루 등 북미의 주요 대학에서 컴퓨터공학을 전공하고, Google, Microsoft, Meta 등 글로벌 IT 기업에서 실무 경험을 쌓은 개발자들이 함께 만든 교육 그룹입니다.

처음에는 미국과 캐나다의 컴퓨터공학 전공자들끼리 함께 공부하며 성장하고자 만든 스터디 모임에서 시작되었습니다. 각기 다른 대학, 다른 시간대에 있었지만 함께 문제를 해결하고 서로에게 배운 그 시간은 매우 특별했고, 자연스럽게 이런 생각이 들었습니다.

“우리가 공부하던 이 방식, 그대로 다른 사람에게도 전하면 어떨까?”

그 물음이 바로 우리동네코딩 스튜디오의 출발점이었습니다.

현재는 약 30명의 현직 개발자와 컴퓨터공학 전공 대학생들이 각자의 전문 분야를 맡아, 입문부터 실전까지 아우르는 커리큘럼을 직접 설계하고 강의합니다. 단순한 지식 전달을 넘어, 진짜 개발자의 시선으로 배우고 함께 성장할 수 있는 환경을 제공합니다.

“진짜 개발자는, 진짜 개발자에게 배워야 합니다.”

저희는 웹 개발의 전 과정을 처음부터 끝까지 체계적으로 다루되, 이론에 머무르지 않고 실습과 실전 중심의 피드백을 통해 실력을 키워드립니다.
수강생 한 사람, 한 사람의 성장을 함께 고민하고 이끌어가는 것이 우리의 철학입니다.

🎯 우리의 철학은 분명합니다.
"진정한 배움은 실천에서 오고, 성장은 함께할 때 완성된다."

개발을 처음 시작하는 입문자부터, 실무 능력을 키우고 싶은 취업 준비생, 진로를 탐색 중인 청소년까지.
우리동네코딩 스튜디오는 모두의 출발점이자, 함께 걷는 든든한 동반자가 되고자 합니다.

이제, 혼자 고민하지 마세요.
우리동네코딩 스튜디오가 여러분의 성장을 함께하겠습니다.


Welcome to Neighborhood Coding Studio!

Neighborhood Coding Studio was founded by a team of developers who studied computer science at top North American universities such as Carnegie Mellon, the University of Washington, the University of Toronto, and the University of Waterloo, and went on to gain hands-on experience at global tech companies like Google, Microsoft, and Meta.

It all began as a study group formed by computer science students across the U.S. and Canada, created to grow together by sharing knowledge, solving problems, and learning from one another.
Though we were attending different schools in different time zones, the experience was so meaningful that it led us to one simple thought:

“What if we shared this way of learning with others?”

That thought became the foundation of Neighborhood Coding Studio.

Today, we are a team of around 30 active developers and computer science students, each taking responsibility for their area of expertise—designing and delivering a curriculum that spans from foundational knowledge to real-world development.
We’re not just here to teach—we’re here to help you see through the lens of real developers and grow together.

“To become a real developer, you must learn from real developers.”

Our courses take you through the entire web development journey—from start to finish—focused on hands-on practice, real-world projects, and practical feedback.
We care deeply about each learner’s growth and are committed to supporting your path every step of the way.

🎯 Our philosophy is simple but powerful:
"True learning comes from doing, and true growth happens together."

Whether you're just getting started, preparing for your first job, or exploring your future in tech,
Neighborhood Coding Studio is here to be your launchpad—and your trusted companion on the journey.

You don’t have to do it alone.
Let Neighborhood Coding Studio walk with you toward your future in development.

Chương trình giảng dạy

Tất cả

59 bài giảng ∙ (3giờ 11phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

835.769 ₫

Khóa học khác của nhcodingstudio

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!