В чем разница между этими двумя инструкциями по импорту?

#meteor #ecmascript-6

#meteor #ecmascript-6

Вопрос:

В Meteor 1.4, в чем разница между этими двумя операторами импорта в клиентском коде и в коде сервера? Почему?

Клиентский код:

 import { Items } from '../imports/api/items.js';
  

Серверный код:

 import '../imports/api/items.js';
  

Комментарии:

1. В первом фрагменте есть Items идентификатор, который вы можете использовать в модуле; во втором фрагменте его нет?

Ответ №1:

Оба оператора выполнят указанный файл, однако первый добавит элемент в область видимости. Это может быть полезно, если файл имеет много экспортируемых файлов, и вас интересует только этот единственный класс / функция / объект / и т.д.

Второй используется для побочных эффектов, возникающих при его импорте (например, инициализации хранилища или чего-то подобного; признаюсь, я мало что знаю о meteor).

У Mozilla есть отличный ресурс для инструкции по импортуhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Комментарии:

1. Тогда с помощью серверного кода вы также импортируете Items коллекцию, верно? Просто с клиентским кодом вы делаете только то, что по сравнению с серверным кодом он выполняет все, что находится внутри этого файла.

2. «Импортируйте весь модуль только для побочных эффектов, без импорта каких-либо привязок». Что for side effects only, without importing any bindings означает?

3. Хотя я мало что знаю о meteor, возможно, это просто инициализация хранилища или добавление его в пространство имен или что-то в этом роде.

4. @FredCollins Нет, импорт всегда выполняет файл. Однако тот, который использует {…} from , также сделает экспортированную переменную доступной внутри текущего модуля. Итак, нет, в «серверном коде» экспорт может быть создан, но Items не импортирован.

5. @FredCollins Это то, что я сказал, да. Вы также можете просто попробовать это.