1
00:00:03,650 --> 00:00:06,464
Trong các bài học trước đây,

2
00:00:06,464 --> 00:00:08,580
chúng ta đã học được về Node.

3
00:00:08,580 --> 00:00:13,215
Chúng ta cũng đã thấy cách Node có thể được sử dụng để thiết lập một máy chủ Web.

4
00:00:13,215 --> 00:00:20,460
Bây giờ các nhà thiết kế Node cố ý giữ nút nhỏ với một số lượng nhỏ các

5
00:00:20,460 --> 00:00:24,480
mô-đun mã để họ có thể để nó lên cho các

6
00:00:24,480 --> 00:00:29,730
nhà phát triển bên thứ ba để đưa ra các giải pháp sáng tạo cho các vấn đề.

7
00:00:29,730 --> 00:00:37,590
Vì vậy, một khi Node được phát hành một số nhà phát triển bên thứ ba bắt đầu thiết kế

8
00:00:37,590 --> 00:00:45,875
và phát hành các mô-đun bên thứ ba thú vị có thể chạy trên nền tảng Node.

9
00:00:45,875 --> 00:00:50,030
Bây giờ bạn đã thấy một số mô-đun Node có thể được

10
00:00:50,030 --> 00:00:54,185
sử dụng để phát triển front-end trong các khóa học trước đó.

11
00:00:54,185 --> 00:00:59,240
Bây giờ trong khóa học này, chúng tôi đang xem xét phát triển phía máy chủ và phía máy chủ,

12
00:00:59,240 --> 00:01:03,020
một trong những mô-đun Node bên thứ ba phổ biến nhất hoặc

13
00:01:03,020 --> 00:01:08,720
khuôn khổ để xây dựng máy chủ HTTP là Express. Chúng

14
00:01:08,720 --> 00:01:11,480
ta hãy xem xét một số chi tiết của Express trong

15
00:01:11,480 --> 00:01:14,345
bài giảng này và sau đó chúng ta sẽ sử dụng Express để

16
00:01:14,345 --> 00:01:21,725
xây dựng một máy chủ phục vụ API REST trong suốt phần còn lại của khóa học này.

17
00:01:21,725 --> 00:01:25,670
Đầu tiên, Express là gì?

18
00:01:25,670 --> 00:01:30,355
Express là một nhanh chóng, unpinionated,

19
00:01:30,355 --> 00:01:37,519
tối giản khuôn khổ chạy trên đầu trang của Node.js và hỗ trợ phát triển Web.

20
00:01:37,519 --> 00:01:42,570
Đây là định nghĩa mà tôi mượn từ expressjs.com,

21
00:01:42,570 --> 00:01:48,025
trang web nơi Express liên quan tài liệu có sẵn cho chúng tôi.

22
00:01:48,025 --> 00:01:53,769
Now Express cho phép bạn phát triển một ứng dụng Web, ứng

23
00:01:53,769 --> 00:02:02,385
dụng phía máy chủ sẽ phục vụ lên nội dung để tiêu thụ bởi front-end của chúng tôi.

24
00:02:02,385 --> 00:02:07,730
Express cung cấp một tập hợp các tính năng mạnh mẽ mà chúng tôi sẽ khám phá

25
00:02:07,730 --> 00:02:13,610
chi tiết hơn thông qua các bài học còn lại trong khóa học này.

26
00:02:13,610 --> 00:02:17,425
Thể hiện chính nó như tôi đã nói là một khuôn khổ tối giản,

27
00:02:17,425 --> 00:02:21,020
và Express cũng cung cấp một cách mở rộng và thêm

28
00:02:21,020 --> 00:02:25,465
chức năng để Express thông qua middleware của bên thứ ba.

29
00:02:25,465 --> 00:02:31,830
Điều này mở rộng chức năng của Express và thêm vào nhiều tính năng hơn theo yêu cầu.

30
00:02:31,830 --> 00:02:38,750
Vì vậy, bạn có thể xây dựng máy chủ Web của bạn bằng cách sử dụng nhiều phần mềm trung gian bên thứ ba như

31
00:02:38,750 --> 00:02:46,070
cần thiết để đáp ứng nhu cầu của máy chủ Web của bạn mà bạn đang thiết kế.

32
00:02:46,070 --> 00:02:52,130
Chúng tôi sẽ xem xét một số ví dụ về phần mềm trung gian của bên thứ ba trong bài học này và chúng tôi

33
00:02:52,130 --> 00:02:58,170
cũng sẽ tìm hiểu thêm về những điều này khi chúng tôi đi qua các bài học còn lại trong khóa học này.

34
00:02:58,170 --> 00:03:01,520
Để sử dụng Express trong dự án của bạn, tất nhiên,

35
00:03:01,520 --> 00:03:05,730
bước đầu tiên là cài đặt Express và vì Express là một mô-đun Node,

36
00:03:05,730 --> 00:03:10,940
chúng tôi cài đặt nó bằng cách nói npm install express —save

37
00:03:10,940 --> 00:03:17,145
và điều này sẽ cài đặt Express vào dự án địa phương của bạn.

38
00:03:17,145 --> 00:03:21,865
Chúng ta sẽ thấy việc sử dụng điều này trong bài tập sau bài giảng này.

39
00:03:21,865 --> 00:03:25,670
Hãy nói ngắn gọn về phần mềm trung gian Express.

40
00:03:25,670 --> 00:03:28,425
Vì vậy, mục đích của middleware chính xác là gì?

41
00:03:28,425 --> 00:03:32,510
Các middleware mà Express hỗ trợ cung cấp rất nhiều

42
00:03:32,510 --> 00:03:38,370
chức năng plug-in mà sẽ được sử dụng để tăng cường ứng dụng Express của bạn,

43
00:03:38,370 --> 00:03:41,165
plug-in chức năng như ví dụ, chúng tôi sẽ xem xét

44
00:03:41,165 --> 00:03:45,500
một middleware gọi là Morgan cho phép bạn

45
00:03:45,500 --> 00:03:52,490
in ra thông tin đăng nhập vào màn hình về yêu cầu đi vào máy chủ của bạn.

46
00:03:52,490 --> 00:03:56,494
Tương tự như vậy, chúng ta sẽ xem xét một phần mềm trung gian khác gọi là BodyParser,

47
00:03:56,494 --> 00:03:59,090
cho phép bạn phân tích nội dung của thông

48
00:03:59,090 --> 00:04:02,375
điệp yêu cầu HTTP đến và trích xuất

49
00:04:02,375 --> 00:04:06,450
thông tin từ nó để sử dụng trong ứng dụng Express của bạn.

50
00:04:06,450 --> 00:04:11,395
Chúng ta sẽ thấy việc sử dụng những điều này trong bài tập sau.

51
00:04:11,395 --> 00:04:18,455
Như tôi đã đề cập, Morgan không đăng nhập thông tin vào giao diện điều khiển ở phía máy chủ,

52
00:04:18,455 --> 00:04:21,645
thông tin về các yêu cầu đến.

53
00:04:21,645 --> 00:04:28,145
Tương tự như vậy, họ có thể phục vụ lên tài nguyên Web tĩnh từ máy chủ của chúng tôi bằng cách sử dụng Express

54
00:04:28,145 --> 00:04:35,855
tĩnh vì vậy điều này sẽ phục vụ lên thông tin từ một thư mục

55
00:04:35,855 --> 00:04:39,785
trong dự án Express của chúng tôi, và trong việc khai báo dự án bạn có thể nói tôi là tên

56
00:04:39,785 --> 00:04:44,690
tập tin gạch dưới đôi và tên thư mục gạch dưới đôi hoặc dirname cung cấp cho

57
00:04:44,690 --> 00:04:48,410
bạn đường dẫn đầy đủ cho các tập tin hoặc thư mục cho

58
00:04:48,410 --> 00:04:53,535
các mô-đun hiện tại và bạn sẽ thấy tôi sử dụng điều đó trong bài tập.

59
00:04:53,535 --> 00:04:55,640
Bây giờ chúng ta đã hiểu một chút về

60
00:04:55,640 --> 00:04:58,695
Express và middleware Express sử dụng, chúng ta

61
00:04:58,695 --> 00:05:02,930
hãy nhìn vào một mô-đun Node

62
00:05:02,930 --> 00:05:06,499
vì đây là lần đầu tiên chúng ta gặp phải một module Node bên thứ ba,

63
00:05:06,499 --> 00:05:10,460
chúng ta sẽ xem xét một số chi tiết về các module Node bên thứ ba để nếu chúng ta sẽ kiểm tra

64
00:05:10,460 --> 00:05:15,000
package.json để xem những gì được chứa trong tập tin package.json,

65
00:05:15,000 --> 00:05:17,920
chúng ta cũng sẽ xem xét phiên bản ngữ nghĩa.

66
00:05:17,920 --> 00:05:22,550
Vì vậy, khi bạn chỉ định phiên bản của gói mà bạn sử dụng,

67
00:05:22,550 --> 00:05:31,745
bạn luôn chỉ định phiên bản bằng cách chỉ định phiên bản lớn.Tiểu phiên bản vá lỗi.

68
00:05:31,745 --> 00:05:35,685
Vì vậy, khi bạn cài đặt một gói,

69
00:05:35,685 --> 00:05:39,230
nó luôn luôn được xác định bởi ba con số này,

70
00:05:39,230 --> 00:05:45,440
phiên bản chính có thể giới thiệu những thay đổi phá vỡ do đó có nghĩa là nếu bạn đang

71
00:05:45,440 --> 00:05:48,560
cài đặt một phiên bản mới hơn của gói, nó có thể không

72
00:05:48,560 --> 00:05:51,920
hoàn toàn tương thích ngược với các phiên bản trước đó.

73
00:05:51,920 --> 00:05:55,370
Nó có thể giới thiệu những thay đổi phá vỡ theo đó bạn có thể cần phải quay lại và sửa chữa

74
00:05:55,370 --> 00:05:59,905
các mã mà bạn có thể đã viết trong phiên bản trước của dự án của bạn.

75
00:05:59,905 --> 00:06:01,790
Phiên bản phụ giới thiệu

76
00:06:01,790 --> 00:06:06,385
một số thay đổi nhỏ cho gói của bạn và có thể không phá vỡ thay đổi.

77
00:06:06,385 --> 00:06:14,800
Một bản vá lỗi sẽ là một sửa lỗi thường được phát hành sau đó một lỗi nhỏ được phát hiện.

78
00:06:14,800 --> 00:06:21,005
Vì vậy, các bản vá lỗi thường không dẫn đến bất kỳ thay đổi phá vỡ nào và do đó bạn có thể dễ dàng sử dụng

79
00:06:21,005 --> 00:06:24,395
một phiên bản cao hơn hoặc một phiên bản vá lỗi cao hơn của

80
00:06:24,395 --> 00:06:30,215
một gói cụ thể mà bạn đang sử dụng trong ứng dụng Node của bạn.

81
00:06:30,215 --> 00:06:33,410
Khi bạn đang cài đặt một gói, bạn có thể chỉ

82
00:06:33,410 --> 00:06:38,465
định phiên bản chính xác của gói để cài đặt bằng cách nói npm install,

83
00:06:38,465 --> 00:06:40,460
ví dụ nếu bạn muốn cài đặt

84
00:06:40,460 --> 00:06:44,630
phiên bản 4.0.0 của Express bạn có thể nói express @4 .0.0.

85
00:06:44,630 --> 00:06:51,635
Vì vậy, bạn đang xác định rõ ràng phiên bản nào của gói để cài đặt.

86
00:06:51,635 --> 00:06:55,630
Nếu bạn không sao với một phiên bản vá cấp cao hơn,

87
00:06:55,630 --> 00:07:02,590
bạn sẽ nói npm install express@"~4.0.0 Nếu

88
00:07:02,590 --> 00:07:07,190
một phiên bản phụ cao hơn của một gói là

89
00:07:07,190 --> 00:07:13,125
chấp nhận được sau đó bạn sẽ nói @ và tên của gói.

90
00:07:13,125 --> 00:07:17,210
Bây giờ loại thông tin này cũng được lưu trong tệp package.json,

91
00:07:17,210 --> 00:07:20,070
chúng tôi sẽ nhanh chóng ghé thăm gói tập tin json

92
00:07:20,070 --> 00:07:23,750
nơi bạn sẽ nhận thấy một số thông tin này được lưu.

93
00:07:23,750 --> 00:07:27,575
Bây giờ khi bạn thực hiện bài tập sau bài giảng này,

94
00:07:27,575 --> 00:07:31,845
bạn sẽ thấy điều này trong tập tin package.json.

95
00:07:31,845 --> 00:07:38,325
Đây sẽ là kết quả của việc hoàn thành bài tập sau bài giảng này.

96
00:07:38,325 --> 00:07:43,230
Trong bài tập chúng ta sẽ xây dựng một máy chủ Web đơn giản bằng cách sử dụng Express.

97
00:07:43,230 --> 00:07:46,570
Bây giờ hãy để tôi đưa bạn qua một tour du lịch nhanh chóng của package.json

98
00:07:46,570 --> 00:07:50,470
để minh họa một số thông tin trong package.json.

99
00:07:50,470 --> 00:07:56,530
Vì vậy, trong tập tin package.json bạn sẽ nhận thấy thông tin này ở đây,

100
00:07:56,530 --> 00:08:00,525
tài sản này cho json của chúng tôi được lưu trữ ở đây gọi là Phụ thuộc.

101
00:08:00,525 --> 00:08:04,250
Các phụ thuộc là nơi bạn sẽ chỉ định các

102
00:08:04,250 --> 00:08:07,400
module bên thứ ba bổ sung

103
00:08:07,400 --> 00:08:10,700
mà dự án Node cụ thể này phụ thuộc vào,

104
00:08:10,700 --> 00:08:15,230
vì vậy như bạn có thể thấy ở đây chúng tôi đang nói rằng dự án này phụ thuộc vào Express

105
00:08:15,230 --> 00:08:20,540
và Morgan và lưu ý đặc biệt như thế nào thông tin này được chỉ định ở đây.

106
00:08:20,540 --> 00:08:25,715
Vì vậy, đây là ^4.16.3 có nghĩa là điều này sẽ

107
00:08:25,715 --> 00:08:31,380
làm việc với bất kỳ phiên bản nào là 4.16.3 hoặc cao hơn.

108
00:08:31,380 --> 00:08:35,725
Bạn có thể sử dụng một phiên bản phụ cấp cao hơn và dự án này vẫn sẽ

109
00:08:35,725 --> 00:08:40,970
ổn với nó và tương tự cho Morgan chúng tôi đã chỉ định thông tin ở đây.

110
00:08:40,970 --> 00:08:47,345
Vì vậy, thông tin bổ sung này được thêm vào tập tin package.json bất cứ khi nào bạn làm

111
00:08:47,345 --> 00:08:55,035
npm cài đặt và nói —save flag cho cài đặt npm.

112
00:08:55,035 --> 00:09:02,040
Bây giờ, bạn cũng sẽ nhận thấy rằng tôi đã tạo ra một tập tin.gitignore ở đây và bên trong

113
00:09:02,040 --> 00:09:09,770
tập tin.gitignore tôi đã chỉ định rằng git nên bỏ qua thư mục module Node.

114
00:09:09,770 --> 00:09:13,275
Vì vậy, chính xác những gì được chứa trong thư mục mô-đun Node?

115
00:09:13,275 --> 00:09:20,704
Nếu bạn cài đặt module của bên thứ ba vào ứng dụng Node của bạn,

116
00:09:20,704 --> 00:09:26,270
tất cả các module của bên thứ ba này sẽ được lưu trong thư mục module Node ở đây,

117
00:09:26,270 --> 00:09:31,420
vì vậy trong dự án của bạn, bạn sẽ thấy rằng thư mục Node module đã được tạo ra ở đây.

118
00:09:31,420 --> 00:09:34,550
Và nhìn vào thư mục module nút, bạn sẽ thấy

119
00:09:34,550 --> 00:09:38,495
một bó toàn bộ các gói đã được cài đặt.

120
00:09:38,495 --> 00:09:40,490
Bây giờ tất cả những

121
00:09:43,250 --> 00:09:50,550
điều này đã được cài đặt bởi vì bạn cài đặt Express và Express lần lượt phụ thuộc vào một số gói khác được yêu cầu vì vậy tất cả những người cũng được cài đặt ở đây theo mặc định.

122
00:09:50,550 --> 00:09:55,850
Đặc biệt, hãy để tôi thu hút sự chú ý của bạn đến gói Express ở đây,

123
00:09:55,850 --> 00:09:59,045
vì vậy nếu bạn đi vào gói Express bạn sẽ thấy

124
00:09:59,045 --> 00:10:02,470
thông tin bổ sung được lưu trữ trong gói Express, vì

125
00:10:02,470 --> 00:10:06,435
vậy quan điểm chỉ mục cũng kể từ khi Express chính nó là

126
00:10:06,435 --> 00:10:10,924
một mô-đun Node bạn sẽ thấy một

127
00:10:10,924 --> 00:10:14,015
tập tin package.json bên trong Express cũng có chứa

128
00:10:14,015 --> 00:10:19,865
thông tin bổ sung mà tất nhiên là rất chi tiết

129
00:10:19,865 --> 00:10:25,280
ở đó, khó khăn cho chúng tôi để hiểu nhưng lưu ý đặc biệt

130
00:10:25,280 --> 00:10:31,330
rằng Express chính nó là phụ thuộc vào nhiều module Node khác ở đây.

131
00:10:31,330 --> 00:10:34,820
Và đó là lý do tại sao tất cả các module Node khác

132
00:10:34,820 --> 00:10:38,250
cũng đã được cài đặt vào thư mục module Node.

133
00:10:38,250 --> 00:10:40,160
Vì vậy, khi bạn cài đặt Express,

134
00:10:40,160 --> 00:10:45,020
điều này sẽ ngay lập tức cũng kích hoạt tất cả phụ thuộc của nó cũng được cài đặt bởi vì

135
00:10:45,020 --> 00:10:50,980
Express sẽ yêu cầu các module Node khác cho nó để làm công việc của mình.

136
00:10:50,980 --> 00:10:54,590
Ngoài ra, trong Express cũng bạn sẽ thấy các tập tin index.js.

137
00:10:54,590 --> 00:11:00,125
Vì vậy, đây là điểm khởi đầu cho mô-đun Express Node của chúng tôi và

138
00:11:00,125 --> 00:11:05,690
lưu ý đặc biệt rằng các tập tin index.js chỉ đơn giản là nói module.exports yêu cầu lib express.

139
00:11:05,690 --> 00:11:12,645
Vì vậy, mã thực tế cho các mô-đun Express chính nó là bên trong dự án lib này,

140
00:11:12,645 --> 00:11:16,225
thư mục lib ở đây và bạn có thể xem chi tiết.

141
00:11:16,225 --> 00:11:20,900
Vì vậy, nếu bạn tò mò để xem các chi tiết của Express chính nó bạn có thể đi và nhìn

142
00:11:20,900 --> 00:11:25,560
vào đó nhưng một lần nữa điều này có thể là một chút quá nhiều cho bạn tại thời điểm này.

143
00:11:25,560 --> 00:11:31,815
Cho thời điểm này chỉ cần chấp nhận thực tế là Express sẽ làm công việc của mình như mong đợi.

144
00:11:31,815 --> 00:11:38,450
Nhưng tôi nghĩ rằng nó sẽ là một trải nghiệm thú vị để truy cập thư mục của mô-đun Node

145
00:11:38,450 --> 00:11:45,435
để xem xét một cấu trúc của một mô-đun Node bên thứ ba cụ thể chi tiết hơn một chút.

146
00:11:45,435 --> 00:11:48,530
Ngoài ra, bạn sẽ nhận thấy rằng có một tập tin khác

147
00:11:48,530 --> 00:11:52,010
ở đây được gọi là package-lock.json được cài đặt.

148
00:11:52,010 --> 00:11:56,690
Bây giờ điều này đang được cài đặt bởi các phiên bản mới hơn của npm.

149
00:11:56,690 --> 00:12:01,190
Tập tin package-lock.json được tự động tạo ra bởi

150
00:12:01,190 --> 00:12:06,259
npm mà lưu trữ thông tin về

151
00:12:06,259 --> 00:12:10,265
cây chính xác đã được tạo ra khi bạn cài đặt

152
00:12:10,265 --> 00:12:14,630
các module Node khác và điều này rất hữu ích khi bạn

153
00:12:14,630 --> 00:12:22,660
cần cài đặt các module Node tại một vị trí khác.

154
00:12:22,660 --> 00:12:27,620
Vì vậy, ví dụ nếu bạn tải về một kho lưu trữ Git và

155
00:12:27,620 --> 00:12:32,865
cố gắng tạo lại dự án này trên một máy tính khác,

156
00:12:32,865 --> 00:12:35,930
bạn chỉ cần gõ npm cài đặt trên dấu nhắc và

157
00:12:35,930 --> 00:12:39,050
điều đó sẽ nhắc ứng dụng Node của bạn

158
00:12:39,050 --> 00:12:45,810
tự động cài đặt tất cả mọi thứ được chỉ định trong các phụ thuộc ở đây cho bạn.

159
00:12:45,810 --> 00:12:53,335
Trong khi tạo ra rằng gói lock.json lưu trữ thông tin bổ sung được sử dụng bởi

160
00:12:53,335 --> 00:13:01,805
npm để thực hiện cài đặt chính xác của tất cả các mô-đun npm được yêu cầu.

161
00:13:01,805 --> 00:13:05,090
Bây giờ cho thời điểm này bạn không cần phải lo lắng về các chi tiết của

162
00:13:05,090 --> 00:13:08,290
những gì có bên trong tập tin package-lock.json.

163
00:13:08,290 --> 00:13:15,550
Với điều này, chúng tôi hoàn thành bài học này, nơi chúng tôi đã kiểm tra một số chi tiết về Express.