1
00:00:00,000 --> 00:00:04,740
[МУЗЫКА]

2
00:00:04,740 --> 00:00:09,065
На этом уроке мы узнаем о том, как мы можем писать простые уведомления.

3
00:00:09,065 --> 00:00:11,454
Мы также узнаем о модулях Node и о том,

4
00:00:11,454 --> 00:00:16,885
как модули Node позволяют нам организовать наши приложения в несколько файлов.

5
00:00:16,885 --> 00:00:20,550
Мы также узнаем о различных видах модулей Node и

6
00:00:20,550 --> 00:00:26,450
как мы можем импортировать модули Node в наши файлы нашего приложения Node и

7
00:00:26,450 --> 00:00:29,260
использовать их в нашем приложении.

8
00:00:29,260 --> 00:00:34,640
Во-первых, давайте узнаем о модулях Node чуть более подробно в этой лекции.

9
00:00:36,720 --> 00:00:39,320
JavaScript, когда он был впервые разработан

10
00:00:39,320 --> 00:00:43,900
был предназначен для того, чтобы быть языком сценариев, который будет использоваться в браузере.

11
00:00:43,900 --> 00:00:49,510
Таким образом, небольшая область, в которой она должна была использоваться, - это браузер.

12
00:00:49,510 --> 00:00:54,695
Теперь, как вы понимаете из этой специализации, JavaScript вышел

13
00:00:54,695 --> 00:01:00,822
далеко за рамки своего первоначального намерения, и теперь используется для написания приложений.

14
00:01:00,822 --> 00:01:04,688
Оба для запуска с использованием фреймворков в браузере, а

15
00:01:04,688 --> 00:01:09,880
также для запуска приложений на стороне сервера, как мы увидим в этом курсе.

16
00:01:11,020 --> 00:01:16,100
Первоначально JavaScript никогда не был разработан с какими-либо общими библиотеками.

17
00:01:16,100 --> 00:01:20,907
Если вы посмотрите на стандартные языки программирования, такие как C, C ++, Java и так далее,

18
00:01:20,907 --> 00:01:24,374
все они имеют стандартные библиотеки, которые позволяют вам получить доступ к

19
00:01:24,374 --> 00:01:26,730
базовому оборудованию.

20
00:01:26,730 --> 00:01:32,170
А также предоставить структурированный способ организации приложения в

21
00:01:32,170 --> 00:01:36,880
несколько файлов, а затем объединить их вместе при создании приложения.

22
00:01:36,880 --> 00:01:41,580
JavaScript никогда не имел такой поддержки, когда он начинался.

23
00:01:41,580 --> 00:01:45,850
Потому что, как мы понимаем, JavaScript не был разработан

24
00:01:45,850 --> 00:01:48,330
для той цели, для которой он используется сегодня.

25
00:01:49,420 --> 00:01:50,500
Но, конечно,

26
00:01:50,500 --> 00:01:55,710
люди поняли трудности, когда вам нужно расширить JavaScript

27
00:01:55,710 --> 00:02:01,340
за пределы одного файла, который используется в качестве языка сценариев для браузера.

28
00:02:01,340 --> 00:02:04,750
Теперь, если у вас очень большое приложение JavaScript,

29
00:02:04,750 --> 00:02:10,020
становится громоздким писать весь код в одном файле.

30
00:02:10,020 --> 00:02:14,890
И, очевидно, вы хотите, чтобы результаты могли разбить ваше приложение на

31
00:02:14,890 --> 00:02:16,830
несколько фактов.

32
00:02:16,830 --> 00:02:21,760
Теперь, в отличие от традиционных языков программирования, JavaScript никогда не имел способа

33
00:02:21,760 --> 00:02:26,945
распространения кода на несколько файлов, а затем объединения их вместе.

34
00:02:26,945 --> 00:02:32,095
Таким образом, здесь появился API CommonJS, чтобы заполнить этот

35
00:02:32,095 --> 00:02:35,859
пробел, который заполняет потребности в каком-то общем приложении.

36
00:02:35,859 --> 00:02:42,832
И этот формат CommonJS определяет формат модуля, который может быть использован для

37
00:02:42,832 --> 00:02:47,282
разбиения вашего приложения JavaScript на несколько файлов.

38
00:02:47,282 --> 00:02:51,151
И узел принимает этот формат CommonJS для

39
00:02:51,151 --> 00:02:55,349
организации нашего приложения JavaScript в несколько файлов.

40
00:02:55,349 --> 00:02:59,861
И в JavaScript, с форматом CommonJS,

41
00:02:59,861 --> 00:03:03,891
каждый файл становится собственным модулем Node.

42
00:03:03,891 --> 00:03:09,841
Итак, давайте узнаем немного больше о модулях Node в остальной части этой лекции.

43
00:03:09,841 --> 00:03:11,931
Как я только что упомянул,

44
00:03:11,931 --> 00:03:16,280
каждый файл в приложении Node становится собственным модулем Node.

45
00:03:16,280 --> 00:03:22,290
Таким образом, файл или файл JavaScript определяет границу для модуля Node.

46
00:03:22,290 --> 00:03:26,160
Таким образом, внутри этого файла спецификация CommonJS

47
00:03:26,160 --> 00:03:30,770
предоставляет переменную, называемую переменной модуля, которая является объектом JavaScript.

48
00:03:30,770 --> 00:03:36,070
И это дает вам доступ к текущему определению модуля в файле.

49
00:03:36,070 --> 00:03:41,020
И на этом объекте модуля у вас есть

50
00:03:41,020 --> 00:03:45,120
свойство module.exports, которое определяет экспорт из текущего модуля.

51
00:03:45,120 --> 00:03:49,010
Поэтому, когда вы назначаете что-то свойству module.exports,

52
00:03:49,010 --> 00:03:54,100
это становится экспортируемым значением из текущего модуля.

53
00:03:54,100 --> 00:03:59,070
Таким образом, когда этот модуль импортируется в другой файл

54
00:03:59,070 --> 00:04:03,130
нашего приложения Node, то все, что экспортируется из этого модуля,

55
00:04:03,130 --> 00:04:06,860
становится доступным во втором приложении.

56
00:04:06,860 --> 00:04:09,330
Мы рассмотрим пример в короткое время.

57
00:04:09,330 --> 00:04:13,080
Когда вам нужно импортировать модуль в другой модуль,

58
00:04:13,080 --> 00:04:17,700
это где функция require используется для импорта модуля.

59
00:04:17,700 --> 00:04:23,220
Таким образом, как мы заметим в короткое время, функция require используется

60
00:04:23,220 --> 00:04:28,800
для импорта модуля Node, который определен в другом файле в текущий файл

61
00:04:28,800 --> 00:04:32,790
, так что он может быть использован в нашем приложении узла.

62
00:04:33,800 --> 00:04:36,750
Модули узлов могут быть трех категорий.

63
00:04:36,750 --> 00:04:41,842
У нас есть файловые модули Node, где мы определяем модуль Node

64
00:04:41,842 --> 00:04:46,270
внутри файла, в нашем приложении, и мы используем его в нашем приложении.

65
00:04:46,270 --> 00:04:51,100
Затем у нас есть основные модули, которые уже являются частью Node.

66
00:04:51,100 --> 00:04:55,610
Дизайнеры узлов сохранили эти основные модули намеренно маленькими

67
00:04:55,610 --> 00:04:57,970
, так что узел может быть сохранен маленьким.

68
00:04:57,970 --> 00:05:01,060
А также обеспечить достаточную функциональность

69
00:05:01,060 --> 00:05:05,310
, чтобы внешние дизайнеры модулей могли добавить в свои собственные

70
00:05:05,310 --> 00:05:10,320
функциональные возможности, которые могут быть использованы при разработке приложений Node.

71
00:05:10,320 --> 00:05:18,580
Таким образом, основные модули включают путь, файловую систему, os, util и несколько других.

72
00:05:18,580 --> 00:05:22,670
Мы столкнемся с некоторыми из них, пока мы идем по этому курсу.

73
00:05:22,670 --> 00:05:25,010
Тогда у нас есть внешние модули Node.

74
00:05:25,010 --> 00:05:29,650
Это сторонние модули Node, которые разрабатываются разработчиками Node, а

75
00:05:29,650 --> 00:05:33,210
затем становятся доступными через экосистему Node.

76
00:05:33,210 --> 00:05:40,586
Таким образом, эти внешние модули Node могут быть установлены в нашей системе с помощью NPM.

77
00:05:40,586 --> 00:05:45,363
Так много раз вы увидите нас, используя NPM install и

78
00:05:45,363 --> 00:05:50,937
имя модуля Node, и это будет включено в

79
00:05:50,937 --> 00:05:57,010
наше приложение Node_modules в папке с именем node_modules.

80
00:05:57,010 --> 00:06:05,000
И мы встретимся с внешними модулями Node в более позднем уроке в этом курсе.

81
00:06:05,000 --> 00:06:07,630
Как мы используем модули Node?

82
00:06:07,630 --> 00:06:13,720
Когда вам нужно использовать модуль Node в другом файле Node в вашем приложении,

83
00:06:13,720 --> 00:06:16,960
вы будете использовать функцию require.

84
00:06:16,960 --> 00:06:21,180
Я кратко упомянул о функции require в одном из предыдущих

85
00:06:21,180 --> 00:06:22,440
слайдов там.

86
00:06:22,440 --> 00:06:26,420
Функция require для файловых модулей Node,

87
00:06:26,420 --> 00:06:29,073
вы укажете это как require, а

88
00:06:29,073 --> 00:06:33,955
затем укажите путь к файлу, который содержит модуль Node.

89
00:06:33,955 --> 00:06:39,560
Таким образом, вы бы сказали require./, имя модуля, если файл существует

90
00:06:39,560 --> 00:06:45,590
в текущей папке, записанной в которой ваше приложение Node существует.

91
00:06:45,590 --> 00:06:51,060
Таким образом, это указывает относительный путь к файлу из текущего местоположения.

92
00:06:51,060 --> 00:06:54,247
А также для основных и внешних модулей,

93
00:06:54,247 --> 00:07:00,260
вы обычно указываете их, сказав require и имя модуля.

94
00:07:00,260 --> 00:07:03,090
Вы явно указываете путь для него.

95
00:07:03,090 --> 00:07:06,200
Если это основной модуль, он уже является частью узла, и поэтому

96
00:07:06,200 --> 00:07:08,120
он будет автоматически включен.

97
00:07:08,120 --> 00:07:13,365
Если это внешний модуль, то он будет установлен либо внутри

98
00:07:13,365 --> 00:07:18,978
папки node_modules в текущей папке, либо если узел не

99
00:07:18,978 --> 00:07:25,327
найдет внешний модуль в папке node_modules в текущей папке,

100
00:07:25,327 --> 00:07:31,058
он перейдет к следующей папке более высокого уровня в поисках этого модуля Node.

101
00:07:31,058 --> 00:07:33,989
Или следующая папка более высокого уровня и

102
00:07:33,989 --> 00:07:39,143
вверх по иерархии, пока она не найдет модули Node, которые

103
00:07:39,143 --> 00:07:44,390
затем будут импортированы для использования в вашем приложении Node.

104
00:07:44,390 --> 00:07:48,040
Если он не может найти модуль Node вверх по иерархии,

105
00:07:48,040 --> 00:07:52,640
то он, очевидно, вызовет ошибку, говорящую о том, что модуль Node отсутствует.

106
00:07:52,640 --> 00:07:57,690
Этот способ организации очень полезен в том, как

107
00:07:57,690 --> 00:08:03,220
структура приложения Node определяется, как мы встретимся

108
00:08:04,840 --> 00:08:08,460
больше в более поздней части этого курса.

109
00:08:08,460 --> 00:08:13,530
С этим быстрым введением в модули Node, давайте посмотрим на пример,

110
00:08:13,530 --> 00:08:19,150
который мы будем делать в рамках упражнения, которое следует за этой лекцией.

111
00:08:19,150 --> 00:08:23,210
Как мы узнали в этой лекции,

112
00:08:23,210 --> 00:08:28,040
граница модуля Node определяется файлом, который содержит код здесь.

113
00:08:28,040 --> 00:08:34,060
Итак, здесь у меня есть пример модуля Node, определенного как rectangle.js.

114
00:08:34,060 --> 00:08:38,113
И там вы можете видеть, что я использую два экспорта здесь,

115
00:08:38,113 --> 00:08:42,096
я говорю exports.perimeter и exports.area.

116
00:08:42,096 --> 00:08:47,401
И вы увидите, что здесь я не использую module.exports, потому что

117
00:08:47,401 --> 00:08:52,740
сам экспорт также является сокращенной версией module.exports.

118
00:08:52,740 --> 00:08:57,057
Поэтому, если вы не хотите использовать module.exports полностью, но

119
00:08:57,057 --> 00:09:01,804
вместо этого просто хотите экспортировать, то это еще один способ записи

120
00:09:01,804 --> 00:09:06,316
тех элементов, которые экспортируются из текущих модулей Node.

121
00:09:06,316 --> 00:09:09,875
Итак, здесь мы экспортируем две функции, периметр и

122
00:09:09,875 --> 00:09:12,750
область из прямоугольного модуля Node.

123
00:09:12,750 --> 00:09:17,679
Теперь, чтобы использовать этот модуль в другом файле,

124
00:09:17,679 --> 00:09:21,870
давайте посмотрим на файл index.js.

125
00:09:21,870 --> 00:09:27,240
И в самой первой строке в этом файле вы заметите, что она говорит

126
00:09:27,240 --> 00:09:32,220
var rect = require и в кавычках,. /прямоугольник.

127
00:09:32,220 --> 00:09:36,650
Таким образом, это указывает, что модуль прямоугольника будет важен здесь,

128
00:09:36,650 --> 00:09:42,090
я использовал в этом конкретном файле приложения.

129
00:09:42,090 --> 00:09:45,670
Так вот, как мы определяем модули Node, и

130
00:09:45,670 --> 00:09:50,080
это пример файлового модуля Node.

131
00:09:50,080 --> 00:09:52,197
Мы встретимся с

132
00:09:52,197 --> 00:09:56,438
модулями ядра и внешнего узла в последующих уроках этого курса.

133
00:09:56,438 --> 00:10:02,669
[ МУЗЫКА]