#javascript #vue.js #single-page-application #nuxt.js
#javascript #vue.js #одностраничное приложение #nuxt.js
Вопрос:
Моя цель — лучшее решение для первого контентного рисования с Vue.js или Nuxt.js
Я думаю, что лучшим решением является загрузка компонента с импортом после загрузки первых элементов.
Я не знаю, является ли это лучшим решением, я хотел бы услышать ваше мнение.
Каков наилучший способ кодирования?
Попытка:
Файл загружается с app.js
, как загрузить только время, когда я установил true
?
<template>
<h1>Hello World</h1>
<!-- First content here -->
<foo v-if="documentLoaded" />
</template>
mounted() {
document.onreadystatechange = () => {
if (document.readyState == "complete") {
console.log('Page completed with image and files!')
setTimeout(() => {
this.documentLoaded = true
}, 2000);
}
}
},
components: {
Foo: () => import(/* webpackChunkName: "component-foo" */ '~/components/foo')
}
Комментарии:
1. Похоже, вы также используете запрос этого файла в
index.html
. Вам это нужно там?2. github.com/maoberlehner/vue-lazy-hydration может быть, это поможет вам
3. @Aldarund Этот плагин загружается, даже когда его не было видно
Ответ №1:
Вы можете определить, когда динамически загружаемый компонент будет эффективно загружен, используя import, как вы сказали, в сочетании с v-if для компонента.
<mycomp v-if="readyStateComplete"/>
//readyStateComplete is a boolean from data.
Установка логического значения в true вызовет загрузку, затем инициализацию и отображение компонента.
mounted() {
document.onreadystatechange = () => {
if (document.readyState == "complete") {
console.log('Page completed with image and files!')
// HOW LOAD COMPONENTS HERE?
this.readyStateComplete = true
}
}
},
Если вы хотите, чтобы ваш компонент загружался одновременно с изображением, но отображался только после, используйте v-show вместо v-if.
Комментарии:
1. Но компонент
mycomp
загружает файл (.js) при отображении?2. С помощью show Он загружает файл во время инициализации родительского компонента, да. Проверьте инструмент разработки, и вы увидите.
3. Глобально с помощью import promise дочерний компонент загружается, когда это необходимо в родительском шаблоне. Это только с ложным начальным условием в v — если компонент не нужен в шаблоне, пока это условие не станет истинным.
4. В webpack используйте webpackchunkname внутри инструкции import, чтобы лучше видеть его в консоли.
5. В этом ответе есть все, чтобы добиться желаемого. Проблема с вашим консольным скриншотом. У вас может быть только один загружаемый компонент -foo. Проверьте, присваиваете ли вы одинаковое имя webpackchunkname двум компонентам, или, может быть, вы загружаете его во встроенном теге src в index.html