Dynamic Import Expressions
Last updated
Last updated
Вирази динамічного імпорту — це нова функція та частина ECMAScript, яка дозволяє користувачам асинхронно запитувати модуль у будь-якій довільній точці вашої програми. TC39 Комітет JavaScript має власну пропозицію, яка знаходиться на етапі 3, і вона називається .
Крім того, webpack bundler має функцію під назвою , яка дозволяє вам розділити ваш пакет на частини, які можна завантажено асинхронно пізніше. Наприклад, це дозволяє спочатку обслуговувати мінімальний пакет початкового завантаження, а потім асинхронно завантажувати додаткові функції.
Цілком природно думати (якщо ми використовуємо webpack у нашому робочому процесі розробників), що [вирази динамічного імпорту TypeScript 2.4](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#dynamic- import-expressions) автоматично створюватиме блоки пакетів і автоматично розділятиме ваш остаточний пакет JS. АЛЕ це не так просто, як здається, оскільки залежить від конфігурації tsconfig.json, з якою ми працюємо.
Річ у тім, що при розділенні коду webpack підтримує дві подібні техніки: використання import() (бажано, пропозиція ECMAScript) і require.ensure() (успадковане, специфічне для webpack). Це означає, що очікуваний результат TypeScript залишить оператор import() таким, яким він є замість того, щоб транспілювати його на щось інше.
Давайте розглянемо приклад, щоб зрозуміти, як налаштувати webpack + TypeScript 2.4.
У наступному коді я хочу ліниво завантажити бібліотеку moment, але мене також цікавить розділення коду, що означає наявність бібліотеки моментів в окремому фрагменті JS (файлу JavaScript), який завантажуватиметься лише за потреби .
Це tsconfig.json:
Важливі примітки:
Повний приклад можна переглянути [тут][динамічний імпорткод].
За допомогою "module": "esnext" TypeScript створює оператор mimic import(), який буде введено для розділення коду Webpack. – Для отримання додаткової інформації прочитайте цю статтю: -splitting-integration-with-typescript-2-4/).