Size: a a a

Webpack — русскоговорящее сообщество

2019 June 11

👤U

👤 User in Webpack — русскоговорящее сообщество
И не достаточно ли мне в большинстве случаев require.ensure([], (require) => {const a = require('a');})
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
👤 User
Можете мне объяснить про require.ensure?
Первый параметр - модули, которые будут чанкнуты и тут же вызваны, а в функции (второй параметр) - модули будут добавлены в чанк, если я их вызвал, но тут я уже сам рулю порядком вызова?
Да
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
А на второй вопрос?
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
👤 User
И не достаточно ли мне в большинстве случаев require.ensure([], (require) => {const a = require('a');})
Эншур нужен чтобы дождатся загрузки чанка с модулями которые тебе нужеы
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Он не импортит их но проверяет что уже может это сделать
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
Я пока не понял именно концепцию первого и второго параметра.
Почему я и там и там делаю require каких-то модулей.
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
А ну, допустим в первом параметре я могу указать либы, без которых ваще промис бессмысленен, а в самом промисе уже подключить модули, которые без тех либ просто не сработают?
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
👤 User
А ну, допустим в первом параметре я могу указать либы, без которых ваще промис бессмысленен, а в самом промисе уже подключить модули, которые без тех либ просто не сработают?
Достаточно указать в эншуре либу которую будешь грузить в колбеке, а эншур функция сама проверит все ли зависимости этой либы загружены и тогда вызовет колбек
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Может для каких то неявных зависимостей типо полифилов надо указывать и их тоже в эншуре, тут хз, не эксперементировал с этим
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
Ладно, в рамках обучения лучше действительно первый параметр пустым массивом кидать. Чтоб не наворотить.
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
Спасибо за ответы.
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
👤 User
Ладно, в рамках обучения лучше действительно первый параметр пустым массивом кидать. Чтоб не наворотить.
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Из доки вебпака про первый аргумент
dependencies: An array of strings declaring all modules required for the code in the callback to execute.
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
Что-то типа самодокументирования?
Если колбэк вдруг большой, я все равно заранее описал, что он использует?
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
👤 User
Что-то типа самодокументирования?
Если колбэк вдруг большой, я все равно заранее описал, что он использует?
Не, я кажется понял, то что передается в массив судя по доке вебпак выделит в отдельный чанк, и  это будет асинхронный импорт. Твой код начинает выполнение, доходит то этого места и начинает скачивать этот выделенный чанк. Когда он скачался вызывается колбек, в колбеке ты можешь подключать зависимости из основного бандла который был загружен до этого, для этого там тоже рекваер
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
Так там в той же доке написано, что он все равно в этот чанк вынесет то, что в колбэке отреквайрено
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
require.ensure('./a', (require) => {require('./b')})
В итоге в чанке есть и a и b
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Я так понял это касается только того что в массиве, зачем дублировать код и в чанке и бандле
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Надо эксперементировать чтоб сказать наверняка, но с тз логики массив как раз и нужен для того чтобы описать что положить в чанк
источник

👤U

👤 User in Webpack — русскоговорящее сообщество
То то и оно что я уже тестил. Куда не воткни модуль - он все равно окажется в асинхронном чанке.
источник