Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Understanding Node.js: Core Concepts

Hiểu về Node.js: Những Khái Niệm Cốt Lõi

Hiểu về Node.js: Những Khái Niệm Cốt Lõi

Hiểu về Node.js mà không cần bất kỳ gói NPM nào khác. Nâng tầm kỹ năng kỹ sư back-end của bạn!

4.7
(1,859 đánh giá)
12,187 học viên
Giảng viên
Joseph Heidari
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
99.000đ 1.809.000đ -95%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
77.0 giờ video
250 bài giảng
1 bài quiz
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 07/06/2026

Bạn sẽ học được gì

Học những khái niệm quan trọng trong kỹ thuật back-end
Đạt đến trình độ có thể dễ dàng học các framework và thư viện NodeJS khác nhau
Thực sự hiểu sâu NodeJS là gì và khám phá toàn bộ tiềm năng của nó, vượt xa việc chỉ tạo máy chủ web
Hiểu và thành thạo NodeJS thuần túy mà không cần dùng bất kỳ gói NPM nào khác
Hiểu những khái niệm hệ điều hành quan trọng mà mọi lập trình viên back-end cần biết
Có khả năng dễ dàng học và hiểu tài liệu chính thức của NodeJS
Học cách làm việc trực tiếp với dữ liệu nhị phân và thao tác các bit 0 và 1 theo ý muốn
Học các khái niệm Mạng quan trọng nhất và hiểu chính xác vai trò của NodeJS
Hiểu chính xác điều gì xảy ra khi triển khai ứng dụng back-end, thay vì chỉ tập trung vào một vài công cụ
Học cách tạo ứng dụng mạng cấp thấp trực tiếp trên TCP hoặc UDP và phát triển giao thức riêng
Hiểu sâu HTTP thực sự là gì và cách thức hoạt động của nó
Hiểu sâu về Hệ thống Tập tin
Thành thạo Streams để phát triển ứng dụng hiệu suất cao, tiết kiệm bộ nhớ, xử lý dễ dàng hàng terabyte dữ liệu
Học cách tích hợp nén để tăng tốc ứng dụng mạng
Hiểu về Unix và mở ra thế giới khả năng mới
Hiểu đối tượng EventEmitter
Thành thạo Đa luồng trong NodeJS & đạt được cải thiện hiệu suất đáng kể
Tìm hiểu các công cụ mã hóa tiên tiến mà chính phủ và các công ty hàng đầu sử dụng để bảo vệ dữ liệu tối mật và người dùng trực tuyến

Yêu cầu

Ít nhất một năm kinh nghiệm lập trình
Kiến thức tốt về JavaScript
Không bắt buộc, nhưng có một chút kinh nghiệm với ExpressJS và HTML sẽ hữu ích
Không yêu cầu nghiêm ngặt, nhưng với phần Đa luồng, khuyến nghị sử dụng máy có CPU ít nhất 4 nhân
Với phần Mã hóa, cần một chút kiến thức toán rời rạc cơ bản; thông tin thêm trong video giới thiệu phần này

Đối tượng phù hợp

Dành cho các lập trình viên cảm thấy mệt mỏi khi nhảy từ framework này sang framework khác, mệt mỏi học nhiều mẫu thiết kế vô dụng, muốn nâng cao kỹ năng và đạt đến trình độ đột phá
Lập trình viên tự học chưa tập trung vào các khái niệm khoa học máy tính
Lập trình viên NodeJS vẫn cảm thấy chưa thực sự hiểu NodeJS dù đã sử dụng nhiều năm
Lập trình viên back-end mong muốn đưa mọi thứ lên tầm cao mới và dẫn dắt sự thay đổi trong ngành, thay vì chạy theo xu hướng
Lập trình viên muốn hiểu mọi thứ ở mức độ sâu hơn nhiều
Sinh viên khoa học máy tính háo hức áp dụng kiến thức học thuật vào thực tế
Lập trình viên mới bắt đầu và trung cấp muốn học cách đưa ra quyết định sáng suốt và hiệu quả hơn trong hành trình học tập nhiều năm tới

Nội dung khóa học

13 phần • 232 bài giảng
1 Tổng quan khóa học
2 Thiết lập môi trường - Chỉ dành cho người dùng Windows
3 Thiết lập môi trường - Chỉ dành cho người dùng Mac
4 Thiết lập môi trường - Chỉ dành cho người dùng Linux
5 Giới thiệu về Dòng lệnh
6 Học về NVM & các phiên bản Node.js
7 Bên trong Node.js
1 Hiểu về EventEmitter
1 Giới thiệu
2 Hiểu về Số nhị phân
3 Hiểu về Số thập lục phân
4 Sử dụng Máy tính lập trình
5 Hiểu về Mã hóa ký tự
6 Khái niệm về Buffers
7 Buffers trong thực tế
8 Cấp phát Buffers cực lớn
9 Cách cấp phát Buffers nhanh nhất
10 Đọc tài liệu Node.js
11 Kết thúc phần
1 Giới thiệu
2 Tập tin chính xác là gì?
3 Cách Node.js xử lý tập tin
4 Ba cách khác nhau để làm cùng một việc
5 Điểm bắt đầu xây dựng ứng dụng của chúng ta
6 Theo dõi tập tin lệnh để phát hiện thay đổi
7 Đọc nội dung của tập tin lệnh
8 Tối ưu mã nguồn bằng EventEmitter
9 Xử lý dữ liệu đọc được
10 Triển khai lệnh Tạo tập tin
11 Định nghĩa các lệnh còn lại
12 Giải pháp - Triển khai hàm deleteFile
13 Giải pháp - Triển khai hàm renameFile
14 Giải pháp - Triển khai hàm addToFile
15 Kết thúc phần
1 Giới thiệu
2 Đo điểm chuẩn: Ghi một triệu lần vào tập tin
3 Sử dụng Streams một cách đơn giản trong giải pháp của chúng ta
4 Vậy chính xác Streams là gì?
5 Hiểu các loại Streams khác nhau
6 Sửa lỗi về bộ nhớ trong chương trình của chúng ta
7 Đọc tài liệu Node.js về Writable Streams và Tóm tắt
8 Readable Streams trong thực tế
9 Ghi dữ liệu có chọn lọc từ Readable Stream
10 Hiểu vấn đề phân tách dữ liệu
11 Triển khai giải pháp và xử lý vấn đề phân tách
12 Đọc tài liệu Node.js và Tóm tắt
13 Xây dựng giải pháp Streaming của riêng chúng ta bằng Buffers
14 Hiểu về Piping
15 Triển khai Writable Stream của riêng chúng ta
16 Triển khai Readable Stream của riêng chúng ta
17 Hiểu về Duplex và Transform Streams
18 Tạo ứng dụng Mã hóa/Giải mã
19 Ghi chú cuối cùng
1 Giới thiệu
2 Hiểu về Địa chỉ MAC và Switches
3 Hiểu về Routers và cách Internet hoạt động
4 Hiểu về các Tầng mạng
5 Mẹo nhanh về Lọc trong Wireshark
6 Tạo ứng dụng TCP đơn giản trong Node.js
7 Hiểu về Tầng Giao vận - TCP/UDP
8 Kịch bản mạng trong thực tế
9 Hiểu về Số cổng
10 Điểm bắt đầu xây dựng Ứng dụng chat
11 Tạo Ứng dụng chat PHẦN 1
12 Tạo Ứng dụng chat PHẦN 2
13 Cải thiện giao diện ứng dụng chat
14 Nhận diện người dùng trong ứng dụng chat
15 Thông báo cho mọi người khi có người tham gia/rời khỏi chat
16 Lưu ý về sự kiện 'end' trên Windows
17 Một số ghi chú cuối về ứng dụng chat
18 Triển khai ứng dụng chat lên AWS
19 Các lệnh dùng để cài đặt NVM
20 Hiểu về Địa chỉ IPv4
21 Hiểu về DNS
22 Hiểu về Địa chỉ IPv6
23 Điểm bắt đầu xây dựng Ứng dụng tải lên
24 Tạo Ứng dụng tải lên
25 Xử lý Backpressure trong ứng dụng tải lên
26 Lấy tên tập tin động trong ứng dụng tải lên
27 Hiển thị tiến trình tải lên trong ứng dụng
28 Triển khai ứng dụng tải lên
29 Cảnh báo chi phí AWS - Nhắc nhở tắt máy chủ
30 Hiểu về UDP và module Dgram
31 Kết thúc phần
1 Giới thiệu
2 Ý tưởng về HTTP
3 Tạo máy chủ HTTP đơn giản trong Node
4 Hiểu về Thông điệp HTTP, Yêu cầu & Phản hồi
5 Hiểu về các Loại kết nối
6 Xây dựng Client và gửi Yêu cầu
7 Gửi Phản hồi cho Client
8 Học Postman & Kiểm thử máy chủ với nó
9 Đọc một số tài liệu
10 Gửi Yêu cầu HTTP trực tiếp trên TCP! PHẦN 1
11 Gửi Yêu cầu HTTP trực tiếp trên TCP! PHẦN 2
12 Mô phỏng máy chủ HTTP bằng module Net
13 Hiểu về Loại phương tiện (MIME Types)
14 Hiểu về các Phương thức HTTP
15 Hiểu về mã trạng thái HTTP
16 Tạo máy chủ Web đơn giản trong Node
17 Phục vụ tập tin CSS và JavaScript
18 Thêm một số route JSON
19 Thêm route tải lên tập tin
20 Tạo framework Mini-Express của riêng chúng ta!
21 Làm cho framework của chúng ta mạnh mẽ hơn
22 Chuẩn bị cho Dự án tiếp theo
23 Sử dụng Framework để tạo ứng dụng Web
24 Thêm route Đăng nhập
25 Hiểu về HTTP Proxies
26 HTTP là Không trạng thái
27 Hiểu về Cookies
28 Nhận diện người dùng cho các yêu cầu sau khi đăng nhập
29 Gửi thông tin người dùng trong Hồ sơ
30 Nâng cấp Framework với hỗ trợ Middleware
31 Định nghĩa các hàm Middleware
32 Triển khai các route Tạo bài viết, Cập nhật người dùng và Đăng xuất
33 Kết thúc phần
1 Giới thiệu
2 Unix là gì?
3 Tại sao chúng ta nên quan tâm đến Unix?
4 Thiết lập Unix trên Windows (WSL) - Chỉ dành cho người dùng Windows
5 Cái nhìn đầu tiên về module Child Process
6 Hiểu về Unix Shells
7 Giải mã Thứ tự thực thi Bash: Bí danh, Hàm, Lệnh tích hợp và Đường dẫn
8 Một vài ghi chú về Quyền truy cập tập tin Unix
9 Sourcing trong Bash
10 Hiểu về Tập tin cấu hình Shell
11 Tiến trình con chính xác là gì?
12 Hiểu về Biến môi trường
13 Hiểu về Hệ thống tập tin Unix, Đường dẫn & CWD
14 Hiểu về Stdout, Stdin và Stderr
15 Hiểu về Pipes và Chuyển hướng đầu ra trong Bash
16 Xây dựng tiện ích dòng lệnh với Node.js
17 Xây dựng Ứng dụng truyền thông lớn - Phần Node
18 Giới thiệu phần C
19 Học C - Ứng dụng đầu tiên
20 Học C - Kiểu tĩnh & Bộ nhớ của chúng ta
21 Học C - Cấp phát bộ nhớ
22 Học C - Đọc các đối số
23 Xây dựng Ứng dụng truyền thông lớn - Phần C
24 Chỉ xem nếu bạn bỏ qua phần C
25 Một cách IPC khác - Unix Domain Sockets
26 Hiểu về Clustering
27 Clustering trong thực tế
28 Cài đặt & Build FFmpeg từ mã nguồn
29 Ứng dụng chỉnh sửa video - Thiết lập & Hướng dẫn
30 Thêm route Tải lên
31 Giới thiệu nhanh về FFmpeg và tập tin video
32 Tạo ảnh thu nhỏ và lấy kích thước sau khi tải lên
33 Trả về danh sách video đã tải lên
34 Thêm route trả về tài sản video
35 Thêm route trích xuất âm thanh từ tập tin video
36 Thêm route Thay đổi kích thước
37 Lên lịch các thao tác thay đổi kích thước
38 Thêm về Xử lý dựa trên Hàng đợi
39 Tiếp tục các thao tác thay đổi kích thước đã lên lịch khi ứng dụng khởi động lại
40 Chạy ứng dụng ở chế độ Cluster
41 Tái cấu trúc từ Cpeak sang Express trong chưa đầy 20 phút!
42 Kết thúc phần
1 Giới thiệu
2 Cách thức nén không mất dữ liệu hoạt động
3 Nén có mất dữ liệu
4 Gzip, Brotli và Deflate
5 Nén dữ liệu trong HTTP
6 So sánh: Nén dữ liệu vs. Tối ưu mã nguồn
7 Triển khai tính năng nén vào ứng dụng
8 Lưu ý cuối cùng
1 Giới thiệu
2 Hướng dẫn cho Lập trình viên Đa luồng có kinh nghiệm
3 Luồng (Thread) là gì?
4 Cách theo dõi luồng trên hệ điều hành
5 Hiểu về Mức độ sử dụng CPU
6 Tạo luồng mới
7 Giao tiếp giữa các luồng qua Truyền tin nhắn
8 Giới thiệu chương trình ngốn CPU của chúng ta
9 Cải thiện hiệu suất với Đa luồng
10 Xử lý tác vụ ngốn CPU trong máy chủ HTTP
11 isMainThread
12 Ngốn CPU vs. Ngốn I/O
13 Phân tích ứng dụng đa luồng xử lý mã hóa nặng
14 Nhóm luồng (Thread Pool) trong Node.js
15 Xây dựng Nhóm luồng từ đầu
16 Sử dụng Vòng lặp sự kiện và Luồng chính
17 Giữ Luồng chính nhẹ nhàng với Xử lý theo lô
18 Mở rộng khả năng Nhóm luồng một cách dễ dàng
19 Đừng làm tắc nghẽn Nhóm luồng xử lý!
20 Xử lý hàng tỷ yêu cầu HTTP
21 Giao tiếp qua Bộ nhớ dùng chung
22 ArrayBuffers, SharedArrayBuffers và TypedArrays
23 Tranh chấp tài nguyên (Race Conditions)
24 Hiểu về Thao tác nguyên tử
25 Hiểu về Cơ chế loại trừ lẫn nhau
26 Bế tắc (Deadlocks)
27 Tăng hiệu suất qua Bộ nhớ dùng chung
28 Đa luồng gốc với Addon C/C++
29 Tìm hiểu sâu về Vòng lặp sự kiện PHẦN 1
30 Tìm hiểu sâu về Vòng lặp sự kiện PHẦN 2
31 Kết thúc
1 Giới thiệu
2 Giới thiệu Mã hóa đối xứng
3 Mã hóa không thể phá vỡ - Xây dựng OTP từ đầu
4 Cách thức hoạt động của mã hóa AES
5 Hiểu về các Chế độ AES
6 Điều gì cần để phá vỡ AES
7 Còn tấn công vét cạn OTP thì sao?
8 Lịch sử của AES
9 Hiểu về Hàm băm
10 Xây dựng SHA-256 từ đầu
11 Điều gì cần để phá vỡ SHA-256
12 Mã xác thực tin nhắn (MAC)
13 Hiểu về Hàm dẫn xuất khóa
14 Xây dựng ứng dụng mã hóa tệp tin
15 Giới thiệu Mật mã học bất đối xứng
16 Lưu ý về OpenSSL & Cài đặt
17 Tệp tổng hợp kiến thức mới
18 RSA trong thực tế
19 Hiểu về RSA
20 Triển khai RSA từ đầu
21 Hiểu về Chữ ký số
22 Chứng chỉ số
23 Xác thực thủ công chứng chỉ HTTPS
24 Thiết lập HTTPS từ đầu
25 Hiểu về TLS
26 Trao đổi khóa Diffie-Hellman và Đường cong Elliptic
27 Chữ ký số Đường cong Elliptic
28 Độ an toàn của RSA, DH và EC
29 Các tranh chấp pháp lý về Mật mã học
30 Kết thúc
1 Giới thiệu
2 Cách lưu trữ mật khẩu người dùng an toàn
3 Thêm bài giảng đang được phát triển
1 Xử lý 1 triệu yêu cầu HTTP mỗi giây

Giới thiệu khóa học

Welcome to the most comprehensive Node.js course on the internet!

In this course, we're going to do a deep dive into Node.js itself without cluttering our minds with other tools and NPM packages and truly master this powerful technology.

This course is heavily focused on computer science topics and fundamentals that are crucial to understand for becoming a great back-end engineer. You can only properly understand Node.js and unlock its full power if you understand these other computer science topics. So that's why we will also learn these other vital topics so that you can truly master Node.js and take your back-end engineering skills to a whole new level.

We will also use all these vital concepts that we'll learn in practice by building various exciting projects just using Node.js.

This is an intense course for people who want to get to the top of the field and get to a level of driving innovation and making an impact within the industry instead of just scratching the surface and following a few software trends and tools.

Each section of the course is like its own mini-course, and by completing each section, you'll learn some essential Node.js, computer science and back-end engineering concepts that will help you not just if you want to use Node.js but throughout your whole career as a software engineer. These things will stay with you for years and decades to come.


Let's do a quick walkthrough about what you will accomplish after completing some of the sections:

Understanding Buffers: Here, we will deeply understand buffers and how to work directly with binary data, which is essential for all the other sections.

Understanding File System: As a back-end developer, you'll work with files a lot, be it saving some data to disk, handling file uploads and many other examples, so it's essential to have a good understanding of them, which you'll gain after completing this section. We'll also learn how Node.js deals with files and master the "fs" module.

Understanding Streams: In this section, we're going to master Streams, which will allow us to develop highly-performant apps capable of handling terabytes of data with ease while having great memory usage. We'll build many mini-projects throughout the section, including an encryption-decryption app from scratch that could encrypt terabytes of data by directly modifying the binary data. This section lays the foundation for future sections where we'll utilize Streams heavily to create powerful and efficient network applications.

Understanding Networking: Node.js was primarily designed to create network applications, so it's of utmost importance that we gain a decent understanding of networking, which we will do after completing this section. Here's a list of items we'll learn in this section:

  • What exactly a network is

  • How the internet works

  • Mac Addresses

  • IPV4 & IPv6 Addresses

  • TCP

  • UDP

  • DNS

  • Fundamentals of deployment

We'll build 2 low-level apps using only Node.js, a chat and a file uploader app directly on top of TCP! And then, we'll deploy them to a Linux server in the most basic way without using unnecessary tools.

We'll see exactly what happens in our network card, every single 0s and 1s exchanged for a particular thing using Wireshark, and gain a much better understanding of networking and how most of the well-known protocols like HTTP, FTP, Email protocols, SSH, DNS and many others work. This section will broaden your horizons, and you'll realize that there are far more things that you can do with Node.js than just creating web servers.

Understanding HTTP: In this section, we'll utilize and combine all that we've learned from previous sections and finally deeply understand HTTP once and for all! We won't be learning how to use Express; instead, we will build something similar ourselves!

We'll start by understanding the most important HTTP concepts, such as connection types, client-server model, messages, requests, responses, HTTP Methods, status codes, mime types, necessary headers and so much more. And then emulate an HTTP protocol directly on top of TCP using the net module and see precisely every single 0s and 1s that get exchanged for an HTTP request and response interaction!

Once we understand the fundamentals of HTTP and the "http" module, we'll take things to the next level and start building our framework. And then, using our framework, we'll make a fully functional web application.

This section will take your web development skills to the next level. You'll have a much better understanding of how all these popular NPM packages, like Express, body-parser, Multer, cors, etc., that are built on top of the "http" module work. Well, you'll learn how to make them from scratch, just using them will not be that much of a problem!

Update February 2024 - New Module Is Out! Understanding Unix:

With over 15 hours of comprehensive new content, get ready to learn how you can harness the power of multiple technologies and programming languages together with Node.js to create extraordinarily powerful applications!

Unix, one of the most influential inventions ever in the software industry, is crucial for software engineers to understand. In this module, we'll delve deep into some of the key concepts such as Bash, Shells, IPC, Data Streams, Process Management, Clustering, even some C and much more.

We will also understand these Node.js modules:

  • Child Processes

  • Cluster

  • Process

  • Path

  • Console

  • OS

All these Unix concepts that you'll learn in this section instantly apply to many other programming languages. You'll gain a foundation that you can keep building on to create much higher-quality applications than ever before.

At the end of the section, we'll develop a video editing web application with Node.js without using other NPM packages. And this is just the beginning! You'll be able to do much more than this once you're done with the section and see many new possibilities that you never thought about before.

Update May 2024 - New Module Is Out! Understanding Compression:

In this section, we will explore the fascinating world of compression. Understanding compression is crucial for reducing the size of your data, and one important use case is to enhance the speed of your network applications. We'll dive into the Node.js Zlib module and see how it is possible to reduce the number of bits needed to store and transfer your data without losing any information!

Update July 2024 - New Module Is Out! Understanding Multi-Threading:

Get ready for the most advanced section of the course, where we're going to utilize the full power of Node.js to see how extreme we can get. 

We'll learn what exactly threads are and how to utilize them to achieve performance boosts up to many times, depending on how many CPU cores we have. We'll learn when we should use multi-threading and when we shouldn't. We'll learn how to set up communication channels between our threads, both with message passing and shared memory. We'll explore the Node.js thread pool and even develop one ourselves from scratch. We'll see how multi-threading differs in Node.js from some of the other languages. We'll cover synchronization, race conditions, deadlocks, semaphores, mutual exclusion and more.

You'll learn how to keep the event loop light and not end up doing operations that will mysteriously block your main thread and cause your app to be way slower.

This section will take your Node.js skills to the next level by teaching you how to run things in parallel, handle multiple event loops, and understand the complications that arise with that.

Update March & August 2025 - New Module Is Out! Understanding Cryptography:

In this section you’ll learn about one of the most fascinating topics in computer science, without which the digital world and the internet would be in absolute chaos, and almost anyone could access everything you have online or stored digitally offline.

You’ll learn about some of the same cutting-edge cryptographic tools that governments and top companies rely on to protect their top-secret data and users online. You'll learn about AES, RSA, Diffie-Hellman, Elliptic-Curve Cryptography, HTTPS, TLS, Digital Signatures, Hashing algorithms, and more!

This section will give you a strong foundation to start your journey of learning about cybersecurity. Learning cryptography is extremely important in today’s world, not only to be able to create secure software and protect your business and users, but also to help protect yourself in the digital world.

Jump right in, and let’s explore the principles and techniques that are protecting our privacy, freedom of speech, and security in today’s massive digital world.


Sign up today, and let's master Node.js and take your back-end engineering skills to a whole new level!

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Backend Development
Hiển thị tất cả khoá học Javascript
Hiển thị tất cả khoá học Node Js
Hiển thị tất cả khoá học Web Development
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊