1
00:00:00,000 --> 00:00:04,946
[MUSIC]

2
00:00:04,946 --> 00:00:09,700
في هذا التمرين، سوف نستكشف بعض وحدات عقدة التعليمات البرمجية. على

3
00:00:09,700 --> 00:00:15,326
وجه الخصوص، سنلقي نظرة على وحدة HTTP المضمنة في عقدة

4
00:00:15,326 --> 00:00:20,411
واستخدام وحدة HTTP لتكوين وبدء تشغيل خادم ويب بسيط.

5
00:00:20,411 --> 00:00:28,090
سننظر أيضًا في كيفية تقديم ملفات ثابتة من خادم Node HTTP الخاص بنا.

6
00:00:28,090 --> 00:00:32,510
سننظر أيضًا في وحدة نظام الملفات ووحدة المسار

7
00:00:32,510 --> 00:00:39,640
وكيف يمكن أن تساعدنا على تقديم ملفات ثابتة في خادم HTTP المستند إلى العقدة.

8
00:00:39,640 --> 00:00:43,790
لذلك دعونا استكشاف بعض وحدات عقدة التعليمات البرمجية في هذا التمرين.

9
00:00:45,710 --> 00:00:51,050
للبدء في هذا التمرين، انتقل إلى موقع مناسب على جهاز الكمبيوتر الخاص بك.

10
00:00:51,050 --> 00:00:54,820
لذلك سنذهب إلى مجلد NodeJS الذي أنشأنا بالفعل في واحدة

11
00:00:54,820 --> 00:00:56,400
من التمارين السابقة.

12
00:00:56,400 --> 00:01:02,663
وفي مجلد NodeJS، سأقوم بإنشاء مجلد جديد باسم عقدة http.

13
00:01:02,663 --> 00:01:07,370
وبعد ذلك، سنقوم بإعداد هذا كتطبيق عقدة.

14
00:01:07,370 --> 00:01:11,440
أيضا، والانتقال إلى مجلد عقدة هتب،

15
00:01:11,440 --> 00:01:16,770
دعونا إنشاء مجلد فرعي هناك اسمه العام والتي سوف تستمر

16
00:01:16,770 --> 00:01:23,080
بعض ملفات هتمل التي سنقوم الخادم من تطبيق عقدة هتب لدينا.

17
00:01:23,080 --> 00:01:28,072
الآن الانتقال إلى محطة، انتقل إلى العقدة،

18
00:01:32,012 --> 00:01:33,478
-http المجلد.

19
00:01:38,222 --> 00:01:43,320
ودعونا تهيئة هذا المجلد ليكون في تطبيقنا.

20
00:01:43,320 --> 00:01:45,901
لذلك سنبدأ مع npm init

21
00:01:45,901 --> 00:01:49,734
وتهيئة هذه الحزمة إلى ملف JSON الخاص بنا هنا.

22
00:01:49,734 --> 00:01:56,450
ثم سنعطي اسم الحزمة كعقدة http

23
00:01:56,450 --> 00:02:00,684
وقبول الإصدار القياسي،

24
00:02:00,684 --> 00:02:06,390
والوصف هو Node HTTP Module مثال.

25
00:02:06,390 --> 00:02:10,830
ونقطة البداية هي index.js، لا أمر اختبار،

26
00:02:10,830 --> 00:02:14,890
لا مستودع git في الوقت الحالي، والمؤلف،

27
00:02:15,960 --> 00:02:21,460
اكتب اسمك، وقبول الباقي كما هو.

28
00:02:23,360 --> 00:02:27,240
ويجب أن يؤدي ذلك إلى إنشاء الحزمة لملف بيان JSON.

29
00:02:27,240 --> 00:02:32,310
الآن دعونا نفتح هذا المشروع في محررنا المفضل.

30
00:02:32,310 --> 00:02:40,860
لذلك اسمحوا لي أن أبدأ بلدي فيسوال ستوديو التعليمات البرمجية في هذا المجلد.

31
00:02:40,860 --> 00:02:44,919
وفي رمز Visual Studio، دعنا نذهب إلى الحزمة إلى ملف JSON الخاص بنا.

32
00:02:44,919 --> 00:02:51,179
ثم سنضيف في برنامج نصي آخر إلى الحزمة،

33
00:02:51,179 --> 00:02:54,936
إلى ملف JSON الخاص بنا يسمى البدء

34
00:02:54,936 --> 00:02:58,850
والذي سينفذ فهرس العقدة.

35
00:02:58,850 --> 00:03:02,710
وتذكر أن تضع فاصلة بعد عقبة الاختبار.

36
00:03:04,300 --> 00:03:08,797
وحفظ التغييرات على ملف package.json.

37
00:03:08,797 --> 00:03:11,805
الآن في مكان المشروع،

38
00:03:11,805 --> 00:03:16,720
قم بإنشاء ملف جديد يسمى index.js.

39
00:03:16,720 --> 00:03:24,920
سنقوم بتكوين هذا index.js لاستخدام وحدة HTTP Node.

40
00:03:24,920 --> 00:03:29,825
حتى في هذا الملف، دعونا نكتب في كونست

41
00:03:29,825 --> 00:03:34,160
هتب = تتطلب («هتب»).

42
00:03:34,160 --> 00:03:38,485
لذلك يمكنك أن ترى أننا نستخدم وحدة كود HTTP،

43
00:03:38,485 --> 00:03:44,484
ونحن نطلب ذلك ببساطة عن طريق تحديد اسم وحدة كود HTTP هناك.

44
00:03:46,647 --> 00:03:48,994
وبالإضافة إلى ذلك، دعونا نعلن,

45
00:03:52,843 --> 00:03:57,551
اثنين من الثوابت هنا وبعد ذلك,

46
00:03:59,779 --> 00:04:02,931
سوف ندعو اسم المضيف

47
00:04:02,931 --> 00:04:08,580
ورقم المنفذ كما 3000 افتراضيا.

48
00:04:08,580 --> 00:04:10,990
الآن دعونا إعداد الخادم.

49
00:04:10,990 --> 00:04:18,330
لإعداد الخادم، سنقول خادم const = http.

50
00:04:18,330 --> 00:04:24,210
تدعم وحدة HTTP طريقة تسمى CreateServer،

51
00:04:24,210 --> 00:04:28,312
لذلك سيستخدمون طريقة CreateServer على ذلك.

52
00:04:28,312 --> 00:04:36,670
هذه الطريقة CreateServer سوف تأخذ وظيفة كمعلمة

53
00:04:36,670 --> 00:04:40,683
وهذه الوظيفة تأخذ

54
00:04:40,683 --> 00:04:46,560
قيمتين كمعلمات، الطلب والاستجابة.

55
00:04:46,560 --> 00:04:49,960
وكما ترون، أنا أكتب وظيفة السهم هنا.

56
00:04:49,960 --> 00:04:54,770
لذا فإن الطلب والاستجابة هما المعلمتان للدالة التي نقدمها

57
00:04:54,770 --> 00:04:59,290
كمعلمة لطريقة CreateServer هنا.

58
00:04:59,290 --> 00:05:04,224
وداخل هذا، سنقول

59
00:05:04,224 --> 00:05:10,580
console.log (req.headers).

60
00:05:10,580 --> 00:05:18,892
حتى هنا، req و res هي طلب HTTP الوارد إلى الخادم.

61
00:05:18,892 --> 00:05:22,548
وهم نوع من كائن استجابة التبويض الذي

62
00:05:22,548 --> 00:05:26,443
سيتم بناؤه من قبل هذا الخادم وإعادته إلى العميل

63
00:05:26,443 --> 00:05:30,820
الذي يتصل بخادم HTTP هذا الذي نقوم بإنشائه هنا.

64
00:05:30,820 --> 00:05:35,120
لذا فإن الطلب هو الطلب الوارد من أي متصفح أو

65
00:05:35,120 --> 00:05:39,700
من أي مكان يحاول الوصول إلى هذا الخادم الذي سنبدأ

66
00:05:39,700 --> 00:05:45,590
باستخدام تطبيق عقدة HTTP هذا الذي نقوم بتطويره هنا.

67
00:05:45,590 --> 00:05:47,500
لذا من الطلب،

68
00:05:47,500 --> 00:05:53,190
يعطينا كائن الطلب الوصول إلى الرؤوس في طلب HTTP الوارد.

69
00:05:53,190 --> 00:05:55,690
لذلك سأقوم بتسجيل

70
00:05:55,690 --> 00:06:00,420
الرؤوس الواردة لطلب HTTP القادمة باستخدام هذا console.log.

71
00:06:00,420 --> 00:06:05,920
فقط لمعلوماتي، فقط لمعرفة من أين يأتي هذا الطلب.

72
00:06:05,920 --> 00:06:11,948
بعد ذلك، يمكننا بناء الاستجابة باستخدام الدقة

73
00:06:11,948 --> 00:06:16,739
وهذا سيوفر لنا طريقة تسمى StatusCode.

74
00:06:16,739 --> 00:06:24,315
ستمكننا StatusCode من إعداد StatusCode لرسالة الاستجابة.

75
00:06:24,315 --> 00:06:28,026
لذلك في هذه الحالة، سأقوم بإعداد StatusCode كـ 200.

76
00:06:28,026 --> 00:06:32,259
إذا كنت تتذكر من المناقشة السابقة حول أساسيات الشبكات،

77
00:06:32,259 --> 00:06:36,576
فستعرف أن StatusCode من 200 يعني أن كل شيء على ما يرام.

78
00:06:36,576 --> 00:06:41,856
وهكذا، قمنا بإعداد رمز الحالة هنا لرسالة الاستجابة ومن

79
00:06:41,856 --> 00:06:46,763
ثم سنقوم أيضا بإعداد رأس لرسالة الاستجابة.

80
00:06:46,763 --> 00:06:51,984
وأحد مخاوف الرأس من أننا ذاهبون

81
00:06:51,984 --> 00:06:56,344
إلى إعداد يسمى نوع المحتوى.

82
00:06:56,344 --> 00:06:59,447
ونوع المحتوى،

83
00:06:59,447 --> 00:07:04,928
وسوف نحدد هذا ليكون «text/html».

84
00:07:04,928 --> 00:07:13,360
وبالتالي فإن هيئة الاستجابة سوف تحتوي على البيانات في شكل أتش تي أم أل هنا.

85
00:07:13,360 --> 00:07:18,740
لذلك يتم إعداد الرأس لإعلام العميل الذي تقوم بإرساله

86
00:07:18,740 --> 00:07:25,160
في الاستجابة ويتم تنسيق النص بتنسيق html.

87
00:07:25,160 --> 00:07:27,840
ثم أخيرا، سوف نقول res.end (').

88
00:07:27,840 --> 00:07:32,500
لذلك هذا ينهي الاستجابة هنا، وعندما يتم ذلك،

89
00:07:32,500 --> 00:07:37,620
سيتم إرسال هذه المعلومات مرة أخرى إلى العميل.

90
00:07:37,620 --> 00:07:45,992
حتى هنا، اسمحوا لي فقط بناء صفحة هتمل في خط هنا،

91
00:07:45,992 --> 00:07:52,754
لذلك سأقول <html><body><h1><مرحبا،

92
00:07:52,754 --> 00:07:55,540
العالم! </h1>.

93
00:07:58,328 --> 00:08:04,211
وأغلق علامة h1، وعلامة النص،

94
00:08:04,211 --> 00:08:09,270
وعلامة html، هناك حق.

95
00:08:09,270 --> 00:08:13,850
وهذا هو استجابة HTML صالحة التي

96
00:08:13,850 --> 00:08:18,100
يمكن إرسالها مرة أخرى من الخادم لدينا هنا.

97
00:08:18,100 --> 00:08:23,730
لذلك هذا الخادم، كما تتوقع أن تذهب ببساطة إرسال عالم مرحبا إلى العميل.

98
00:08:23,730 --> 00:08:28,320
حتى الآن بعد أن قمنا بإعداد الخادم، نحن بحاجة لبدء هذا الخادم.

99
00:08:28,320 --> 00:08:32,350
لبدء تشغيل هذا الخادم في ملاحظة،

100
00:08:32,350 --> 00:08:37,930
نحن بحاجة إلى القول server.listen.

101
00:08:37,930 --> 00:08:43,330
وسيبدأ هذا منفذ الاستماع الذي سيستمع إليه الخادم

102
00:08:43,330 --> 00:08:45,030
للطلبات الواردة.

103
00:08:45,030 --> 00:08:50,050
وسيبدأ هذا عند رقم المنفذ بالنظر إلى المنفذ الخاص بي،

104
00:08:50,050 --> 00:08:53,910
والذي قمنا بإعداده بالفعل هنا في منفذ const.

105
00:08:53,910 --> 00:08:59,990
والمعلمة الثانية هي اسم المضيف الذي قمنا بإعداده بالفعل في وقت سابق.

106
00:08:59,990 --> 00:09:03,560
والمعلمة الثالثة هي وظيفة سيتم

107
00:09:04,720 --> 00:09:07,520
تنفيذها عند بدء تشغيل الخادم.

108
00:09:07,520 --> 00:09:13,560
في هذه الوظيفة نذهب فقط لطباعة المعلومات حول الخادم.

109
00:09:13,560 --> 00:09:18,505
حتى هنا أنا فقط ذاهب إلى القول console.log.

110
00:09:19,560 --> 00:09:22,110
وفي console.log،

111
00:09:22,110 --> 00:09:26,640
سأقوم بطباعة المعلومات لذلك سأستخدم اقتباس خلفي.

112
00:09:26,640 --> 00:09:30,876
لذا لاحظ استخدام الاقتباس الخلفي ليس الاقتباس العادي.

113
00:09:30,876 --> 00:09:35,103
السبب في أننا نستخدم ذلك هو أننا سنستخدم

114
00:09:35,103 --> 00:09:39,830
بعض المتغيرات داخل السلسلة التي سنقوم ببنائها هنا.

115
00:09:39,830 --> 00:09:45,608
لذلك سنقول الخادم الذي يعمل في http://.

116
00:09:45,608 --> 00:09:50,965
وبعد ذلك سوف نقول $

117
00:09:50,965 --> 00:09:55,780
ثم اسم المضيف.

118
00:09:55,780 --> 00:09:59,582
أذكر أن اسم المضيف هذا، كنت قد أعلنت بالفعل في وقت سابق.

119
00:09:59,582 --> 00:10:04,187
ثم الجزء الثاني،

120
00:10:04,187 --> 00:10:08,800
سنقول: $ والميناء.

121
00:10:08,800 --> 00:10:14,130
لذلك سيتم استبدال هاتين القيمتين بالقيم المقابلة.

122
00:10:14,130 --> 00:10:17,370
وبما أننا أرفق هذا في علامات الاقتباس الخلفية.

123
00:10:17,370 --> 00:10:21,070
وإذا قمت بتضمين شيء داخل رفع الدولار،

124
00:10:21,070 --> 00:10:26,150
فسيتم استبدال قيمته في هذه السلسلة هنا.

125
00:10:28,230 --> 00:10:29,150
هذا كل شيء

126
00:10:29,150 --> 00:10:33,990
لدينا خادم HTTP بسيط وتشغيله.

127
00:10:33,990 --> 00:10:37,480
لذلك دعونا حفظ التغييرات على هذا.

128
00:10:37,480 --> 00:10:42,920
وسنذهب ونبدأ طلبنا ونرى ما يخدمه.

129
00:10:42,920 --> 00:10:47,010
الذهاب إلى المحطة، دعونا اكتب بداية npm،

130
00:10:47,010 --> 00:10:50,820
وهذا يجب أن يبدأ التطبيق لدينا.

131
00:10:50,820 --> 00:10:54,020
ونلاحظ أنه يطبع مقولتنا أن الخادم يعمل

132
00:10:54,020 --> 00:10:57,420
في http://localhost:3000.

133
00:10:57,420 --> 00:11:05,950
الآن يمكنك الوصول إلى عنوان URL هذا عن طريق كتابته في شريط العناوين في أي متصفح.

134
00:11:05,950 --> 00:11:09,490
لذلك اسمحوا لي أن أبدأ نافذة متصفح كروم ثم اكتب هذا

135
00:11:09,490 --> 00:11:11,340
ومعرفة ما سيعود الخادم.

136
00:11:19,160 --> 00:11:20,848
بدء نافذة جديدة

137
00:11:20,848 --> 00:11:27,260
اسمحوا لي فقط اكتب في http://

138
00:11:30,028 --> 00:11:34,400
localhost: 3000.

139
00:11:34,400 --> 00:11:39,490
وهذا يجب أن يعود مرحبا العالم كما نتوقع.

140
00:11:39,490 --> 00:11:47,020
الآن عندما نذهب إلى وحدة التحكم ترى أنه على وحدة التحكم هناك

141
00:11:48,820 --> 00:11:54,530
تفاصيل رأس الطلبات الواردة تتم طباعتها هنا.

142
00:11:54,530 --> 00:11:56,650
بعض الأشياء من السهل جدا تحديد مكان هنا.

143
00:11:56,650 --> 00:12:02,290
لذلك هذا هو المضيف، المضيف المحلي: 3000، وترى أيضًا أنه تم

144
00:12:02,290 --> 00:12:08,200
تعيين «وكيل المستخدم» على «Chrome» هنا، وهو إصدار Chrome الذي أستخدمه هنا.

145
00:12:08,200 --> 00:12:14,470
لذلك هذا هو التوضيح مثيرة للاهتمام لرسالة طلب HTTP.

146
00:12:14,470 --> 00:12:19,860
وما هو وارد في رأس رسالة الطلب التي جاءت هنا.

147
00:12:19,860 --> 00:12:24,700
مثيرة جدا للاهتمام لمراقبة ما هو قطع الخاص بك

148
00:12:24,700 --> 00:12:28,690
يطبع على الشاشة هنا.

149
00:12:28,690 --> 00:12:32,935
مع هذا، نكمل النصف الأول من هذا التمرين.

150
00:12:32,935 --> 00:12:38,895
الآن يمكننا تهيئة هذا التطبيق في مستودع Git،

151
00:12:38,895 --> 00:12:41,505
ثم حفظ التغييرات إلى مستودع Git.

152
00:12:41,505 --> 00:12:44,695
لذلك دعونا نمضي قدما ونفعل ذلك بعد ذلك.

153
00:12:44,695 --> 00:12:51,435
في نوع المطالبة، احصل على init، والتي تمت تهيئة المستودع.

154
00:12:51,435 --> 00:12:57,420
ثم سنقول حالة git وترى أن هذين الملفين جديدان.

155
00:12:57,420 --> 00:12:59,502
لذلك سنقول إضافة بوابة.

156
00:12:59,502 --> 00:13:04,702
والقيام جيت ارتكاب

157
00:13:04,702 --> 00:13:15,260
-m «عقدة هتب مثال 1".

158
00:13:15,260 --> 00:13:19,260
ثم تحقق من ذلك في مستودع Git الخاص بنا.

159
00:13:19,260 --> 00:13:22,640
الآن بعد أداة أخرى مفيدة جدا

160
00:13:22,640 --> 00:13:28,370
عندما نبحث في تطبيقات جانب الخادم يسمى ساعي البريد.

161
00:13:28,370 --> 00:13:33,330
الآن يأتي Postman في شكل ملحق متصفح Chrome أو

162
00:13:33,330 --> 00:13:38,430
أداة مستقلة يمكنك تنزيلها وتثبيتها على جهاز الكمبيوتر الخاص بك.

163
00:13:38,430 --> 00:13:43,998
لذلك للقيام بذلك، في متصفحنا دعونا نكتب http.

164
00:13:43,998 --> 00:13:47,425
getpostman.com.

165
00:13:47,425 --> 00:13:52,550
ثم هذا هو المكان الذي يمكنك الحصول على

166
00:13:52,550 --> 00:13:57,660
أداة ساعي البريد لنظام التشغيل الخاص بك وتثبيته.

167
00:13:57,660 --> 00:14:04,360
تسمح لك أداة ساعي البريد بإنشاء طلبات HTTP ثم إرسالها.

168
00:14:04,360 --> 00:14:09,960
كما يمنحك مرونة إعداد رؤوس

169
00:14:09,960 --> 00:14:12,520
طلب HTTP الخاص بك قبل إرساله.

170
00:14:12,520 --> 00:14:16,140
وبعد ذلك عندما تعود الاستجابة، يمكنك فحص الاستجابة

171
00:14:16,140 --> 00:14:20,500
بما في ذلك رؤوس الاستجابة التي تعود من جانب الخادم.

172
00:14:20,500 --> 00:14:23,160
لذلك أجد ساعي البريد ليكون مفيدا جدا.

173
00:14:23,160 --> 00:14:25,410
هناك عدد قليل من الأدوات الأخرى مثل هذا،

174
00:14:25,410 --> 00:14:30,040
ولكن يبدو أن ساعي البريد هو الأفضل في السوق في الوقت الحالي.

175
00:14:30,040 --> 00:14:35,010
لذلك أنا ذاهب للاستفادة من ساعي البريد من خلال بقية هذه الدورة.

176
00:14:35,010 --> 00:14:36,830
إذا كنت لا ترغب في تثبيته،

177
00:14:36,830 --> 00:14:41,720
فيمكنك أيضًا تثبيت ملحق متصفح Chrome لـ Postman ثم استخدامه.

178
00:14:41,720 --> 00:14:45,260
سأقوم بتنزيل إصدار macOS من Postman

179
00:14:45,260 --> 00:14:49,130
ثم تثبيته على جهازي ومن ثم الاستفادة منه.

180
00:14:50,230 --> 00:14:54,280
بمجرد

181
00:14:54,280 --> 00:14:57,880
تثبيت ساعي البريد، إما الإصدار المستقل أو إضافة متصفح Chrome، يمكنك بدء تشغيله.

182
00:14:57,880 --> 00:15:02,210
وسترى أن واجهة المستخدم هي نفسها إلى حد ما

183
00:15:02,210 --> 00:15:07,060
لكل من الإصدار القياسي وكذلك ملحق متصفح Chrome.

184
00:15:07,060 --> 00:15:10,955
وبمجرد أن يكون لديك ساعي البريد قيد التشغيل،

185
00:15:10,955 --> 00:15:18,105
ثم اكتب في مربع طلب عنوان URL،

186
00:15:18,105 --> 00:15:21,510
المضيف المحلي: 3000.

187
00:15:21,510 --> 00:15:24,090
وإرسال الطلب إلى نفسك.

188
00:15:24,090 --> 00:15:28,990
تأكد من تشغيل خادم عقدة HTTP وتشغيله.

189
00:15:28,990 --> 00:15:30,440
لذلك عند إرسال الطلب،

190
00:15:30,440 --> 00:15:36,100
ستحصل على الفور على استجابة من الخادم مع رمز HTML هنا.

191
00:15:36,100 --> 00:15:38,170
الآن ميزة، كما ترى،

192
00:15:38,170 --> 00:15:43,480
مع استخدام ساعي البريد هو أنه يمكنك رؤية النص الفعلي للرسالة.

193
00:15:43,480 --> 00:15:49,380
يمكنك أيضًا الاطلاع على الرؤوس لمعرفة ما تم إرساله مرة أخرى من الخادم.

194
00:15:49,380 --> 00:15:54,890
يمكنك أيضًا إعداد الكثير من التفاصيل في ساعي البريد عند إرسالك.

195
00:15:54,890 --> 00:15:57,600
طلب من الخادم.

196
00:15:57,600 --> 00:16:02,930
الآن العديد من هذه قد لا يكون من السهل جدا القيام به باستخدام نافذة المتصفح القياسية.

197
00:16:02,930 --> 00:16:07,092
لذلك هذا هو السبب في أنني أفضل استخدام [غير مسموع]

198
00:16:07,092 --> 00:16:10,780
لتوليد طلبات هتب إلى الخادم الخاص بي.

199
00:16:10,780 --> 00:16:14,630
ثم مراقبة الاستجابة التي تعود من جانب الخادم.

200
00:16:14,630 --> 00:16:20,490
لاحظ أيضًا أنه يعرض رمز الحالة هنا وبعض المعلومات الأخرى حول

201
00:16:21,650 --> 00:16:26,140
الطلب ووقت الاستجابة من جانب الخادم.

202
00:16:26,140 --> 00:16:31,760
الآن بعد أن أنشأنا خادم HTTP القائم على عقدة بسيطة،

203
00:16:31,760 --> 00:16:39,380
دعونا توسيع نطاقه أكثر، دعونا إنشاء ملفات HTML زوجين في المجلد العمومي.

204
00:16:39,380 --> 00:16:43,632
سنطلق عليه هذا كـ index.html.

205
00:16:43,632 --> 00:16:49,657
ثم أيضا aboutus.html،

206
00:16:49,657 --> 00:16:55,160
ومن ثم مجرد تضمين بعض المعلومات العظام العارية هنا.

207
00:16:55,160 --> 00:17:00,809
لذلك سنقول أتش تي أم أل،

208
00:17:00,809 --> 00:17:08,160
والعنوان كما هذا هو index.html.

209
00:17:08,160 --> 00:17:15,790
ثم سنقوم بكتابة نص صفحة html.

210
00:17:15,790 --> 00:17:21,044
قل h1 Index.html

211
00:17:21,044 --> 00:17:26,298
والجسم ثم هذا هو

212
00:17:26,298 --> 00:17:32,346
محتويات هذا الملف.

213
00:17:32,346 --> 00:17:36,187
بعض التعليمات البرمجية هتمل الأساسية هنا، اسمحوا لي نسخ هذا

214
00:17:36,187 --> 00:17:40,040
ثم لصق أيضا في صفحة aboutus.html.

215
00:17:58,607 --> 00:18:02,560
ومحتويات ملف aboutus.html، هذا كل شيء.

216
00:18:02,560 --> 00:18:05,310
لقد أنشأنا للتو صفحتين HTML،

217
00:18:05,310 --> 00:18:09,840
وهذه صفحات HTML ثابتة قمنا بإنشائها في المجلد العمومي.

218
00:18:09,840 --> 00:18:16,800
الآن، هل يمكننا إعداد خادم هتب عقدة لدينا لتكون قادرة على خدمة صفحات ثابتة؟

219
00:18:16,800 --> 00:18:24,030
لذا هذا ما سنقوم بتكوينه في الجزء الثاني من هذا التمرين.

220
00:18:24,030 --> 00:18:27,928
حتى العودة إلى ملف index.js،

221
00:18:27,928 --> 00:18:32,244
بالإضافة إلى وحدة التعليمات البرمجية هتب،

222
00:18:32,244 --> 00:18:38,660
وأنا ذاهب أيضا لاستيراد وحدة رمز نظام الملفات.

223
00:18:45,192 --> 00:18:49,920
وهذه الوحدة رمز المسار.

224
00:18:51,230 --> 00:18:56,560
يسمح لك المسار بتحديد جزء الملف في نظام الملفات المحلي الخاص بك.

225
00:18:56,560 --> 00:18:59,430
وحدة نظام الملفات تسمح لك لقراءة

226
00:18:59,430 --> 00:19:02,330
وكتابة الملفات من نظام الملفات المحلي الخاص بك.

227
00:19:02,330 --> 00:19:08,880
لذلك مع هذا، سيقولون خادم ثابت، Http.createServer.

228
00:19:08,880 --> 00:19:13,583
بالنسبة لسجل وحدة التحكم، بدلاً من كتابة رؤوس الطلبات بالكامل،

229
00:19:13,583 --> 00:19:17,378
سأكتب ببساطة معلومات كافية فقط، لذلك

230
00:19:17,378 --> 00:19:24,212
سأقول، طلب،

231
00:19:29,291 --> 00:19:32,329
فقط عنوان URL لهذا الطلب.

232
00:19:39,786 --> 00:19:41,195
عن طريق الطريقة.

233
00:19:46,917 --> 00:19:51,218
لذا فإن الطريقة ستكون إما الحصول على مشاركة المنفذ أو حذف الطرق.

234
00:19:51,218 --> 00:19:56,450
لذلك هذا سيسجل هذه المعلومات.

235
00:19:56,450 --> 00:20:01,478
الآن، ما سنفعله هو بدلاً من إرسال

236
00:20:01,478 --> 00:20:06,440
هذا الرد، الاستجابة العالمية القياسية للترحيب.

237
00:20:06,440 --> 00:20:11,176
هنا، سنقوم بفحص الطريقة

238
00:20:11,176 --> 00:20:16,600
وبعد ذلك سنقول إذا req.method يساوي GET.

239
00:20:16,600 --> 00:20:21,689
لذلك سنقوم فقط بخدمة طلبات GET في هذا المثال.

240
00:20:25,904 --> 00:20:28,750
خلاف ذلك، سوف نقول أن هناك إذا.

241
00:20:28,750 --> 00:20:34,035
حتى إذا كان هناك طلب جيت الذي يأتي في،

242
00:20:34,035 --> 00:20:36,911
ثم سنقوم بفحص،

243
00:20:42,139 --> 00:20:47,577
عنوان ورل الذي يأتي في،

244
00:20:47,577 --> 00:20:55,304
لذلك سنقول إذا req.url هو/،

245
00:20:55,304 --> 00:21:03,615
ونحن سوف نقول فيليورل يساوي هتمل.

246
00:21:03,615 --> 00:21:06,645
لذلك إذا لم تحصل على اسم ملف محدد

247
00:21:06,645 --> 00:21:10,380
ولكنك فقط ترسل طلبًا إلى رمز المضيف المحلي 3000.

248
00:21:10,380 --> 00:21:15,371
وسوف الافتراضي إلى index.html،

249
00:21:15,371 --> 00:21:22,460
وإلا فإنه سوف يقول فيليورل يساوي req.url.

250
00:21:24,650 --> 00:21:28,148
بهذه الطريقة، قمت بإنشاء أي ملف إلى الخادم.

251
00:21:28,148 --> 00:21:35,929
الآن، سنقول أننا سنجد مسار الملف،

252
00:21:35,929 --> 00:21:41,279
سنقول المسار، حل،

253
00:21:41,279 --> 00:21:48,404
وبالتالي فإن وحدة المسار تدعم طريقة الحل هذه، لذلك هذا سوف

254
00:21:52,013 --> 00:21:57,331
يترجم هذا إلى ملف مجلدات المسار الكامل،

255
00:21:57,331 --> 00:22:01,096
الملف الذي قمنا ببنائه للتو، و

256
00:22:01,096 --> 00:22:05,620
FileUrl التي قمنا ببنائها للتو.

257
00:22:05,620 --> 00:22:10,480
لذلك سيعطينا هذا المسار الكامل للملف،

258
00:22:10,480 --> 00:22:17,000
وبعد ذلك سنقول FileExtension ثابت.

259
00:22:17,000 --> 00:22:21,524
لذلك إذا كنت تريد التأكد من

260
00:22:21,524 --> 00:22:26,808
أن ملحق اسم الملف هو HTML.

261
00:22:30,003 --> 00:22:32,904
لذا من FilePath،

262
00:22:32,904 --> 00:22:38,402
سنقوم بفحص امتداد اسم الملف

263
00:22:38,402 --> 00:22:42,710
ثم سنقول إذا FileExt ==.

264
00:22:42,710 --> 00:22:47,270
لذلك إذا كان ملف HTML، فإننا نعرف كيفية خدمته من هذه

265
00:22:48,410 --> 00:22:51,830
العلاقة الخاصة لخادم HTTP العقدة.

266
00:22:51,830 --> 00:22:57,025
لذلك سنقول إذا كان امتداد الملف هو HTML، ثم نعرف أن

267
00:22:57,025 --> 00:23:02,835
الملف هو ملف HTML ولدينا ملفين، فهرس و aboutus.html.

268
00:23:02,835 --> 00:23:06,986
لذلك سوف نتحقق لمعرفة ما إذا كان هذا الملف موجودًا، لذلك

269
00:23:06,986 --> 00:23:11,435
سنقول إذا كان الملف موجودًا، FilePath.

270
00:23:11,435 --> 00:23:17,915
لذا ستتحقق الطريقة الموجودة لمعرفة ما إذا كان الملف موجودًا،

271
00:23:17,915 --> 00:23:24,180
لذا سنقول fs.exists (FilePath)،

272
00:23:24,180 --> 00:23:26,860
وسيأخذ هذا

273
00:23:29,780 --> 00:23:34,170
كمعلمة ثانية، وظيفة معاودة الاتصال.

274
00:23:34,170 --> 00:23:39,180
لذا لاحظ استخدام أول وظيفة معاودة الاتصال في مثالنا.

275
00:23:39,180 --> 00:23:46,430
لذلك سيتم استدعاء وظيفة رد الاتصال هذه مع وجود هذه المعلمة هناك.

276
00:23:46,430 --> 00:23:50,740
لذلك داخل معلمة رد الاتصال هذه، سيكون هذا موجودًا إما صحيحًا أو خاطئًا.

277
00:23:50,740 --> 00:23:54,160
لذلك هذه هي معلمة الإرجاع لوظيفة رد الاتصال هذه.

278
00:23:54,160 --> 00:23:58,336
حتى هنا, ونحن سوف تحقق,

279
00:23:58,336 --> 00:24:02,584
وسنقول إذا (! )،

280
00:24:02,584 --> 00:24:08,248
مما يعني أن الملف غير موجود،

281
00:24:08,248 --> 00:24:14,241
ثم سنقول Res.statusCode = 404.

282
00:24:14,241 --> 00:24:19,107
تذكر أنه إذا كان الملف غير موجود، سوف ترسل رمز الحالة 404 قائلا،

283
00:24:19,107 --> 00:24:20,608
لا يمكنك العثور على الملف.

284
00:24:20,608 --> 00:24:26,393
ثم سنقول Res.Setheader،

285
00:24:26,393 --> 00:24:33,996
وسنقوم بتعيين الرأس إلى «نوع المحتوى»،

286
00:24:37,305 --> 00:24:39,587
«text/html».

287
00:24:42,729 --> 00:24:51,940
ثم نحتاج إلى إرسال ملف HTML هنا أو رمز HTML.

288
00:24:51,940 --> 00:24:59,150
لذلك سوف أفعل رمز هتمل الأساسي، هتمل الجسم h1.

289
00:25:01,582 --> 00:25:05,590
خطأ 404،

290
00:25:05,590 --> 00:25:12,378
سنقول، + فيليورل +

291
00:25:17,421 --> 00:25:20,668
'لم يتم العثور عليها'.

292
00:25:24,185 --> 00:25:31,670
وإغلاق، صفحة HTML.

293
00:25:31,670 --> 00:25:36,560
حتى هنا، كما لاحظت، كنت تستخدم وظيفة موجودة

294
00:25:36,560 --> 00:25:41,350
من وحدة نظام الملفات للتحقق من وجود الملف.

295
00:25:41,350 --> 00:25:43,670
لذلك تعطي مسار الملف كمعلمة الأولى،

296
00:25:43,670 --> 00:25:45,970
والثانية هي وظيفة رد الاتصال.

297
00:25:45,970 --> 00:25:51,380
داخل وظيفة رد الاتصال هذه، إذا كانت تقول أن هناك خطأ،

298
00:25:51,380 --> 00:25:58,010
فسترسل رسالة خطأ 404 القياسية، قائلا أنه لا يمكنك العثور على الملف.

299
00:25:58,010 --> 00:26:01,420
وبعد أن نفعل ذلك، سنقوم ببساطة،

300
00:26:04,918 --> 00:26:08,088
والعودة، وإلا،

301
00:26:10,507 --> 00:26:16,151
سوف نقول Res.StatusCode

302
00:26:16,151 --> 00:26:22,267
= 200، Res.Setheader،

303
00:26:26,156 --> 00:26:32,481
('نوع المحتوى'، 'text/html').

304
00:26:37,154 --> 00:26:41,950
الآن، نحن بحاجة إلى قراءة في الملف ومن ثم إرسال الملف.

305
00:26:41,950 --> 00:26:44,950
لذلك هذا هو المكان، من وحدة نظام الملفات،

306
00:26:44,950 --> 00:26:50,510
وسوف نستخدم كريتيريدستريم،

307
00:26:50,510 --> 00:26:54,770
والتي سوف تأخذ فيليباث كمعلمة.

308
00:26:54,770 --> 00:27:00,810
لذلك سوف تقرأ هذه الطريقة كريتيريدستريم في الملف من هذا فيليباث.

309
00:27:00,810 --> 00:27:05,930
ثم تحويل ذلك إلى تيار من وحدات البايت،

310
00:27:05,930 --> 00:27:10,530
وبعد ذلك سوف توجيه هذا من خلال الاستجابة.

311
00:27:10,530 --> 00:27:15,300
بحيث سيتم تضمينها في الاستجابة، في نص الاستجابة.

312
00:27:15,300 --> 00:27:17,978
وبهذه الطريقة، اتخذنا الملف للتو

313
00:27:17,978 --> 00:27:22,274
ثم شيدته في الاستجابة هنا.

314
00:27:22,274 --> 00:27:26,640
وهذا كل شيء، الملف جاهز ليتم إرساله، حسنا؟

315
00:27:26,640 --> 00:27:29,875
لذلك هذا هو إذا كان امتداد الملف هو html،

316
00:27:29,875 --> 00:27:34,740
ونحن نتحقق للتأكد من أنك تتعامل مع هذا بشكل صحيح.

317
00:27:34,740 --> 00:27:38,770
لذلك هذا هو المكان الذي سوف تقرأ في الملف ومن ثم إرساله.

318
00:27:38,770 --> 00:27:46,560
إذا كان امتداد الملف ليس html، فبالطبع، نحتاج إلى إرسال رسالة خطأ.

319
00:27:46,560 --> 00:27:51,481
لذلك هناك سوف نرى، ونحن سوف نسخ هذا

320
00:27:51,481 --> 00:27:56,890
معين، رمز من هنا.

321
00:27:58,774 --> 00:28:03,364
ومن ثم لصقه هناك.

322
00:28:03,364 --> 00:28:10,553
سنقول، آخر statusCode = 404، نص السياق/html،

323
00:28:10,553 --> 00:28:16,685
ورسالة الخطأ تقول، خطأ 404، فيليورل.

324
00:28:16,685 --> 00:28:20,849
لم يتم العثور عليه،

325
00:28:20,849 --> 00:28:25,250
ولكنه ليس ملف HTML.

326
00:28:25,250 --> 00:28:28,648
لذلك هذا هو الخطأ الذي سنرسله مرة أخرى في هذه الحالة.

327
00:28:28,648 --> 00:28:34,384
وأخيرا، بالنسبة للحالة الأخيرة،

328
00:28:34,384 --> 00:28:39,650
لذلك نحن هنا نقول الطريقة.

329
00:28:39,650 --> 00:28:44,910
لذلك هذا آخر يتوافق مع طريقة الطلب.

330
00:28:44,910 --> 00:28:48,230
لذا إذا كانت طريقة الطلب ليست GET، ولكن بعض طريقة الطلب الأخرى،

331
00:28:48,230 --> 00:28:54,380
فلن نتعامل مع ذلك في هذا الإصدار تطبيق Node الخاص بنا.

332
00:28:54,380 --> 00:28:58,333
لذلك سنرسل مرة أخرى statusCode 404

333
00:28:58,333 --> 00:29:02,759
، html المحتوى، وسنقول خطأ 404.

334
00:29:04,100 --> 00:29:09,117
وسنقول، طريقة req،

335
00:29:11,763 --> 00:29:16,394
لا، مدعوم،

336
00:29:16,394 --> 00:29:21,800
غير معتمد من قبل خادم HTML هذا هنا، هذا كل شيء.

337
00:29:21,800 --> 00:29:28,667
مع هذه التغييرات، ونحن الآن على استعداد لإعادة تشغيل متصفحنا.

338
00:29:28,667 --> 00:29:33,850
ثم السماح لها بخدمة ملفات HTML هنا.

339
00:29:35,800 --> 00:29:42,351
لذلك دعونا حفظ التغييرات، ومن ثم انتقل وإعادة تشغيل الخادم لدينا، ومن

340
00:29:42,351 --> 00:29:48,018
ثم فحص ما يرسل عندما نرسل طلبات مختلفة إلى الخادم.

341
00:29:48,018 --> 00:29:51,974
الانتقال إلى المحطة الطرفية، إذا كان الخادم قيد التشغيل، قم

342
00:29:51,974 --> 00:29:56,398
بإيقافه عن طريق كتابة Ctrl+C، ثم أعد تشغيل الخادم.

343
00:29:56,398 --> 00:30:00,490
وعندما يكون الخادم قيد التشغيل، دعنا نرسل بعض الطلبات إليه.

344
00:30:00,490 --> 00:30:05,722
أولا، من متصفح، وبعد ذلك من ساعي البريد.

345
00:30:05,722 --> 00:30:10,340
انتقل إلى نافذة المتصفح الخاص بك، دعنا نكتب المضيف المحلي: 3000،

346
00:30:10,340 --> 00:30:16,320
ونرى أن هذا يعيد ملف index.html كما نتوقع.

347
00:30:16,320 --> 00:30:21,073
ثم سنقول لوكالهوست: 3000/index.html،

348
00:30:21,073 --> 00:30:24,974
وهذا سيعود أيضا ملف index.html.

349
00:30:24,974 --> 00:30:32,530
الآن إذا أرسلنا aboutus.html، فإنه يقول Aboutus.html، ويعيده بشكل صحيح.

350
00:30:32,530 --> 00:30:38,390
دعونا الآن إرسال طلب ل aboutus.txt، ونرى ما يفعله.

351
00:30:38,390 --> 00:30:43,365
لذلك يقول /aboutus.txt ليس ملف HTML.

352
00:30:43,365 --> 00:30:49,992
ثم دعونا نرسل طلبا إلى test.html.

353
00:30:49,992 --> 00:30:56,005
ونحن نعلم أن test.html غير موجود، لذلك يقول /test.html لم يتم العثور عليها.

354
00:30:56,005 --> 00:31:01,185
لذلك نرى أنه باستخدام المتصفح، ونحن قادرون على جلب

355
00:31:01,185 --> 00:31:06,620
تلك الملفات الموجودة، والخادم قادر على إرسال الملفات إلى المتصفح.

356
00:31:06,620 --> 00:31:10,420
دعنا نذهب الآن إلى ساعي البريد ونحاول إنشاء نفس الطلبات،

357
00:31:10,420 --> 00:31:13,400
ونرى الاستجابة من الخادم.

358
00:31:13,400 --> 00:31:20,280
بعد ذلك، انتقل إلى ساعي البريد، دعنا نرسل طلب GET إلى المضيف المحلي: 3000/.

359
00:31:20,280 --> 00:31:25,150
وترى أن هذا يعود الملف index.html.

360
00:31:25,150 --> 00:31:30,530
دعونا نرسل طلبا إلى aboutus.html.

361
00:31:30,530 --> 00:31:35,159
ثم ترى أنه يعود الملف aboutus.html.

362
00:31:35,159 --> 00:31:38,650
ثم سنرسل طلبًا إلى الملف النصي،

363
00:31:38,650 --> 00:31:42,240
ثم يقول الخطأ 404، وليس ملف HTML.

364
00:31:42,240 --> 00:31:46,920
وسترون أن الحالة هنا تقول، 404 لم يتم العثور عليها.

365
00:31:46,920 --> 00:31:51,400
ثم سنقوم، بدلاً من إرسال طلب GET،

366
00:31:51,400 --> 00:31:56,730
نرى أن هذه هي ميزة استخدام ساعي البريد، سأرسل طلب PUT.

367
00:31:56,730 --> 00:32:01,040
وستلاحظ أن هذا يقول، خطأ: PUT غير معتمد،

368
00:32:01,040 --> 00:32:04,800
وهكذا مع الحالة 404 هنا، وهلم جرا.

369
00:32:04,800 --> 00:32:11,010
إذن هذه هي الطريقة التي يمكنك بها تكوين خادم Node HTTP

370
00:32:11,010 --> 00:32:16,600
لتكون قادرة على تقديم الملفات وملفات HTTP في هذه الحالة بالذات.

371
00:32:16,600 --> 00:32:19,420
الآن يمكنك بسهولة تخيل توسيع

372
00:32:19,420 --> 00:32:23,900
خادم HTTP هذا للتعامل مع العديد من أنواع الملفات المختلفة وهلم جرا.

373
00:32:23,900 --> 00:32:25,630
ولكن بطبيعة الحال، في المقابل،

374
00:32:25,630 --> 00:32:30,350
فإن رمز أيضا الحصول على أكثر تعقيدا من ما لدينا في هذه اللحظة.

375
00:32:30,350 --> 00:32:33,140
مع هذا، نكمل هذا التمرين.

376
00:32:33,140 --> 00:32:38,589
في هذا التمرين، رأينا كيف يمكننا إعداد

377
00:32:38,589 --> 00:32:45,356
خادم HTTP بسيط يستند إلى عقدة يخدم الملفات من موقع الخادم الخاص بنا.

378
00:32:45,356 --> 00:32:48,260
[ موسيقى]