Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Точка Входа

В курсе "Введение в программирование" использовался только один вид импортов — импорт из локальных файлов. Подобные импорты отличает указание относительного пути (./) в секции from.

import { length } from './strings.js';
import factorial from './factorial.js';

Все подобные импорты объединяет то, что в них мы обращаемся к конкретному файлу, лежащему где-то рядом. Его всегда можно открыть и посмотреть содержимое. Но в реальных проектах и дальше в курсах, вам будут встречаться нелокальные импорты:

import path from 'path';
import fs from 'fs';
import lodash from 'lodash';

Как видите, в импортах выше, нет начального ./. Некоторые из них, по сути, тоже локальные — это импорты из стандартной библиотеки. В указанном примере к ним относятся первые два импорта из модулей path и fs. Эти модули лежат где-то в системных директориях — там, куда они были помещены во время установки Node.js. Посмотреть список всех модулей стандартной библиотеки можно в официальной документации https://nodejs.org/api/modules.html

Самое интересное происходит при импорте сторонних npm-пакетов: import lodash from 'lodash';. Дело в том, что пакет — не то же самое что и модуль. Модуль — один файл, а пакет — набор файлов, в которые входят модули и package.json. Посмотрите содержимое репозитория lodash. В корне проекта находится, наверное, сотня файлов.

lodash files

Возникает закономерный вопрос. Если внутри одного пакета множество модулей, то что же импортируется если мы пишем import lodash from 'lodash'?

В npm принято соглашение, что по умолчанию всегда импортируется файл index.js, находящийся в корне проекта. Этот файл является точкой входа в пакет. Все остальные модули, как правило, собираются внутри index.js. Но это поведение можно изменить. За это отвечает свойство main (главный) в файле package.json. Посмотрите его значение в пакете lodash.

Значение свойства main может выглядеть так:

{
  "main": "dist/index.js"
}

Сам файл dist/index.js в репозитории будет отсутствовать, как впрочем и директория dist. Как вы помните из урока про babel, эта директория формируется только в момент публикации пакета и заливается в npm, но в репозиторий ее не добавляют.


<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».