[KH73] COMBO EVONDEV.COM - 5 KHOÁ 99K
🔖THÔNG TIN KHÓA HỌC
🎯️Khóa 1: Khoá học tự học thiết kế website HTML CSS hiệu quả dành cho người mới
Nội dung khóa học này
️🏆🏆Chương 1: Kiến thức HTML cần nắm vững️🏆🏆
📚 Bài 1: Giới thiệu khoá học03:27
📚 Bài 2: Thiết lập code editor cơ bản08:01
📚 Bài 3: Cấu trúc một file HTML cơ bản như thế nào?03:39
📚 Bài 4: Các thẻ HTML cơ bản nên biết (phần 1)08:36
📚 Bài 5: Các thẻ HTML cơ bản nên biết (phần 2)07:25
📚 Bài 6: Thẻ Inline và thẻ Block khác nhau như thế nào?06:00
📚 Bài 7: Sự khác nhau giữa Class và Id06:35
📚 Bài 8: BEM là gì ? Tìm hiểu về BEM toàn tập07:49
📚 Bài 9: Thực hành phân tích giao diện cơ bản với BEM07:56
📚 Bài 10: Bài tập chương 101:29
📚 Bài 11: Giải bài tập chương 109:13
📚 Bài 12: Nắm vững Emmet cơ bản trong VSCode09:28
️🏆🏆Chương 2: Kiến thức CSS cơ bản phần 1️🏆🏆
📚 Bài 13: CSS reset là gì ? Tại sao phải dùng reset CSS?04:14
📚 Bài 14: Cấu trúc của 1 đoạn code trong CSS như thế nào?03:43
📚 Bài 15: Tìm hiểu thuộc tính color, các giá trị về màu sắc cần nắm vững04:25
📚 Bài 16: Nắm vững kiến thức về kích thước trong CSS07:18
📚 Bài 17: Làm hình nền với các thuộc tính về background05:27
📚 Bài 18: Các đơn vị trong css nên biết05:11
📚 Bài 19: Đơn vị em và rem khác nhau như thế nào?06:55
📚 Bài 20: Thuộc tính về border cơ bản06:52
📚 Bài 21: Nắm rõ thuộc tính margin09:54
📚 Bài 22: Hiểu về thuộc tính padding06:25
📚 Bài 23: Tìm hiểu về box-sizing trong CSS07:39
📚 Bài 24: Tìm hiểu thuộc tính display04:18
📚 Bài 25: Các thuộc tính liên quan tới Font cơ bản05:43
📚 Bài 26: Các thuộc tính liên quan tới chữ bạn cần biết08:58
📚 Bài 27: Tìm hiểu thuộc tính cho hình ảnh06:03
📚 Bài 28: Pseudo là gì ? Các pseudo cơ bản người mới học nên biết02:56
📚 Bài 29: Bài tập chương 2 (Phần 1)06:15
📚 Bài 30: Bài tập chương 2 (phần 2)06:03
️🏆🏆Chương 3: Kiến thức CSS cơ bản phần 2️🏆🏆
📚 Bài 31: Cách làm hình nền gradient, chữ gradient trong CSS07:01
📚 Bài 32: Hiển thị 2 hình nền với background-image03:53
📚 Bài 33: caniuse là gì ? Và tại sao bạn nên biết04:10
📚 Bài 34: Sự khác nhau giữa 3 thuộc tính opacity: 0, display:none, visibility:hidden03:24
📚 Bài 35: Tìm hiểu về shadow trong CSS06:29
📚 Bài 36: Sử dụng biến trong CSS như thế nào?04:38
📚 Bài 37: Hiểu rõ về độ ưu tiên trong CSS, xác định độ ưu tiên trong CSS đơn giản với VSCode09:20
📚 Bài 38: Nắm vững kiến thức về child selectors06:30
📚 Bài 39: Nắm vững kiến thức về type selectors06:41
📚 Bài 40: Thành thạo combinators trong CSS04:02
📚 Bài 41: Tìm hiểu thêm các selectors nâng cao06:16
📚 Bài 42: Nắm vững thuộc tính transition cơ bản07:31
📚 Bài 43: Bài tập chương 315:20
️🏆🏆Chương 4: Kiến thức CSS nâng cao️🏆🏆
📚 Bài 44: Thuộc tính transform để làm gì ? Tìm hiểu các giá trị hay dùng của transform11:52
📚 Bài 45: Tìm hiểu thuộc tính position relative04:16
📚 Bài 46: Master thuộc tính position absolute12:07
📚 Bài 47: Hiểu rõ position fixed hoạt động06:21
📚 Bài 48: Thực hành với thuộc tính position #104:33
📚 Bài 49: Thực hành với thuộc tính position #203:45
📚 Bài 50: Thực hành với thuộc tính position #302:52
📚 Bài 51: Thực hành với thuộc tính position #405:29
📚 Bài 52: Hiểu và nắm tốt pseudo :before vs :after khó nhằn trong CSS03:28
📚 Bài 53: Thực hành với pseudo before và after #104:55
📚 Bài 54: Thực hành với pseudo before và after #204:39
📚 Bài 55: Thực hành với pseudo before và after #306:51
📚 Bài 56: Thực hành với pseudo before và after #407:10
📚 Bài 57: Tại sao before và after quan trong và lưu ý khi làm với việc với thuộc tính transform04:01
📚 Bài 58: Animation là gì ? Tìm hiểu và nắm kiến thức về animation cơ bản09:05
📚 Bài 59: Thực hành với animation #106:49
📚 Bài 60: Thực hành với animation #207:50
️🏆🏆Chương 5: Flexbox toàn tập️🏆🏆
📚 Bài 61: Flexbox là gì ? Giới thiệu về Flexbox01:49
📚 Bài 62: Flexbox toàn tập #113:06
📚 Bài 63: Flexbox toàn tập #205:05
📚 Bài 64: Flexbox toàn tập #308:53
📚 Bài 65: Các thủ thuật chia layout hay mà bạn nên biết khi dùng flexbox12:33
📚 Bài 66: Cách vẽ tam giác bằng CSS và cách nó hoạt động05:51
📚 Bài 67: Sass là gì ? Giới thiệu và cài đặt03:33
📚 Bài 68: Tìm hiểu và nắm cơ bản kiến thức về Sass cho người mới15:44
📚 Bài 69: Các lỗi hay gặp khi cài đặt Sass và cách khắc phục02:08
📚 Bài 70: Thực hành code giao diện Dropdown #110:37
📚 Bài 71: Thực hành code giao diện Dropdown #210:23
📚 Bài 72: Thực hành code giao diện Dropdown #310:11
📚 Bài 73: Thực hành code giao diện đơn giản số 1 với flexbox #110:36
📚 Bài 74: Thực hành code giao diện đơn giản số 1 với flexbox #207:51
📚 Bài 75: Thực hành code giao diện đơn giản số 1 với flexbox #305:31
📚 Bài 76: Responsive là gì ? Giới thiệu về Responsive toàn tập07:23
📚 Bài 77: Thực hành code giao diện đơn giản số 1 sử dụng responsive10:05
📚 Bài 78: Thực hành code giao diện đơn giản số 213:49
📚 Bài 79: Thực hành code giao diện đơn giản số 313:21
📚 Bài 80: Tìm hiểu thêm các thuộc tính khác của flexbox12:10
📚 Bài 81: Thực hành code giao diện nâng cao phần 109:06
📚 Bài 82: Thực hành code giao diện nâng cao phần 210:48
📚 Bài 83: Thực hành code giao diện nâng cao phần 312:42
📚 Bài 84: Thực hành code giao diện nâng cao phần cuối12:35
️🏆🏆Chương 6: Các thẻ HTML về Form, Table️🏆🏆
📚 Bài 85: Tìm hiểu các thẻ về Form phần 112:27
📚 Bài 86: Tìm hiểu các thẻ về Form phần 208:49
📚 Bài 87: Hướng dẫn cách làm custom checkbox09:22
📚 Bài 88: Hướng dẫn cách làm custom radio10:07
📚 Bài 89: Hướng dẫn cách làm custom input file05:22
📚 Bài 90: Hướng dẫn cách làm custom checkbox toggle08:49
📚 Bài 91: Hướng dẫn code hiệu ứng cho input, textarea, button12:08
📚 Bài 92: Thực hành code giao diện form tổng hợp phần 111:22
📚 Bài 93: Thực hành code giao diện form tổng hợp phần 211:02
📚 Bài 94: Thực hành code giao diện form tổng hợp phần 313:42
📚 Bài 95: Thực hành code giao diện form tổng hợp phần cuối13:55
📚 Bài 96: Tìm hiểu các thẻ về bảng04:11
📚 Bài 97: Hướng dẫn code giao diện bảng phần 112:35
📚 Bài 98: Hướng dẫn code giao diện bảng phần 211:18
📚 Bài 99: Hướng dẫn làm responsive cho bảng04:27
️🏆🏆Chương 7: Các kiến thức bổ sung️🏆🏆
📚 Bài 100: Tìm thiết kế ở đâu để tập luyện kỹ năng HTML CSS ?03:42
📚 Bài 101: Chia sẻ các từ tiếng Anh hay gặp khi đặt tên với BEM
📚 Bài 102: Code siêu nhanh với VSCode Custom Snippets11:33
📚 Bài 103: Làm sao cải thiện con mắt thẩm mỹ02:53
📚 Bài 104: Một số kênh youtube hay về HTML CSS02:55
📚 Bài 105: Một số tài khoản Instagram hay mà các bạn nên theo dõi02:52
📚 Bài 106: Các extensions bổ ích mà bạn nên dùng03:30
📚 Bài 107: Chia sẻ kinh nghiệm làm sao code tốt hơn06:15
📚 Bài 108: Các thuật ngữ trong ngành web mà bạn nên biết05:35
📚 Bài 109: Codepen là gì ? Và vì sao bạn nên biết04:28
📚 Bài 110: Các kỹ năng khác nên có cho một Developer04:00
📚 Bài 111: Tìm hiểu thêm vài kiến thức về CSS khác06:00
📚 Bài 112: Làm sao để tuỳ biến giao diện cho Wordpress với CSS cơ bản05:39
📚 Bài 113: Vẽ vời với sức mạnh của thuộc tính box-shadow08:45
📚 Bài 114: Hướng dẫn làm hình nền chéo với transform skew06:31
📚 Bài 115: Xử lý hình nền phức tạp hơn với thuộc tính clip-path10:13
📚 Bài 116: Tìm hiểu cách làm gradient cho border05:23
📚 Bài 117: Phân tích một Animation đường tròn hoạt động12:56
📚 Bài 118: Tìm hiểu backdrop-filter và cách làm responsive cho video theo tỉ lệ 16:912:19
📚 Bài 119: Lời cám ơn, chia sẻ cuối khoá, spoil sản phẩm sắp tới cực chất03:34
📚 Bài 120: CSS Grid cơ bản phần 109:40
📚 Bài 121: CSS Grid cơ bản phần 209:21
📚 Bài 122: CSS Grid cơ bản phần 310:41
📚 Bài 123: CSS Grid cơ bản phần 405:37
📚 Bài 124: CSS Grid cơ bản phần 506:38
📚 Bài 125: CSS Grid cơ bản phần 608:28
📚 Bài 126: CSS Grid cơ bản phần 711:44
📚 Bài 127: Hướng dẫn làm responsive hình ảnh, video theo tỉ lệ12:30
📚 Bài 128: Sử dụng biến hiệu quả trong CSS06:23
📚 Bài 129: Hướng dẫn tạo custom checkbox cách 208:09
📚 Bài 130: Xử lý input autofill background với box-shadow03:26
📚 Bài 131: Hướng dẫn tạo ribbon với thuộc tính clip-path06:16
📚 Bài 132: Hướng dẫn tuỳ biến thanh scrollbar trong CSS04:49
📚 Bài 133: Hiểu cơ bản về đường dẫn trong code04:10
📚 Bài 134: Các lỗi người mới hay gặp cần để ý06:12
📚 Bài 135: Hướng dẫn chia Form layout với CSS Grid cực hay10:13
📚 Bài 136: Các tips tricks hay trong CSS mà bạn nên biết
🎯️Khóa 2: Khoá học hướng dẫn cắt PSD sang HTML toàn tập với Gulp Pug Sass
Nội dung khóa học này
️🏆🏆Chương 1: Giới thiệu và cài đặt các công cụ️🏆🏆
📚 Bài 1: Lời cám ơn, hướng dẫn và giới thiệu khoá học05:30
📚 Bài 2: Các khái niệm cơ bản03:27
📚 Bài 3: Cài đặt Gulp boilerplate02:57
📚 Bài 4: Tìm hiểu cơ bản về Gulp boilerplate04:23
📚 Bài 5: Tìm hiểu file layout trong Pug04:29
📚 Bài 6: Xử lý các lỗi hay gặp khi làm việc với Pug07:11
📚 Bài 7: Kiến thức cơ bản về Pug cho người mới03:56
📚 Bài 8: Mixins trong Pug07:43
📚 Bài 9: Biến trong Pug03:41
📚 Bài 10: Điều kiện trong Pug05:11
📚 Bài 11: Tìm hiểu cấu trúc thư mục styles của Sass05:15
📚 Bài 12: Tạm kết chương 101:13
️🏆🏆Chương 2: Phân tích tổng quan thiết kế️🏆🏆
📚 Bài 13: Giới thiệu chương 201:30
📚 Bài 14: Phân tích màu sắc05:46
📚 Bài 15: Phân tích kiểu chữ05:59
📚 Bài 16: Phân tích khoảng cách04:30
📚 Bài 17: Thiết lập code cơ bản ban đầu04:46
📚 Bài 18: Hướng dẫn cắt ảnh trong Photoshop08:44
📚 Bài 19: Tạm kết chương 202:01
️🏆🏆Chương 3: Phân tích và code block Header️🏆🏆
📚 Bài 20: Phân tích tổng quan Header04:47
📚 Bài 21: Code block header cơ bản07:15
📚 Bài 22: Code block header top phần 105:15
📚 Bài 23: Code block header top phần 206:32
📚 Bài 24: Code block header top phần 305:39
📚 Bài 25: Code block header content phần 107:09
📚 Bài 26: Code block header content phần 207:04
📚 Bài 27: Code block header content phần 311:55
📚 Bài 28: Responsive block header phần 108:05
📚 Bài 29: Responsive block header phần 208:22
📚 Bài 30: Responsive block header phần 309:34
📚 Bài 31: Responsive block header phần 407:00
📚 Bài 32: Responsive block header phần 503:52
📚 Bài 33: Tối ưu menu trên màn hình điện thoại03:50
📚 Bài 34: Tối ưu code Pug với mixin09:06
📚 Bài 35: Viết mixin size với Sass07:42
📚 Bài 36: Viết mixin absolute center với Sass07:41
️🏆🏆Chương 4: Phân tích và code block About️🏆🏆
📚 Bài 37: Phân tích tổng quan block About05:27
📚 Bài 38: Code block box với mixin07:52
📚 Bài 39: Hoàn thành block Box06:51
📚 Bài 40: Code HTML block About phần 105:48
📚 Bài 41: Code HTML block About phần 203:59
📚 Bài 42: Code Sass block About phần 107:22
📚 Bài 43: Code Sass block About phần 204:21
📚 Bài 44: Hướng dẫn viết mixin responsive và mixin flexbox10:04
📚 Bài 45: Làm responsive block About07:51
📚 Bài 46: Áp dụng CSS Scroll snap vào layout07:06
📚 Bài 47: Tối ưu code Pug thành mixin09:03
📚 Bài 48: Tối ưu code block About08:27
️🏆🏆Chương 5: Phân tích và code block Number️🏆🏆
📚 Bài 49: Code block number phần 108:19
📚 Bài 50: Code block number phần 209:25
️🏆🏆Chương 6: Phân tích và code block Service️🏆🏆
📚 Bài 51: Phân tích và code HTML05:26
📚 Bài 52: Code giao diện với Sass phần 108:28
📚 Bài 53: Code giao diện với Sass phần 206:54
📚 Bài 54: Code Responsive phần 106:20
📚 Bài 55: Code Responsive phần 206:38
📚 Bài 56: Tối ưu code cho block Service04:55
️🏆🏆Chương 7: Phân tích và code block Device️🏆🏆
📚 Bài 57: Code block device phần 110:43
📚 Bài 58: Code block device phần 207:00
️🏆🏆Chương 8: Phân tích và code block Wedo️🏆🏆
📚 Bài 59: Phân tích và code HTML07:46
📚 Bài 60: Code Sass phần 108:06
📚 Bài 61: Code Sass phần 206:16
📚 Bài 62: Code Sass phần 307:39
📚 Bài 63: Code Sass phần 406:50
📚 Bài 64: Code Sass phần 507:33
️🏆🏆Chương 9: Phân tích và code block Quote️🏆🏆
📚 Bài 65: Phân tích và code block quote phần 105:59
📚 Bài 66: Phân tích và code block quote phần 209:55
📚 Bài 67: Phân tích và code block quote phần 309:32
️🏆🏆Chương 10: Phân tích và code block Team️🏆🏆
📚 Bài 68: Phân tích và code block Team phần 109:34
📚 Bài 69: Phân tích và code block Team phần 211:50
📚 Bài 70: Phân tích và code block Team phần 309:11
📚 Bài 71: Phân tích và code block Team phần 409:33
📚 Bài 72: Phân tích và code block Team phần 510:58
📚 Bài 73: Phân tích và code block Team phần 609:54
📚 Bài 74: Phân tích và code block Brands03:12
️🏆🏆Chương 11: Phân tích và code block Work️🏆🏆
📚 Bài 75: Phân tích và code block Work phần 108:52
📚 Bài 76: Phân tích và code block Work phần 211:29
📚 Bài 77: Phân tích và code block Work phần 306:47
📚 Bài 78: Phân tích và code block Work phần 408:56
📚 Bài 79: Phân tích và code block Work phần 507:27
📚 Bài 80: Phân tích và code block Work phần 611:55
️🏆🏆Chương 12: Phân tích và code block People️🏆🏆
📚 Bài 81: Phân tích và code block People phần 107:49
📚 Bài 82: Phân tích và code block People phần 207:03
📚 Bài 83: Phân tích và code block People phần 308:30
📚 Bài 84: Phân tích và code block People phần 406:36
📚 Bài 85: Phân tích và code block People phần 505:01
️🏆🏆Chương 13: Phân tích và code block Story️🏆🏆
📚 Bài 86: Phân tích và code block Story phần 107:28
📚 Bài 87: Phân tích và code block Story phần 208:17
📚 Bài 88: Phân tích và code block Story phần 305:07
📚 Bài 89: Phân tích và code block Story phần 408:42
📚 Bài 90: Phân tích và code block Story phần 511:50
️🏆🏆Chương 14: Phân tích và code block Footer️🏆🏆
📚 Bài 91: Phân tích và code block Footer phần 109:40
📚 Bài 92: Phân tích và code block Footer phần 213:07
📚 Bài 93: Phân tích và code block Footer phần 306:25
📚 Bài 94: Phân tích và code block Footer phần 406:38
📚 Bài 95: Phân tích và code block Footer phần 510:49
📚 Bài 96: Phân tích và code block Footer phần 606:22
️🏆🏆Chương 15: Chèn thư viện slick slider️🏆🏆
📚 Bài 97: Sử dụng slick slider vào dự án phần 108:35
📚 Bài 98: Sử dụng slick slider vào dự án phần 210:52
📚 Bài 99: Sử dụng slick slider vào dự án phần 312:59
️🏆🏆Chương 16: Tối ưu code và testing️🏆🏆
📚 Bài 100: Tối ưu nội dung dự án12:46
📚 Bài 101: Testing dự án trên các trình duyệt và fix lỗi15:31
📚 Bài 102: Object là gì ? Object cho người mới03:10
📚 Bài 103: Áp dụng object vào mixin trong pug05:13
📚 Bài 104: Tìm hiểu object trong Sass03:49
📚 Bài 105: Áp dụng object vào mixin trong Sass12:45
📚 Bài 106: Tối ưu mixin hoverEffect06:38
️🏆🏆Chương 17: Git, Github và deploy dự án cho người mới️🏆🏆
📚 Bài 107: Git là gì ? Github là gì ?03:10
📚 Bài 108: Cài đặt Git và tạo tài khoản Github04:19
📚 Bài 109: Đưa dự án lên github toàn tập08:35
📚 Bài 110: Deploy dự án bằng Vercel toàn tập08:05
🎯️Khóa 3: Khoá học tự học Javascript hiệu quả và dễ dàng cho người mới
Nội dung khóa học này
️️🏆🏆Chương 1: Biến và các kiểu dữ liệu thường gặp️🏆🏆
📚 Bài 1: Lời giới thiệu, cám ơn và hướng dẫn quan trọng cần nắm05:58
📚 Bài 2: 2 cách chèn Javascript vào HTML03:14
📚 Bài 3: Tìm hiểu hàm console.log02:04
📚 Bài 4: Kiến thức về biến cần nắm04:05
📚 Bài 5: Khai báo biến với const và let04:37
📚 Bài 6: Hoisting là gì ?03:48
📚 Bài 6.5: Bổ sung kiến thức hoisting04:45
️🏆🏆Chương 2: Các kiểu dữ liệu thông dụng trong Javascript️🏆🏆
📚 Bài 7: Giới thiệu kiểu dữ liệu string03:01
📚 Bài 8: Sử dụng string cơ bản06:43
📚 Bài 9: index và length trong string cần nắm03:31
📚 Bài 10: Các phương thức trong string phần 109:22
📚 Bài 11: Các phương thức trong string phần 208:57
📚 Bài 12: Phân biệt substr và substring06:19
📚 Bài 13: Sử dụng nhiều phương thức của string cùng lúc05:55
📚 Bài 14: Tìm hiểu kiểu dữ liệu number phần 114:45
📚 Bài 15: Tìm hiểu kiểu dữ liệu number phần 210:42
📚 Bài 16: Tìm hiểu kiểu dữ liệu khác07:14
️🏆🏆Chương 3: Toán tử so sánh, coercion, câu điều kiện️🏆🏆
📚 Bài 17: Tìm hiểu hàm Number05:40
📚 Bài 18: Tìm hiểu hàm String04:16
📚 Bài 19: Tìm hiểu hàm Boolean03:25
📚 Bài 20: Type coercion là gì ?08:53
📚 Bài 21: Toán tử so sánh cơ bản03:23
📚 Bài 22: Toán tử logic cơ bản05:30
📚 Bài 23: So sánh == vs ===08:32
📚 Bài 24: Câu điều kiện cơ bản07:31
📚 Bài 25: alert, prompt và confirm08:18
📚 Bài 26: Bài tập về câu điều kiện09:32
📚 Bài 27: Tìm hiểu switch case10:05
📚 Bài 28: Ternary operator06:51
️🏆🏆Chương 4: Hàm toàn tập️🏆🏆
📚 Bài 29: Function cơ bản cho người mới10:54
📚 Bài 30: Funtion cơ bản cho người mới phần 208:37
📚 Bài 31: Funtion cơ bản cho người mới phần 305:29
📚 Bài 32: Global scope và function scope03:32
📚 Bài 33: Block scope và từ khoá var06:09
📚 Bài 34: Closure cơ bản12:10
📚 Bài 35: Closure cơ bản tiếp theo03:25
📚 Bài 36: Bài tập về function số 106:12
📚 Bài 37: Bài tập về function số 207:17
📚 Bài 38: Bài tập về function số 305:49
📚 Bài 39: Arrow function cơ bản05:42
️🏆🏆Chương 5: Các hàm về thời gian️🏆🏆
📚 Bài 40: Giới thiệu về Date object04:25
📚 Bài 41: Timestamp và epochtime04:53
📚 Bài 42: 4 cách khởi tạo Date object nên biết04:50
📚 Bài 43: Các hàm get trong Date07:19
📚 Bài 44: Các hàm set trong Date05:28
📚 Bài 45: Tìm hiểu utc trong Date02:32
📚 Bài 46: Tìm hiểu các hàm khác trong Date04:57
📚 Bài 47: Bài tập đơn giản về Date object07:16
📚 Bài 48: Tìm hiểu setTimeout và setInterval06:21
📚 Bài 49: Bài tập chương 502:28
📚 Bài 50: Giải bài tập chương 5 bài 105:51
📚 Bài 51: Giải bài tập chương 5 bài 208:34
📚 Bài 52: Giải bài tập chương 5 bài 307:11
📚 Bài 53: Giải bài tập chương 5 bài 3 phần 211:24
📚 Bài 54: Giải bài tập chương 5 bài 3 phần 305:19
️🏆🏆Chương 6: Mảng và vòng lặp cơ bản toàn tập️🏆🏆
📚 Bài 55: Giới thiệu về mảng05:46
📚 Bài 55.5: Giới thiệu về mảng bổ sung06:43
📚 Bài 56: Các phương thức trong mảng phần 105:03
📚 Bài 57: Các phương thức trong mảng phần 205:21
📚 Bài 57.5: Các phương thức trong mảng phần 2 bổ sung02:47
📚 Bài 58: Tìm hiểu phương thức slice07:20
📚 Bài 59: Tìm hiểu phương thức splice07:57
📚 Bài 60: Tìm hiểu phương thức sort10:10
📚 Bài 61: Tìm hiểu phương thức find04:45
📚 Bài 62: Tìm hiểu phương thức findIndex02:29
📚 Bài 63: Tìm hiểu phương thức sort bổ sung03:20
📚 Bài 64: Tìm hiểu phương thức map06:54
📚 Bài 65: Tìm hiểu phương thức forEach03:59
📚 Bài 66: Tìm hiểu phương thức filter05:23
📚 Bài 67: Tìm hiểu phương thức some và every05:33
📚 Bài 68: Tìm hiểu phương thức reduce06:04
📚 Bài 69: Bài tập về mảng số 109:14
📚 Bài 70: Bài tập về mảng số 208:24
📚 Bài 71: Bài tập về mảng số 305:50
📚 Bài 72: By value và by references04:16
📚 Bài 73: Cách so sánh 2 mảng cơ bản07:03
📚 Bài 74: 2 cách để sao chép mảng cần biết04:58
📚 Bài 75: 2 cách để gộp mảng cần nắm03:42
📚 Bài 76: Destructuring là gì ?04:06
📚 Bài 77: Tìm hiểu rest parameter03:32
📚 Bài 78: Vòng lặp for cơ bản phần 107:16
📚 Bài 79: Vòng lặp for cơ bản phần 208:46
📚 Bài 80: Vòng lặp for cơ bản phần 305:52
📚 Bài 81: Vòng lặp for cơ bản phần 405:32
📚 Bài 82: Bài tập cơ bản về vòng lặp for08:06
📚 Bài 83: Vòng lặp while và do while09:32
📚 Bài 84: Vòng lặp for of04:02
📚 Bài 85: Bài tập chương 6 số 1 và 206:44
📚 Bài 86: Bài tập chương 6 số 306:30
📚 Bài 87: Bài tập chương 6 số 408:04
📚 Bài 88: Bài tập chương 6 số 506:26
📚 Bài 89: Bài tập chương 6 số 607:16
📚 Bài 90: Bài tập chương 6 số 709:00
️🏆🏆Chương 7: Object cơ bản cho người mới️🏆🏆
📚 Bài 91: Tìm hiểu object cơ bản phần 104:50
📚 Bài 92: Tìm hiểu object cơ bản phần 208:24
📚 Bài 93: Tìm hiểu for in trong object03:53
📚 Bài 94: Tìm hiểu phương thức Object.keys02:09
📚 Bài 95: Tìm hiểu phương thức Object.values01:31
📚 Bài 96: Tìm hiểu phương thức Object.entries02:30
📚 Bài 97: Tìm hiểu phương thức Object.assign02:50
📚 Bài 98: Tìm hiểu phương thức Object.freeze02:44
📚 Bài 99: Tìm hiểu phương thức Object.seal02:17
📚 Bài 100: Cách sao chép một object02:39
📚 Bài 101: Cách sao chép một object phức tạp06:50
📚 Bài 102: Từ khoá this trong object03:27
📚 Bài 103: Optional chaining06:57
📚 Bài 104: Destructuring object10:03
📚 Bài 105: Bài tập chương 7 số 105:22
📚 Bài 106: Bài tập chương 7 số 208:11
📚 Bài 107: Bài tập chương 7 số 307:13
📚 Bài 108: Bài tập chương 7 số 407:14
️🏆🏆Chương 8: DOM toàn tập️🏆🏆
📚 Bài 109: DOM là gì ?02:27
📚 Bài 110: document.querySelector05:19
📚 Bài 111: document.querySelectorAll05:08
📚 Bài 112: document.getElementsByClassName05:03
📚 Bài 113: document.getElementsByTagName02:26
📚 Bài 114: document.getElementById03:43
📚 Bài 115: getAttribute07:34
📚 Bài 116: setAttribute04:50
📚 Bài 117: removeAttribute02:20
📚 Bài 118: hasAttribute02:04
📚 Bài 119: Thuộc tính textContent03:45
📚 Bài 120: Thuộc tính innerText02:51
📚 Bài 121: Thuộc tính innerHTML02:54
📚 Bài 122: Các phương thức về class phần 106:53
📚 Bài 123: Các phương thức về class phần 206:46
📚 Bài 124: Ví dụ toggle menu đơn giản với toggle class05:40
📚 Bài 125: document.createElement và document.appendChild03:57
📚 Bài 126: Thực hành phương thức document.appendChild06:46
📚 Bài 127: document.createTextNode02:14
📚 Bài 128: Phương thức cloneNode03:10
📚 Bài 129: Phương thức hasChildNodes02:15
📚 Bài 130: Phương thức insertAdjacentText04:23
📚 Bài 131: Phương thức insertAdjacentElement02:41
📚 Bài 132: Phương thức insertAdjacentHTML04:09
📚 Bài 133: Traversing DOM phần 105:47
📚 Bài 134: Traversing DOM phần 210:15
📚 Bài 135: Traversing DOM phần 304:09
📚 Bài 136: Bài tập Active Modal phần 107:23
📚 Bài 137: Bài tập Active Modal phần 210:26
📚 Bài 138: Bài tập Notification phần 107:25
📚 Bài 139: Bài tập Notification phần 209:34
📚 Bài 140: Các thuộc tính liên quan tới offset05:56
📚 Bài 141: Các thuộc tính liên quan tới client03:46
📚 Bài 142: Các thuộc tính liên quan tới window03:38
📚 Bài 143: Tìm hiểu getBoundingClientRect()04:08
📚 Bài 144: Sự khác nhau giữa NodeList và HTMLCollection05:39
📚 Bài 145: Sự khác nhau giữa parentNode và parentElement03:19
📚 Bài 146: Tìm hiểu document.title và document.head04:58
📚 Bài 147: Tìm hiểu thêm phương thức insertBefore05:46
📚 Bài 148: Tìm hiểu thêm phương thức replaceChild05:59
️🏆🏆Chương 9: Tất tần tật về sự kiện trong Javascript️🏆🏆
📚 Bài 149: Giới thiệu04:11
📚 Bài 150: Sự kiện click04:51
📚 Bài 151: Bubbling trong click05:10
📚 Bài 152: Capturing trong click05:30
📚 Bài 153: Sự khác nhau giữa target và currentTarget04:15
📚 Bài 154: preventDefault() để làm gì ?03:03
📚 Bài 155: Bài tập Random background color08:54
📚 Bài 156: Bài tập Counter09:22
📚 Bài 157: Tìm hiểu object style03:59
📚 Bài 158: Truy xuất giá trị của custom attribute như nào?05:45
📚 Bài 159: Bài tập Toggle menu phần 105:55
📚 Bài 160: Bài tập Toggle menu phần 208:26
📚 Bài 161: Bài tập Tab phần 106:43
📚 Bài 162: Bài tập Tab phần 206:38
📚 Bài 163: Bài tập Tab phần 304:05
📚 Bài 164: Bài tập Accordion phần 107:27
📚 Bài 165: Bài tập Accordion phần 208:42
📚 Bài 166: Bài tập Accordion phần 302:19
📚 Bài 167: Bài tập Modal phần 106:11
📚 Bài 168: Bài tập Modal phần 208:03
📚 Bài 169: Bài tập Lightbox phần 106:24
📚 Bài 170: Bài tập Lightbox phần 206:17
📚 Bài 171: Bài tập Lightbox phần 306:17
📚 Bài 172: Bài tập Lightbox phần 404:05
📚 Bài 173: Bài tập Lightbox phần 504:53
📚 Bài 174: Bài tập Dropdown phần 108:01
📚 Bài 175: Bài tập Dropdown phần 206:10
📚 Bài 176: Sự khác nhau giữa load và DOMContentLoaded06:17
📚 Bài 177: Sự kiện di chuyển chuột cần nắm06:06
📚 Bài 178: Sự khác nhau giữa clientXY và pageXY06:07
📚 Bài 179: Bài tập Tooltip phần 104:59
📚 Bài 180: Bài tập Tooltip phần 208:51
📚 Bài 181: Bài tập Tooltip phần 306:56
📚 Bài 182: Bài tập Tooltip phần 402:39
📚 Bài 183: Bài tập Link hover effect phần 108:34
📚 Bài 184: Bài tập Link hover effect phần 203:46
📚 Bài 185: Bài tập Image Zoom hover effect phần 108:02
📚 Bài 186: Bài tập Image Zoom hover effect phần 208:05
📚 Bài 187: Bài tập Image Zoom hover effect phần 307:39
📚 Bài 188: Bài tập Image Zoom hover effect phần 406:17
📚 Bài 189: Bài tập Image Zoom hover effect phần 504:08
📚 Bài 190: Sự kiện keydown07:53
📚 Bài 191: Sự kiện keyup06:30
📚 Bài 192: Sự kiện keypress05:52
📚 Bài 193: Sự kiện change05:07
📚 Bài 194: Sự kiện focus và blur02:19
📚 Bài 195: Sự kiện submit trong form05:36
📚 Bài 196: Truy xuất các giá trị trong cơ bản08:51
📚 Bài 197: Truy xuất giá trị của checkboxes như thế nào?04:04
📚 Bài 198: Ví dụ về Form Validation cơ bản09:17
📚 Bài 199: Bài tập Show hide password đơn giản09:40
📚 Bài 200: Bài tập Highlight search text phần 104:23
📚 Bài 201: Bài tập Highlight search text phần 207:31
📚 Bài 202: Bài tập Highlight search text phần 307:57
📚 Bài 203: Bài tập Highlight search text phần 404:32
📚 Bài 204: Bài tập Highlight search text phần 508:06
📚 Bài 205: Giới thiệu sự kiện scroll02:46
📚 Bài 206: Debounce là gì?06:23
📚 Bài 207: window.pageXOffset và window.pageYOffset03:57
📚 Bài 208: Các phương thức, thuộc tính về scroll khác06:28
📚 Bài 209: offsetWidth và scrollWidth03:58
📚 Bài 210: scrollIntoView()02:32
📚 Bài 211: Bài tập Fixed Header phần 106:50
📚 Bài 212: Bài tập Fixed Header phần 206:14
📚 Bài 213: Bài tập Progress Bar phần 108:33
📚 Bài 214: Bài tập Progress Bar phần 204:13
📚 Bài 215: Bài tập Tab Scroll phần 107:08
📚 Bài 216: Bài tập Tab Scroll phần 206:38
📚 Bài 217: Bài tập Tab Scroll nâng cao phần 107:06
📚 Bài 218: Bài tập Tab Scroll nâng cao phần 206:16
📚 Bài 219: Bài tập Tab Scroll nâng cao phần 307:46
📚 Bài 220: Bài tập Tab Scroll nâng cao phần 407:32
📚 Bài 221: Bài tập Tab Scroll nâng cao phần 506:58
📚 Bài 222: localStorage toàn tập06:36
📚 Bài 223: Bài tập todoList phần 107:41
📚 Bài 224: Bài tập todoList phần 206:30
📚 Bài 225: Bài tập todoList phần 306:52
📚 Bài 226: Bài tập todoList phần 408:03
📚 Bài 227: Bài tập todoList phần 503:33
📚 Bài 228: Bài tập Sweet Alert phần 107:26
📚 Bài 229: Bài tập Sweet Alert phần 205:29
️🏆🏆Chương 10: Regular expression cơ bản️🏆🏆
📚 Bài 230: Giới thiệu Regular expression04:32
📚 Bài 231: Anchor04:13
📚 Bài 232: Ranges06:37
📚 Bài 233: Meta characters09:12
📚 Bài 234: Quantifiers08:15
📚 Bài 235: Quantifiers tiếp theo06:29
📚 Bài 236: Group03:01
📚 Bài 237: Boundaries và escaping characters05:34
📚 Bài 238: Sử dụng phương thức replace với Regex05:59
📚 Bài 239: Bài tập email validation phần 105:52
📚 Bài 240: Bài tập email validation phần 206:23
📚 Bài 241: Bài tập email validation phần 306:41
📚 Bài 242: Bài tập password validation phần 105:26
📚 Bài 243: Bài tập password validation phần 207:36
📚 Bài 244: Bài tập password validation phần 309:08
📚 Bài 245: Bài tập password validation phần 406:24
️🏆🏆Chương11: Kiến thức bổ sung và tạm kết phần 1️🏆🏆
📚 Bài 246: Tìm hiểu defer trong script07:22
📚 Bài 247: Tìm hiểu async trong script03:41
📚 Bài 248: Tìm hiểu removeEventListener05:16
📚 Bài 249: Sự khác nhau giữa onclick và addEventListener06:48
📚 Bài 250: Bài tập Animate on scroll phần 106:39
📚 Bài 251: Bài tập Animate on scroll phần 205:33
📚 Bài 252: Bài tập Countdown timer phần 108:12
📚 Bài 253: Bài tập Countdown timer phần 206:37
📚 Bài 254: Bài tập Countdown timer phần 306:33
📚 Bài 255: Bài tập Countdown timer phần 407:39
📚 Bài 256: Bài tập Simple slider phần 104:49
📚 Bài 257: Bài tập Simple slider phần 206:09
📚 Bài 258: Bài tập Simple slider phần 306:28
📚 Bài 259: Bài tập Simple slider phần 404:57
📚 Bài 260: Bài tập Simple slider phần 507:16
📚 Bài 261: Bài tập Simple slider phần 608:42
📚 Bài 262: Bài tập MP3 player phần 105:55
📚 Bài 263: Bài tập MP3 player phần 206:04
📚 Bài 264: Bài tập MP3 player phần 307:18
📚 Bài 265: Bài tập MP3 player phần 405:29
📚 Bài 266: Bài tập MP3 player phần 509:30
📚 Bài 267: Bài tập MP3 player phần 608:36
📚 Bài 268: Bài tập MP3 player phần 706:16
📚 Bài 269: Bài tập MP3 player phần 806:35
📚 Bài 270: Bài tập Memory game phần 108:15
📚 Bài 271: Bài tập Memory game phần 207:38
📚 Bài 272: Bài tập Memory game phần 306:39
📚 Bài 273: Bài tập Memory game phần 405:24
📚 Bài 274: Bài tập Memory game phần 508:08
📚 Bài 275: Bài tập Memory game phần 607:48
📚 Bài 276: Bài tập Memory game phần 708:15
📚 Bài 277: Tạm kết phần 1 và bật mí phần 203:47
️🏆🏆Chương 12: Các kiến thức khác cần biết️🏆🏆
📚 Bài 278: Các kiến thức hay khác cần biết08:18
📚 Bài 279: arguments trong function04:54
📚 Bài 280: Câu hỏi phỏng vấn về closure06:11
📚 Bài 281: Sự khác nhau giữa localStorage và sessionStorage02:12
📚 Bài 282: Cách sử dụng arrow function hiệu quả05:31
📚 Bài 283: Đệ quy là gì ?04:13
📚 Bài 284: Bài tập đệ quy phần 107:40
📚 Bài 285: Bài tập đệ quy phần 204:28
📚 Bài 286: Tìm hiểu object Set08:26
📚 Bài 287: Tìm hiểu cách debug trong VSCode02:44
📚 Bài 288: Location trong BOM04:35
📚 Bài 289: Location trong BOM tiếp theo04:33
📚 Bài 290: History trong BOM02:41
📚 Bài 291: Navigator trong BOM03:06
️🏆🏆Chương 13: Prototype & constructor function️🏆🏆
📚 Bài 292: constructor function là gì ?07:11
📚 Bài 293: Prototype là cái gì ?09:05
📚 Bài 294: Tìm hiểu Bind phần 104:25
📚 Bài 295: Tìm hiểu Bind phần 204:11
📚 Bài 296: Sự khác nhau giữa call và apply06:17
📚 Bài 297: Refactor bài tập Simple Slider với Prototype07:46
️🏆🏆Chương 14: Class️🏆🏆
📚 Bài 298: Giới thiệu class04:42
📚 Bài 299: setter và getter05:50
📚 Bài 300: class expression05:14
📚 Bài 301: static method là gì ?07:10
📚 Bài 302: static property là gì ?04:42
📚 Bài 303: Tìm hiểu super và extends06:16
📚 Bài 304: Bài tập TodoList phần 104:13
📚 Bài 305: Bài tập TodoList phần 208:26
📚 Bài 306: Bài tập TodoList phần 306:18
📚 Bài 307: Bài tập TodoList phần 407:16
📚 Bài 308: Bài tập TodoList phần 505:56
📚 Bài 309: Bài tập TodoList phần 605:40
📚 Bài 310: Bài tập TodoList phần 707:07
📚 Bài 311: Bài tập TodoList phần 805:53
📚 Bài 312: Bài tập TodoList phần 903:02
️🏆🏆Chương 15: Kiến thức về bất đồng bộ️🏆🏆
📚 Bài 313: Global execution context08:20
📚 Bài 314: Function execution context05:28
📚 Bài 315: Callstack06:50
📚 Bài 316: Tìm hiểu event loop phần 106:15
📚 Bài 317: Tìm hiểu event loop phần 210:22
📚 Bài 318: Callback hell là gì?05:13
📚 Bài 319: Promise phần 106:24
📚 Bài 320: Promise phần 207:57
📚 Bài 321: Promise phần 303:41
📚 Bài 322: Promise phần 405:23
📚 Bài 323: Promise phần 507:58
📚 Bài 324: Promise phần 607:21
📚 Bài 325: try catch04:36
📚 Bài 326: Async await phần 108:01
📚 Bài 327: Async await phần 204:42
📚 Bài 328: Async await phần 307:08
️🏆🏆Chương 16: API toàn tập️🏆🏆
📚 Bài 329: API là gì ?03:27
📚 Bài 330: Ví dụ đơn giản với API phần 106:05
📚 Bài 331: Ví dụ đơn giản với API phần 206:40
📚 Bài 332: Bài tập API DadJoke phần 111:35
📚 Bài 333: Bài tập API DadJoke phần 210:01
📚 Bài 334: Bài tập API Picsum Photos phần 110:15
📚 Bài 335: Bài tập API Picsum Photos phần 206:49
📚 Bài 336: Bài tập API Picsum Photos phần 309:36
📚 Bài 337: Cors là gì ?07:45
📚 Bài 338: Các trạng thái hay gặp khi gọi API02:20
📚 Bài 339: Các phương thức hay dùng nên biết02:26
📚 Bài 340: Giới thiệu Json Server phần 108:06
📚 Bài 341: Giới thiệu Json Server phần 208:30
📚 Bài 342: Thực hành bài tập khóa học với Json Server phần 108:44
📚 Bài 343: Thực hành bài tập khóa học với Json Server phần 209:18
📚 Bài 344: Thực hành bài tập khóa học với Json Server phần 310:08
📚 Bài 345: Thực hành bài tập khóa học với Json Server phần 409:44
📚 Bài 346: Thực hành bài tập khóa học với Json Server phần 510:58
📚 Bài 347: Thực hành bài tập khóa học với Json Server phần 608:11
📚 Bài 348: Thực hành bài tập khóa học với Json Server phần 707:19
📚 Bài 349: Thực hành bài tập khóa học với Json Server phần 807:31
📚 Bài 350: Thực hành bài tập khóa học với Json Server phần 906:25
📚 Bài 351: Thực hành bài tập khóa học với Json Server phần 1008:00
📚 Bài 352: Thực hành bài tập khóa học với Json Server phần 1110:39
️🏆🏆Chương 17: Thuật toán cơ bản️🏆🏆
📚 Bài 353: Thuật toán là gì ?01:18
📚 Bài 354: Tìm hiểu BigO Notation05:01
📚 Bài 355: Thuật toán tìm kiếm và sắp xếp01:11
📚 Bài 356: Thuật toán Bubble Sort phần 110:10
📚 Bài 357: Thuật toán Bubble Sort phần 205:55
📚 Bài 358: Thuật toán Insertion Sort phần 103:28
📚 Bài 359: Thuật toán Insertion Sort phần 210:18
📚 Bài 360: Thuật toán Selection Sort phần 104:03
📚 Bài 361: Thuật toán Selection Sort phần 208:34
📚 Bài 362: Thuật toán Quick Sort phần 106:51
📚 Bài 363: Thuật toán Quick Sort phần 207:44
📚 Bài 364: Thuật toán Linear Search phần 103:28
📚 Bài 365: Thuật toán Binary Search phần 106:27
📚 Bài 366: Thuật toán Binary Search phần 210:24
📚 Bài 367: Thuật toán Interpolation Search05:07
📚 Bài 368: Bài tập Array Replace03:58
📚 Bài 369: Bài tập Palindrome05:38
📚 Bài 370: Bài tập Array Chunking08:01
📚 Bài 371: Bài tập Array Reverse06:39
️🏆🏆Chương cuối: Kiến thức bổ sung️🏆🏆
📚 Bài 372: Tìm hiểu Javascript Modules07:51
📚 Bài 373: Cài đặt extension Thunder Client02:22
📚 Bài 375: Học gì tiếp theo sau khi hoàn thành khóa học này00:55
📚 Bài 376: Lời cám ơn chân thành01:04
📚 Bài 377: Vẫn chưa hết
📚 Bài 378: Tìm hiểu phương thức get trong axios11:25
📚 Bài 379: Tìm hiểu phương thức post trong axios06:03
📚 Bài 380: Tìm hiểu phương thức put và patch trong axios05:18
📚 Bài 381: Tìm hiểu phương thức delete trong axios01:49
📚 Bài 382: Tìm hiểu phương thức all trong axios03:26
📚 Bài 383: Tìm hiểu Intersection Observer cơ bản24:21
🎯️Khóa 4: Khoá học ReactJS cơ bản đến nâng cao dành cho người mới bắt đầu
Nội dung khóa học này
️🏆🏆Chương 1: Giới thiệu khóa học️🏆🏆
📚 Intro (Rất quan trọng)06:21
📚 Cài đặt vscode extensions và settings03:05
📚 Cài đặt NodeJS và Git scm01:58
📚 Cài đặt react dev tools và redux dev tools01:31
📚 Cách đạt hiệu quả cao khi học khóa học05:18
📚 Giới thiệu outline khóa học03:46
️🏆🏆Chương 2: React cơ bản️🏆🏆
📚 Bài 1: Giới thiệu chương 201:17
📚 Bài 2: ReactJS là gì ?
📚 Bài 3: Tìm hiểu Create React App02:20
📚 Bài 4: Cài đặt CRA02:49
📚 Bài 5: JSX là gì ?04:20
📚 Bài 6: Tìm hiểu JSX phần 111:28
📚 Bài 7: Tìm hiểu JSX phần 210:26
📚 Bài 8: Tìm hiểu JSX phần cuối03:22
📚 Bài 9: Components là gì ?06:15
📚 Bài 10: Props là gì ?09:18
📚 Bài 11: Thực hành với Props cơ bản05:22
📚 Bài 12: Tìm hiểu 2 cách styles cơ bản trong React09:40
📚 Bài 13: Rendering list phần 108:11
📚 Bài 14: Rendering list phần 208:24
📚 Bài 15: Rendering list phần 308:09
📚 Bài 16: Refactor code04:46
📚 Bài 17: Tìm hiểu props children06:38
📚 Bài 18: Recap chương 2
️🏆🏆Chương 3: Tìm hiểu react hook useState️🏆🏆
📚 Bài 19: Giới thiệu chương 300:42
📚 Bài 20: State là gì ?01:06
📚 Bài 21: stateless và stateful functional components03:55
📚 Bài 22: Tìm hiểu useState cơ bản phần 108:54
📚 Bài 23: Tìm hiểu useState cơ bản phần 209:42
📚 Bài 24: Tìm hiểu useState cơ bản phần 308:12
📚 Bài 25: Tìm hiểu useState cơ bản phần 405:41
📚 Bài 26: Những nguyên tắc khi sử dụng hook cần nắm02:15
📚 Bài 27: Stale state là gì ?06:10
📚 Bài 28: Thực hành game Tictactoe phần 108:13
📚 Bài 29: Thực hành game Tictactoe phần 209:18
📚 Bài 30: Thực hành game Tictactoe phần 310:38
📚 Bài 31: Thực hành game Tictactoe phần 410:02
📚 Bài 32: Thực hành game Tictactoe phần 509:40
📚 Bài 33: Xử lý state phức tạp như thế nào ?08:22
📚 Bài 34: Tìm hiểu useReducer phần 108:30
📚 Bài 35: Tìm hiểu useReducer phần 208:16
📚 Bài 36: Tìm hiểu useReducer phần 311:15
📚 Bài 37: React cập nhật state như thế nào ?03:22
📚 Bài 38: Recap chương 3
️🏆🏆Chương 4: Styling trong React️🏆🏆
📚 Bài 39: Giới thiệu chương 4
📚 Bài 40: Cài đặt và sử dụng Sass cơ bản08:37
📚 Bài 41: Tìm hiểu CSS Module06:37
📚 Bài 42: Cài đặt thư viện styled-components02:23
📚 Bài 43: Phân tích giao diện Card component07:29
📚 Bài 44: Sử dụng styled-components phần 108:38
📚 Bài 45: Sử dụng styled-components phần 209:29
📚 Bài 46: Sử dụng styled-components phần 308:07
📚 Bài 47: Tìm hiểu props trong styled-components11:07
📚 Bài 48: Cách tạo Global styles trong styled-components08:27
📚 Bài 49: Tìm hiểu một cách sử dụng styled-components khác09:09
📚 Bài 50: So sánh 2 cách dùng của styled-components06:18
📚 Bài 51: Tìm hiểu Theme trong styled-components06:12
📚 Bài 52: Giới thiệu và cài đặt tailwindcss05:54
📚 Bài 52.1: Cập nhật CRA và TailwindCSS version 3(quan trọng)06:18
📚 Bài 52.2: Hướng dẫn sửa lỗi TailwindCSS không tạo ra class04:23
📚 Bài 52.3: Lưu ý quan trọng phải xem03:35
📚 Bài 53: Sử dụng tailwindcss phần 108:33
📚 Bài 54: Cài đặt jitmode trong tailwindcss07:45
📚 Bài 55: Sử dụng tailwindcss phần 211:02
📚 Bài 56: Xử lý props trong tailwindcss như thế nào06:38
📚 Bài 57: Recap chương 4
️🏆🏆Chương 5: Tìm hiểu React hook useEffect️🏆🏆
📚 Bài 58: Giới thiệu chương 503:26
📚 Bài 59: Cách dùng useEffect cơ bản05:05
📚 Bài 60: Thực hành với API Picsum photos sử dụng useEffect phần 107:36
📚 Bài 61: Thực hành với API Picsum photos sử dụng useEffect phần 205:08
📚 Bài 62: Thực hành với API Picsum photos sử dụng useEffect phần 308:06
📚 Bài 63: Thực hành với API Picsum photos sử dụng useEffect phần 408:59
📚 Bài 64: Thực hành với API Picsum photos sử dụng useEffect phần 508:42
📚 Bài 65: Refactor code sang async function03:34
📚 Bài 66: Tìm hiểu dependency trong useEffect phần 108:35
📚 Bài 67: Tìm hiểu dependency trong useEffect phần 204:09
📚 Bài 68: Tìm hiểu dependency trong useEffect phần 304:00
📚 Bài 69: Tìm hiểu cleanup function trong useEffect08:28
📚 Bài 70: Sử dụng event listener trong useEffect như thế nào ?08:49
📚 Bài 71: Tối ưu bài tập API Picsum Photos07:16
📚 Bài 72: Bài tập HackerNews API phần 108:28
📚 Bài 73: Bài tập HackerNews API phần 205:33
📚 Bài 74: Bài tập HackerNews API phần 306:02
📚 Bài 75: Bài tập HackerNews API phần 408:52
📚 Bài 76: Tối ưu giao diện HackerNews API06:56
📚 Bài 77: Bài tập HackerNews API - Fetching dữ liệu với button11:05
📚 Bài 78: Bài tập HackerNews API - Sử dụng useReducer phần 106:34
📚 Bài 79: Bài tập HackerNews API - Sử dụng useReducer phần 206:14
📚 Bài 80: Bài tập HackerNews API - Sử dụng useReducer phần cuối08:01
📚 Bài 81: Recap chương 5
️🏆🏆Chương 6: ref và custom hooks️🏆🏆
📚 Bài 82: Giới thiệu chương 601:58
📚 Bài 83: Tìm hiểu về ref cơ bản03:19
📚 Bài 84: Sự khác nhau giữa hook useRef và hook useState04:53
📚 Bài 85: Bài tập đồng hồ bấm giờ đơn giản08:46
📚 Bài 86: Bài tập Input Auto Focus07:59
📚 Bài 87: Bài tập Textarea Resize phần 106:50
📚 Bài 88: Bài tập Textarea Resize phần 211:00
📚 Bài 89: Bài tập Dropdown phần 107:13
📚 Bài 90: Bài tập Dropdown phần 209:21
📚 Bài 91: Xử lý callback dependency trong useEffect với ref04:11
📚 Bài 92: Custom hook là gì ?02:33
📚 Bài 93: Viết custom hook useLinkNewTab phần 105:50
📚 Bài 94: Viết custom hook useLinkNewTab phần 205:10
📚 Bài 95: Viết custom hook useHover phần 108:11
📚 Bài 96: Viết custom hook useHover phần 204:50
📚 Bài 97: Xử lý unmounted component với ref phần 106:13
📚 Bài 98: Xử lý unmounted component với ref phần 202:54
📚 Bài 99: Tối ưu bài tập HackerNewsAPI với custom hook phần 105:16
📚 Bài 100: Tối ưu bài tập HackerNewsAPI với custom hook phần 206:25
📚 Bài 101: Tối ưu bài tập HackerNewsAPI với custom hook phần 306:33
📚 Bài 102: Viết custom hook useClickOutSide05:39
📚 Bài 103: Bài tập SidebarMenu phần 108:14
📚 Bài 104: Bài tập SidebarMenu phần 206:38
📚 Bài 105: Recap chương 6
️🏆🏆Chương 7: Form toàn tập️🏆🏆
📚 Bài 106: Giới thiệu chương 701:03
📚 Bài 107: Tìm hiểu Form cơ bản trong React phần 108:47
📚 Bài 108: Tìm hiểu Form cơ bản trong React phần 210:17
📚 Bài 109: Tìm hiểu Form cơ bản trong React phần 306:44
📚 Bài 110: Tìm hiểu Form cơ bản trong React phần 406:23
📚 Bài 111: Tìm hiểu Form cơ bản trong React phần 508:04
📚 Bài 112: Bài tập Movie Search App - Đăng ký API06:05
📚 Bài 113: Bài tập Movie Search App - Fetching dữ liệu05:56
📚 Bài 114: Bài tập Movie Search App - Styling giao diện10:06
📚 Bài 115: Bài tập Movie Search App - Hiển thị dữ liệu08:42
📚 Bài 116: Bài tập Movie Search App - Hiển thị dữ liệu tiếp theo04:32
📚 Bài 117: Bài tập Movie Search App - Chức năng tìm kiếm05:26
📚 Bài 118: Bài tập Movie Search App - Sử dụng kỹ thuật debounce07:38
📚 Bài 119: Bài tập Movie Search App - Giải thích hook useDebounce07:45
📚 Bài 120: Bài tập Movie Search App - Giới thiệu về loading skeleton07:18
📚 Bài 121: Bài tập Movie Search App - Thêm loading skeleton07:30
📚 Bài 122: Setup giao diện form cơ bản06:08
📚 Bài 123: Cài đặt và sử dụng formik vào form07:30
📚 Bài 124: Validation cơ bản với formik07:28
📚 Bài 125: Validation cơ bản với formik tiếp theo04:03
📚 Bài 126: Validation với thư viện Yup07:28
📚 Bài 127: Tối ưu source code08:59
📚 Bài 128: Bài tập SignUpForm - Phân tích và code giao diện08:00
📚 Bài 129: Bài tập SignUpForm - Chia nhỏ và tái sử dụng components09:20
📚 Bài 130: Bài tập SignUpForm - Tìm hiểu và sử dụng hook useField09:44
📚 Bài 131: Bài tập SignUpForm - Tối ưu components và validtion10:36
📚 Bài 132: Bài tập SignUpForm - Reset form và submitting10:44
📚 Bài 133: Cài đặt thư viện React Hook Form05:21
📚 Bài 134: Sử dụng React Hook Form cơ bản09:12
📚 Bài 135: Validation cơ bản09:03
📚 Bài 136: Sử dụng Yup cơ bản09:45
📚 Bài 137: Các trạng thái trong React Hook Form p111:53
📚 Bài 138: Các trạng thái trong React Hook Form p207:19
📚 Bài 139: Tìm hiểu phương thức watch08:48
📚 Bài 140: Tìm hiểu phương thức Reset06:41
📚 Bài 141: Tìm hiểu phương thức setValues và setFocus07:22
📚 Bài 142: Tìm hiểu Controller09:38
📚 Bài 143: Tìm hiểu useController06:08
📚 Bài 144: Tìm hiểu Control03:08
📚 Bài 145: Recap formik và React Hook Form(RHF)05:23
📚 Bài 146: Thực hành Register Form với RHF - Setup08:49
📚 Bài 147: Thực hành Register Form với RHF - Styling08:45
📚 Bài 148: Thực hành Register Form với RHF - Custom Input08:38
📚 Bài 149: Thực hành Register Form với RHF - Custom Radio11:03
📚 Bài 150: Thực hành Register Form với RHF - Custom Checkbox10:02
📚 Bài 151: Thực hành Register Form với RHF - Custom Dropdown phần 107:06
📚 Bài 152: Thực hành Register Form với RHF - Custom Dropdown phần 209:57
📚 Bài 153: Thực hành Register Form với RHF - Custom Dropdown phần 304:45
📚 Bài 154: Thực hành Register Form với RHF - Validation phần 110:22
📚 Bài 155: Thực hành Register Form với RHF - Validation phần 209:44
📚 Bài 156: Thực hành Register Form với RHF - Form submitting09:21
📚 Bài 157: Thực hành Register Form với RHF - Form reset phần 108:25
📚 Bài 158: Thực hành Register Form với RHF - Form reset phần 208:51
📚 Bài 159: Thực hành Register Form với Formik - Setup05:38
📚 Bài 160: Thực hành Register Form với Formik - Setup phần 207:13
📚 Bài 161: Thực hành Register Form với Formik - Validation06:47
📚 Bài 162: Thực hành Register Form với Formik - Custom Input07:34
📚 Bài 163: Thực hành Register Form với Formik - Custom Radio07:27
📚 Bài 164: Thực hành Register Form với Formik - Custom Checkbox10:59
📚 Bài 165: Thực hành Register Form với Formik - Custom Dropdown07:37
📚 Bài 166: Thực hành Register Form với Formik - Lấy giá trị từ Dropdown05:08
📚 Bài 167: Thực hành Register Form với Formik - Reset form04:01
📚 Bài 168: So sánh formik và react-hook-form05:27
️🏆🏆Chương 8: Fragments, Portal️🏆🏆
📚 Bài 169: Fragments05:04
📚 Bài 170: Vấn đề hay gặp khi làm việc với Modal05:57
📚 Bài 171: Tìm hiểu và sử dụng createPortal08:10
📚 Bài 172: Styling Modal09:24
📚 Bài 173: Thêm chức năng cho Modal06:26
📚 Bài 174: Xử lý overflow cho Dropdown với createPortal09:32
📚 Bài 175: Tooltip challenge04:04
📚 Bài 176: Giải bài tooltip phần 107:49
📚 Bài 177: Giải bài tooltip phần 204:36
📚 Bài 178: Bắt lỗi Component với react-error-boundary06:28
📚 Bài 179: Kiểm tra Props của Component với PropTypes07:35
📚 Bài 180: Tối ưu code Portal nâng cao phần 109:22
📚 Bài 181: Tối ưu code Portal nâng cao phần 208:37
📚 Bài 182: Tối ưu code Portal nâng cao phần 304:03
📚 Bài 183: Tối ưu code Portal nâng cao phần 409:55
📚 Bài 184: Tối ưu code Portal nâng cao phần 507:27
📚 Bài 185: Tối ưu component Tooltips07:18
📚 Bài 186: Tối ưu component Portal10:59
📚 Bài 187: Recap kiến thức Portal06:00
️🏆🏆Chương 9: Context và Router️🏆🏆
📚 Bài 188: Giới thiệu Context02:37
📚 Bài 189: Vấn đề thực tế03:44
📚 Bài 190: Thực hành CountContext phần 107:37
📚 Bài 191: Thực hành CountContext phần 206:37
📚 Bài 192: Thực hành AuthContext phần 108:00
📚 Bài 193: Thực hành AuthContext phần 205:48
📚 Bài 194: Thực hành GalleryContext - Setup06:30
📚 Bài 195: Thực hành GalleryContext - Styling08:42
📚 Bài 196: Thực hành GalleryContext - toggleFavorite08:55
📚 Bài 197: Thực hành GalleryContext - addToCart11:28
📚 Bài 198: Thực hành GalleryContext - removeFromCart07:31
📚 Bài 199: Thực hành GalleryContext - Display count10:18
📚 Bài 200: Thực hành Gallery Context - usehooks07:46
📚 Bài 201: Thực hành Gallery Context - localStorage10:26
📚 Bài 202: Tìm hiểu React Router cơ bản phần 109:30
📚 Bài 203: Tìm hiểu React Router cơ bản phần 208:46
📚 Bài 204: Tìm hiểu React Router cơ bản phần 305:36
📚 Bài 205: Tìm hiểu React Router cơ bản phần 412:57
️🏆🏆Chương 10: Dự án React Simple Movie️🏆🏆
📚 Bài 206: Thiết lập dự án07:50
📚 Bài 207: Code giao diện menu và banner15:03
📚 Bài 208: Code giao diện movie card11:18
📚 Bài 209: Tìm hiểu và sử dụng thư viện Swiper, SWR13:38
📚 Bài 210: Tạo component MovieList và fetching dữ liệu12:56
📚 Bài 211: Tạo component Banner13:03
📚 Bài 212: Thiết lập Routes cho dự án10:55
📚 Bài 213: Fetching dữ liệu trang danh sách phim12:21
📚 Bài 214: Trang chi tiết phim - Fetching dữ liệu08:10
📚 Bài 215: Trang chi tiết phim - Code giao diện14:28
📚 Bài 216: Trang chi tiết phim - Fetching dữ liệu diễn viên12:08
📚 Bài 217: Trang chi tiết phim - Fetching dữ liệu trailers và similar11:55
📚 Bài 218: Thêm chức năng tìm kiếm phim08:26
📚 Bài 219: Thêm Loading08:40
📚 Bài 220: Thêm chức năng phân trang - Phân tích chức năng12:47
📚 Bài 221: Thêm chức năng phân trang - Sử dụng react-paginate08:36
📚 Bài 222: Thêm chức năng phân trang - Tối ưu giao diện07:56
📚 Bài 223: Tối ưu component Button08:02
📚 Bài 224: Tối ưu API Config12:08
📚 Bài 225: Tối ưu import path phần 113:05
📚 Bài 226: Tối ưu import path phần 207:48
📚 Bài 227: Recap lại kiến thức đã học và áp dụng03:33
📚 Bài 228: Code splitting Routes05:41
📚 Bài 229: Tối ưu source code phần 110:26
📚 Bài 230: Tối ưu source code phần 210:35
📚 Bài 231: Tối ưu source code phần 310:01
📚 Bài 232: Chức năng Load more phần 112:45
📚 Bài 233: Chức năng Load more phần 206:24
📚 Bài 234: Chúc mừng bạn đã hoàn thành dự án01:29
️🏆🏆Chương 11: Advanced React️🏆🏆
📚 Bài 235: Giới thiệu chương 1102:45
📚 Bài 236: Higher order components(hocs) phần 110:00
📚 Bài 237: Higher order components(hocs) phần 208:31
📚 Bài 238: Recap HOCs05:22
📚 Bài 239: Render props phần 110:26
📚 Bài 240: Render props phần 210:27
📚 Bài 241: Recap render props04:17
📚 Bài 242: Custom hooks06:01
📚 Bài 243: React composition(Compound Component) phần 109:53
📚 Bài 244: React composition(Compound Component) phần 211:52
📚 Bài 245: React composition(Compound Component) phần 308:39
📚 Bài 246: Prop collections10:26
📚 Bài 247: Prop getters09:21
📚 Bài 248: Control props phần 110:02
📚 Bài 249: Control props phần 210:04
📚 Bài 250: Control props phần 306:05
📚 Bài 251: State reducer phần 104:21
📚 Bài 252: State reducer phần 212:05
📚 Bài 253: State reducer phần 308:52
📚 Bài 254: Inversion of control phần 109:21
📚 Bài 255: Inversion of control phần 211:29
📚 Bài 256: Inversion of control phần 311:21
📚 Bài 257: Inversion of control phần 413:33
📚 Bài 258: Tối ưu Component re-render với useMemo, useCallback và React.memo14:28
📚 Bài 259: Recap chương 1102:32
️🏆🏆Chương 12: Firebase cơ bản️🏆🏆
📚 Bài 260: Giới thiệu và thiết lập Firebase07:29
📚 Bài 261: Thiết lập Firestore Database04:09
📚 Bài 262: Truy xuất dữ liệu Collection với getDocs10:53
📚 Bài 263: Thêm dữ liệu vào Collection với addDoc08:36
📚 Bài 264: Xóa dữ liệu trong Collection với deleteDoc06:37
📚 Bài 265: Hiển thị dữ liệu realtime với onSnapshot05:31
📚 Bài 266: Cập nhật dữ liệu với updateDoc05:44
📚 Bài 267: Truy xuất 1 Document với getDoc04:37
📚 Bài 268: Truy vấn dữ liệu nâng cao với Firestore Queries08:44
📚 Bài 269: Giới thiệu và cài đặt Firebase Authentication06:42
📚 Bài 270: Thực hiện chức năng đăng ký với Firebase Auth06:28
📚 Bài 271: Thực hiện chức năng đăng xuất với Firebase Auth05:49
📚 Bài 272: Hiển thị displayName và tự động thêm Collection vào Firestore08:45
📚 Bài 273: Thực hiện chức năng đăng nhập với Firebase Auth05:24
️🏆🏆Chương 13: Dự án Monkey Blogging️🏆🏆
📚 Bài 274: Giới thiệu chương 1309:13
📚 Bài 275: Thiết lập Firebase06:25
📚 Bài 276: Thiết lập Routes03:46
📚 Bài 277: Tạo authContext06:31
📚 Bài 278: Code giao diện trang SignUp phần 109:39
📚 Bài 279: Code giao diện trang SignUp phần 207:07
📚 Bài 280: Label component05:21
📚 Bài 281: Input component phần 111:09
📚 Bài 282: Input component phần 208:33
📚 Bài 283: Field component04:13
📚 Bài 284: Xử lý toggle password06:16
📚 Bài 285: Button component phần 113:44
📚 Bài 286: Button component phần 206:32
📚 Bài 287: Xử lý Form Validation cho trang SignUp phần 108:41
📚 Bài 288: Xử lý Form Validation cho trang SignUp phần 205:45
📚 Bài 289: Hoàn thành chức năng đăng ký(SignUp Authentication)09:50
📚 Bài 290: Thêm PropTypes cho Button component08:49
📚 Bài 291: Code giao diện trang đăng nhập(SignIn)11:53
📚 Bài 292: Hoàn thành chức năng đăng nhập(SignIn Authentication)12:00
📚 Bài 293: Code giao diện block Header phần 117:38
📚 Bài 294: Code giao diện trang 40408:37
📚 Bài 295: Code giao diện block Header phần 212:01
📚 Bài 296: Code giao diện block Banner18:06
📚 Bài 297: Lưu ý về giao diện nên xem05:53
📚 Bài 298: Tạo và tối ưu PostCategory component17:03
📚 Bài 299: Tạo và tối ưu PostTitle component13:05
📚 Bài 300: Tạo và tối ưu PostMeta component06:56
📚 Bài 301: Tạo và tối ưu PostImage component09:47
📚 Bài 302: Tối ưu chức năng Toggle Password04:15
📚 Bài 303: Lưu ý về giao diện08:04
📚 Bài 304: Phân tích Database11:18
📚 Bài 305: Chức năng thêm bài viết - Tổng quan15:23
📚 Bài 306: Chức năng thêm bài viết - Upload hình ảnh14:30
📚 Bài 307: Chức năng thêm bài viết - Tối ưu giao diện Upload11:35
📚 Bài 308: Chức năng thêm bài viết - Xóa hình ảnh và tối ưu logic16:52
📚 Bài 309: Chức năng thêm bài viết - Tối ưu code Upload hình ảnh08:55
📚 Bài 310: Chức năng thêm bài viết - Thêm toggle bài viết nổi bật06:38
📚 Bài 311: Chức năng thêm bài viết - Truy vấn danh mục(category)10:20
📚 Bài 312: Chức năng thêm bài viết - Chọn danh mục từ Dropdown14:23
📚 Bài 313: Tối ưu code chức năng thêm bài viết12:36
📚 Bài 314: Tối ưu code chức năng thêm bài viết tiếp theo11:27
📚 Bài 315: Truy xuất và hiển thị bài viết nổi bật18:24
📚 Bài 316: Tối ưu SignUp component12:02
📚 Bài 317: Tối ưu code18:49
📚 Bài 318: Hiển thị thời gian của bài viết04:47
📚 Bài 319: Lưu ý về giao diện tiếp theo04:54
📚 Bài 320: Chức năng thêm Danh mục phần 107:07
📚 Bài 321: Chức năng thêm Danh mục phần 212:36
📚 Bài 322: Hiển thị danh sách Danh mục12:41
📚 Bài 323: Chức năng xóa Danh mục08:31
📚 Bài 324: Chức năng cập nhật Danh mục phần 106:00
📚 Bài 325: Chức năng cập nhật Danh mục phần 211:23
📚 Bài 326: Chức năng tìm kiếm Danh mục phần 110:38
📚 Bài 327: Chức năng tìm kiếm Danh mục phần 207:28
📚 Bài 328: Chức năng tải thêm Danh mục phần 115:35
📚 Bài 329: Chức năng tải thêm Danh mục phần 209:06
📚 Bài 330: Hiển thị danh sách User15:59
📚 Bài 331: Tối ưu cấu trúc dữ liệu của User15:47
📚 Bài 332: Chức năng thêm User phần 116:31
📚 Bài 333: Chức năng thêm User phần 216:07
📚 Bài 334: Chức năng xóa User13:20
📚 Bài 335: Chức năng cập nhật thông tin User17:03
📚 Bài 336: Tối ưu chức năng xóa hình ảnh phần 116:07
📚 Bài 337: Tối ưu chức năng xóa hình ảnh phần 204:51
📚 Bài 338: Tối ưu cấu trúc dữ liệu bài viết phần 117:58
📚 Bài 339: Tối ưu cấu trúc dữ liệu bài viết phần 209:27
📚 Bài 340: Hiển thị danh sách bài viết12:53
📚 Bài 341: Chức năng xóa bài viết10:15
📚 Bài 342: Chức năng tìm kiếm, tải thêm bài viết08:36
📚 Bài 343: Chức năng cập nhật bài viết phần 115:40
📚 Bài 344: Chức năng cập nhật bài viết phần 220:30
📚 Bài 345: Chức năng cập nhật bài viết phần 309:26
📚 Bài 346: Chức năng cập nhật bài viết phần 409:41
📚 Bài 347: Chức năng cập nhật bài viết phần 508:15
📚 Bài 348: Hiển thị thông tin tác giả bài viết14:24
📚 Bài 349: Hiển thị bài viết liên quan phần 117:34
📚 Bài 350: Hiển thị bài viết liên quan phần 218:54
📚 Bài 351: Tối ưu thông tin user authentication12:18
📚 Bài 352: Tối ưu source code phần 121:57
📚 Bài 353: Tối ưu source code phần 204:45
️🏆🏆Chương 14: Redux toàn tập️🏆🏆
📚 Bài 354: Giới thiệu về Redux06:15
📚 Bài 355: Cài đặt Create React App Redux04:44
📚 Bài 356: Ví dụ đơn giản với component Counter09:50
📚 Bài 357: Sử dụng Redux core cho component Counter23:09
📚 Bài 358: Sử dụng Redux toolkit cho component Counter19:20
📚 Bài 359: Thực hành bài tập Toggle DarkMode phần 125:32
📚 Bài 360: Thực hành bài tập Toggle DarkMode phần 206:48
📚 Bài 361: Thực hành bài tập Toggle Sidebar08:11
📚 Bài 362: Tìm hiểu Redux Middleware cơ bản16:06
📚 Bài 363: Giới thiệu và cài đặt Redux Saga09:01
📚 Bài 364: Tìm hiểu Generator Function cơ bản13:28
📚 Bài 365: Thực hành call API HackerNews với Redux Saga phần 126:12
📚 Bài 366: Thực hành call API HackerNews với Redux Saga phần 213:56
📚 Bài 367: Thực hành call API HackerNews với Redux Saga phần 313:09
📚 Bài 368: Thực hành call API HackerNews với Redux Saga phần 414:38
📚 Bài 369: Tìm hiểu extraReducers09:47
📚 Bài 370: Tìm hiểu Redux-thunk cơ bản25:26
️🏆🏆Chương 15: Dự án cuối khóa CrowFunding️🏆🏆
📚 Bài 371: Giới thiệu dự án09:14
📚 Bài 372: Thiết lập styling và cấu trúc thư mục15:58
📚 Bài 373: Code trang SignUp phần 121:47
📚 Bài 374: Code trang SignUp phần 226:59
📚 Bài 375: Code trang SignUp phần 319:46
📚 Bài 376: Code trang SignUp phần 422:18
📚 Bài 377: Code trang SignUp phần 518:21
📚 Bài 378: Code trang SignUp phần 625:26
📚 Bài 379: Code trang SignIn13:32
📚 Bài 380: Tối ưu hiển thị className08:39
📚 Bài 381: Code giao diện Dashboard - Topbar22:05
📚 Bài 382: Code giao diện Dashboard - Sidebar29:28