1
00:00:03,650 --> 00:00:06,464
В предыдущих уроках

2
00:00:06,464 --> 00:00:08,580
мы узнали о Node.

3
00:00:08,580 --> 00:00:13,215
Мы также видели, как Node может быть использован для настройки веб-сервера.

4
00:00:13,215 --> 00:00:20,460
Теперь конструкторы Node намеренно держали узел маленьким с небольшим количеством

5
00:00:20,460 --> 00:00:24,480
модулей кода, чтобы они могли оставить его на усмотрение

6
00:00:24,480 --> 00:00:29,730
сторонних разработчиков, чтобы придумать инновационные решения проблем.

7
00:00:29,730 --> 00:00:37,590
Поэтому после выпуска Node ряд сторонних разработчиков начали разрабатывать

8
00:00:37,590 --> 00:00:45,875
и выпускать интересные сторонние модули, которые могут работать поверх платформы Node.

9
00:00:45,875 --> 00:00:50,030
Теперь вы видели ряд модулей Node, которые можно было бы

10
00:00:50,030 --> 00:00:54,185
использовать для разработки интерфейсов в предыдущих курсах.

11
00:00:54,185 --> 00:00:59,240
Теперь в этом курсе мы рассматриваем серверную разработку и на стороне сервера,

12
00:00:59,240 --> 00:01:03,020
одним из самых популярных сторонних модулей Node или

13
00:01:03,020 --> 00:01:08,720
фреймворков для построения HTTP-серверов является Express.

14
00:01:08,720 --> 00:01:11,480
Давайте посмотрим на некоторые детали Express в

15
00:01:11,480 --> 00:01:14,345
этой лекции, а затем мы будем использовать Express для

16
00:01:14,345 --> 00:01:21,725
создания сервера, который обслуживает REST API на протяжении всей остальной части этого курса.

17
00:01:21,725 --> 00:01:25,670
Во-первых, что такое Экспресс?

18
00:01:25,670 --> 00:01:30,355
Express - это быстрый, неуверенный,

19
00:01:30,355 --> 00:01:37,519
минималистский фреймворк, который работает поверх Node.js и поддерживает веб-разработку.

20
00:01:37,519 --> 00:01:42,570
Это определение, которое я заимствовал из expressjs.com,

21
00:01:42,570 --> 00:01:48,025
сайта, где для нас доступна связанная с Express документация.

22
00:01:48,025 --> 00:01:53,769
Теперь Express позволяет разрабатывать веб-приложение,

23
00:01:53,769 --> 00:02:02,385
серверное приложение, которое будет обслуживать контент для потребления нашим фронт-эндом.

24
00:02:02,385 --> 00:02:07,730
Экспресс предоставляет надежный набор функций, которые мы рассмотрим

25
00:02:07,730 --> 00:02:13,610
более подробно на остальных уроках в этом курсе.

26
00:02:13,610 --> 00:02:17,425
Выражайте себя, как я уже сказал, является минималистской структурой,

27
00:02:17,425 --> 00:02:21,020
а Express также предоставляет способ расширения и

28
00:02:21,020 --> 00:02:25,465
добавления функциональности Express через стороннее промежуточное программное обеспечение.

29
00:02:25,465 --> 00:02:31,830
Это расширяет функциональность Express и добавляет дополнительные функции по мере необходимости.

30
00:02:31,830 --> 00:02:38,750
Таким образом, вы можете создать веб-сервер, используя столько же стороннего промежуточного программного обеспечения, сколько

31
00:02:38,750 --> 00:02:46,070
необходимо для удовлетворения потребностей вашего веб-сервера, который вы разрабатываете.

32
00:02:46,070 --> 00:02:52,130
Мы рассмотрим некоторые примеры стороннего промежуточного программного обеспечения в этом уроке, и мы

33
00:02:52,130 --> 00:02:58,170
также рассмотрим больше из них по мере прохождения остальных уроков в этом курсе.

34
00:02:58,170 --> 00:03:01,520
Чтобы использовать Express в вашем проекте, конечно,

35
00:03:01,520 --> 00:03:05,730
первым шагом является установка Express, и поскольку Express является модулем Node,

36
00:03:05,730 --> 00:03:10,940
мы устанавливаем его, сказав npm install express —save,

37
00:03:10,940 --> 00:03:17,145
и это установит Express в ваш локальный проект.

38
00:03:17,145 --> 00:03:21,865
Мы увидим использование этого в упражнении, которое следует за этой лекцией.

39
00:03:21,865 --> 00:03:25,670
Давайте кратко поговорим о промежуточном программном обеспечении Express.

40
00:03:25,670 --> 00:03:28,425
Итак, какова именно цель промежуточного программного обеспечения?

41
00:03:28,425 --> 00:03:32,510
Среднее программное обеспечение, которое Express поддерживает, предоставляют много

42
00:03:32,510 --> 00:03:38,370
функций плагина, которые будут использоваться для улучшения вашего приложения Express,

43
00:03:38,370 --> 00:03:41,165
функционал плагина, как например, мы будем смотреть на

44
00:03:41,165 --> 00:03:45,500
промежуточное программное обеспечение под названием Morgan, которое позволяет

45
00:03:45,500 --> 00:03:52,490
распечатать информацию журнала на экране о запросы, которые приходят на ваш сервер.

46
00:03:52,490 --> 00:03:56,494
Аналогичным образом, мы рассмотрим другое промежуточное программное обеспечение под названием BodyParser,

47
00:03:56,494 --> 00:03:59,090
которое позволяет анализировать тело

48
00:03:59,090 --> 00:04:02,375
входящего сообщения HTTP-запроса и извлекать

49
00:04:02,375 --> 00:04:06,450
информацию из него для использования в вашем приложении Express.

50
00:04:06,450 --> 00:04:11,395
Мы увидим их использование в упражнении, которое следует.

51
00:04:11,395 --> 00:04:18,455
Как я уже упоминал, Morgan регистрирует информацию на консоли на стороне сервера,

52
00:04:18,455 --> 00:04:21,645
информацию о входящих запросах.

53
00:04:21,645 --> 00:04:28,145
Аналогичным образом, они могут обслуживать статические веб-ресурсы с нашего сервера, используя

54
00:04:28,145 --> 00:04:35,855
статический Express, поэтому это будет обслуживать информацию из папки в нашем проекте Express,

55
00:04:35,855 --> 00:04:39,785
и при объявлении проекта вы можете сказать, что я

56
00:04:39,785 --> 00:04:44,690
двойное подчеркивание имя файла и двойное подчеркивание имя каталога или dirname, который дает

57
00:04:44,690 --> 00:04:48,410
вам полный путь к файлу или каталогу для

58
00:04:48,410 --> 00:04:53,535
текущего модуля, и вы увидите, что я использую это в упражнении.

59
00:04:53,535 --> 00:04:55,640
Теперь, когда мы немного поняли об

60
00:04:55,640 --> 00:04:58,695
Express и промежуточном программном обеспечении, которое использует Express,

61
00:04:58,695 --> 00:05:02,930
давайте посмотрим на модуль Node,

62
00:05:02,930 --> 00:05:06,499
потому что это первый раз, когда мы сталкиваемся с модулями сторонних узлов,

63
00:05:06,499 --> 00:05:10,460
мы рассмотрим некоторые детали о сторонних модулях Node, поэтому, если мы рассмотрим

64
00:05:10,460 --> 00:05:15,000
package.json, чтобы узнать, что содержится в файле package.json,

65
00:05:15,000 --> 00:05:17,920
мы также рассмотрим семантическое управление версиями.

66
00:05:17,920 --> 00:05:22,550
Поэтому, когда вы указываете версию пакета, который вы используете, вы

67
00:05:22,550 --> 00:05:31,745
всегда указываете версию, указав версию Major Version.Minor version.The patch.

68
00:05:31,745 --> 00:05:35,685
Таким образом, когда вы устанавливаете пакет,

69
00:05:35,685 --> 00:05:39,230
он всегда определяется этими тремя числами,

70
00:05:39,230 --> 00:05:45,440
основная версия, которая может привести к нарушению изменений, так что, если вы

71
00:05:45,440 --> 00:05:48,560
устанавливаете более новую версию пакета, она может быть не

72
00:05:48,560 --> 00:05:51,920
полностью обратно совместима с предыдущими версиями.

73
00:05:51,920 --> 00:05:55,370
Это может привести к нарушению изменений, в результате которых вам может потребоваться вернуться и исправить

74
00:05:55,370 --> 00:05:59,905
код, который вы, возможно, написали в более ранней версии вашего проекта.

75
00:05:59,905 --> 00:06:01,790
Небольшая версия вносит

76
00:06:01,790 --> 00:06:06,385
некоторые незначительные изменения в ваш пакет и может не нарушать изменения.

77
00:06:06,385 --> 00:06:14,800
Патч будет исправлением ошибки, которое часто выдается, тогда обнаруживается небольшая ошибка.

78
00:06:14,800 --> 00:06:21,005
Таким образом, патчи обычно не приводят к каким-либо изменениям, и поэтому вы можете легко использовать

79
00:06:21,005 --> 00:06:24,395
более высокую версию или более высокую версию патча

80
00:06:24,395 --> 00:06:30,215
определенного пакета, который вы используете в приложении Node.

81
00:06:30,215 --> 00:06:33,410
Когда вы устанавливаете пакет, вы можете указать

82
00:06:33,410 --> 00:06:38,465
точную версию пакета для установки, сказав npm install,

83
00:06:38,465 --> 00:06:40,460
например, если вы хотите установить

84
00:06:40,460 --> 00:06:44,630
версию 4.0.0 Express, вы можете сказать express @4 .0.0.

85
00:06:44,630 --> 00:06:51,635
Таким образом, вы явно указываете, какую версию пакета установить.

86
00:06:51,635 --> 00:06:55,630
Если вы согласны с версией патча более высокого уровня,

87
00:06:55,630 --> 00:07:02,590
вы бы сказали npm install express@"~4.0.0 Если

88
00:07:02,590 --> 00:07:07,190
младшая версия более высокой версии пакета

89
00:07:07,190 --> 00:07:13,125
приемлема, вы бы сказали @ и имя пакета.

90
00:07:13,125 --> 00:07:17,210
Теперь этот вид информации также сохраняется в файле package.json,

91
00:07:17,210 --> 00:07:20,070
мы быстро посетим пакет json-файла,

92
00:07:20,070 --> 00:07:23,750
где вы заметите, что часть этой информации сохраняется.

93
00:07:23,750 --> 00:07:27,575
Теперь, когда вы сделаете упражнение, которое следует за этой лекцией,

94
00:07:27,575 --> 00:07:31,845
вы увидите это в файле package.json.

95
00:07:31,845 --> 00:07:38,325
Это будет результатом завершения упражнения, которое следует за этой лекцией.

96
00:07:38,325 --> 00:07:43,230
В упражнении мы построим простой веб-сервер с помощью Express.

97
00:07:43,230 --> 00:07:46,570
Теперь позвольте мне провести вас через быстрый тур по package.json,

98
00:07:46,570 --> 00:07:50,470
чтобы проиллюстрировать некоторую информацию в package.json.

99
00:07:50,470 --> 00:07:56,530
Таким образом, в файле package.json вы заметите эту информацию здесь,

100
00:07:56,530 --> 00:08:00,525
это свойство для нашего json, которое хранится здесь под названием Dependencies.

101
00:08:00,525 --> 00:08:04,250
Зависимости - это то, где вы укажете,

102
00:08:04,250 --> 00:08:07,400
какие дополнительные сторонние модули, от

103
00:08:07,400 --> 00:08:10,700
которых зависит этот конкретный проект узла,

104
00:08:10,700 --> 00:08:15,230
так что, как вы можете видеть здесь, мы говорим, что этот проект зависит от Express

105
00:08:15,230 --> 00:08:20,540
и Morgan и обратите внимание, в частности, как эта информация указана Здесь.

106
00:08:20,540 --> 00:08:25,715
Таким образом, это ^4.16.3 означает, что это будет

107
00:08:25,715 --> 00:08:31,380
работать с любой версией 4.16.3 или выше.

108
00:08:31,380 --> 00:08:35,725
Вы можете использовать младшую версию более высокого уровня, и этот проект все равно будет в

109
00:08:35,725 --> 00:08:40,970
порядке с ним и аналогичным образом для Morgan мы указали информацию здесь.

110
00:08:40,970 --> 00:08:47,345
Таким образом, эта дополнительная информация добавляется в файл package.json всякий раз, когда вы

111
00:08:47,345 --> 00:08:55,035
устанавливаете npm и говорите -save флаг для установки npm.

112
00:08:55,035 --> 00:09:02,040
Теперь вы также заметите, что я создал файл.gitignore здесь и внутри

113
00:09:02,040 --> 00:09:09,770
файла.gitignore, который я указал, что git должен игнорировать папку модулей Node.

114
00:09:09,770 --> 00:09:13,275
Итак, что именно содержится в папке модулей Node?

115
00:09:13,275 --> 00:09:20,704
Если вы устанавливаете сторонние модули в ваше приложение Node,

116
00:09:20,704 --> 00:09:26,270
все эти сторонние модули будут сохранены в папке Node modules здесь,

117
00:09:26,270 --> 00:09:31,420
поэтому в вашем проекте вы увидите, что папка модулей Node была создана здесь.

118
00:09:31,420 --> 00:09:34,550
И взглянув на папку модулей узла, вы увидите

119
00:09:34,550 --> 00:09:38,495
целую кучу пакетов, которые были установлены.

120
00:09:38,495 --> 00:09:40,490
Теперь все они были установлены, потому что вы

121
00:09:40,490 --> 00:09:43,250
устанавливаете Express и Express в свою очередь зависит от

122
00:09:43,250 --> 00:09:50,550
некоторых других пакетов, которые необходимы, поэтому все они также устанавливаются здесь по умолчанию.

123
00:09:50,550 --> 00:09:55,850
В частности, позвольте мне также обратить ваше внимание на пакет Express здесь,

124
00:09:55,850 --> 00:09:59,045
поэтому, если вы войдете в пакет Express, вы увидите

125
00:09:59,045 --> 00:10:02,470
дополнительную информацию, хранящуюся в пакете Express,

126
00:10:02,470 --> 00:10:06,435
поэтому перспектива индекса также так как Express

127
00:10:06,435 --> 00:10:10,924
является модулем Node, вы увидите

128
00:10:10,924 --> 00:10:14,015
файл package.json внутри Express также, который содержит

129
00:10:14,015 --> 00:10:19,865
дополнительную информацию, которая, конечно, очень подробно там,

130
00:10:19,865 --> 00:10:25,280
трудно понять, но обратите внимание, в частности

131
00:10:25,280 --> 00:10:31,330
, что Экспресс сам зависит от многих других модулей узла здесь.

132
00:10:31,330 --> 00:10:34,820
И именно поэтому все эти другие модули Node

133
00:10:34,820 --> 00:10:38,250
также были установлены в папку Node modules.

134
00:10:38,250 --> 00:10:40,160
Поэтому, когда вы устанавливаете Express,

135
00:10:40,160 --> 00:10:45,020
это сразу же вызовет все его зависимости также будут установлены, потому что

136
00:10:45,020 --> 00:10:50,980
Express потребует этих других модулей Node для выполнения своей работы.

137
00:10:50,980 --> 00:10:54,590
Кроме того, в Express также вы увидите файл index.js.

138
00:10:54,590 --> 00:11:00,125
Таким образом, это отправная точка для нашего модуля Express Node и

139
00:11:00,125 --> 00:11:05,690
обратите внимание, в частности, что файл index.js просто говорит, что module.exports требует lib express.

140
00:11:05,690 --> 00:11:12,645
Таким образом, фактический код для самого модуля Express находится внутри этого проекта lib,

141
00:11:12,645 --> 00:11:16,225
папка lib здесь, и вы можете увидеть детали.

142
00:11:16,225 --> 00:11:20,900
Поэтому, если вам интересно увидеть детали самого Экспресс, вы можете пойти и посмотреть

143
00:11:20,900 --> 00:11:25,560
туда, но снова это может быть немного слишком много для вас в этот момент.

144
00:11:25,560 --> 00:11:31,815
На данный момент просто примите тот факт, что Express будет делать свою работу так, как ожидалось.

145
00:11:31,815 --> 00:11:38,450
Но я думал, что это будет интересный опыт, чтобы посетить папку модуля Node,

146
00:11:38,450 --> 00:11:45,435
чтобы посмотреть на структуру одного конкретного стороннего модуля Node немного более подробно.

147
00:11:45,435 --> 00:11:48,530
Кроме того, вы заметите, что

148
00:11:48,530 --> 00:11:52,010
здесь есть другой файл под названием package-lock.json, который установлен.

149
00:11:52,010 --> 00:11:56,690
Теперь это устанавливается более новыми версиями npm.

150
00:11:56,690 --> 00:12:01,190
Файл package-lock.json автоматически генерируется

151
00:12:01,190 --> 00:12:06,259
npm, который хранит информацию о

152
00:12:06,259 --> 00:12:10,265
точном дереве, которое было сгенерировано при установке

153
00:12:10,265 --> 00:12:14,630
других модулей Node, и это очень полезно, когда вам

154
00:12:14,630 --> 00:12:22,660
нужно сделать установку модулей Node в другом месте.

155
00:12:22,660 --> 00:12:27,620
Так, например, если вы загружаете репозиторий Git и

156
00:12:27,620 --> 00:12:32,865
попытаетесь воссоздать этот проект на другом компьютере,

157
00:12:32,865 --> 00:12:39,050
вы просто напечатаете npm install в командной строке, и

158
00:12:39,050 --> 00:12:45,810
это предложит вашему приложению Node автоматически установить все, что указано в зависимостях здесь для вас.

159
00:12:45,810 --> 00:12:53,335
При создании пакета lock.json хранит дополнительную информацию, которая используется

160
00:12:53,335 --> 00:13:01,805
npm для правильной установки всех модулей npm, которые необходимы.

161
00:13:01,805 --> 00:13:05,090
Теперь на данный момент вам не нужно беспокоиться о деталях того,

162
00:13:05,090 --> 00:13:08,290
что есть внутри файла package-lock.json.

163
00:13:08,290 --> 00:13:15,550
С этим мы завершаем этот урок, где мы изучили некоторые детали об Экспресс.