Last updated
Last updated
Иногда бывает удобно разделить крупное приложение на части и подгружать компоненты с сервера только тогда, когда в них возникнет потребность. Для этого Vue позволяет определить компонент как функцию-фабрику, асинхронно возвращающую определение компонента. Vue вызовет фабричную функцию только тогда, когда компонент действительно понадобится, и закэширует результат для дальнейшего использования. Например:
Функция-фабрика принимает параметр resolve
— коллбэк, который вызывается после того, как определение компонента получено от сервера. Кроме того, можно вызвать reject(reason)
, если загрузка по какой-либо причине не удалась. Мы используем setTimeout
исключительно в демонстрационных целях; как именно получать компонент в реальной ситуации — решать только вам самим. Один из удачных подходов — это использовать асинхронные компоненты в связке с функциями Webpack по разделению кода:
Вы также можете вернуть Promise
в функции-фабрике, так что с Webpack 2 и синтаксисом ES2015 можно сделать так:
При использовании локальной регистрации компонентов, вы также можете непосредственно указывать функцию, которая возвращает Promise
:
Фабрика асинхронного компонента также может возвращать объект следующего формата:
Обратите внимание, что вы должны использовать версии 2.4.0+ если вы хотите использовать указанный выше синтаксис для компонентов маршрута.