#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 Это то, что я сказал, да. Вы также можете просто попробовать это.