Разница между «require (x)» и «await import x» - PullRequest
2 голосов
/ 06 мая 2020

Этот вопрос может быть похож на Разница между «require (x)» и «import x» , но на самом деле это другое.

Я заметил использование из await import недавно, в Next. js проекты, такие как: https://github.com/zeit/next.js/blob/canary/examples/with-apollo/lib/apollo.js#L134

if (ssr && AppTree) {
    // Import `@apollo/react-ssr` dynamically.
    // We don't want to have this in our client bundle.
    const { getDataFromTree } = await import('@apollo/react-ssr')
}

На первый взгляд, я считаю, что использование await import('@apollo/react-ssr') позволяет использовать import в исходном коде (условно) вместо импорта модуля @apollo/react-ssr на верхнем уровне. Цель состоит в том, чтобы уменьшить размер сгенерированного пакета для браузера (браузер не будет содержать @apollo/react-ssr пакет).

До сих пор я всегда использовал const reactSSR = require('@apollo/react-ssr') для условного импорта пакетов. Интересно, какая разница между обоими способами.

Может быть, использовать await import('@apollo/react-ssr') лучше, потому что он позволяет раскидывать деревья? Есть ли "минусы" его использования по сравнению с require?

...