Как загрузить компонент после первого контентного рисования или первых элементов в Vue.js или Nuxt.js ?

#javascript #vue.js #single-page-application #nuxt.js

#javascript #vue.js #одностраничное приложение #nuxt.js

Вопрос:

Моя цель — лучшее решение для первого контентного рисования с Vue.js или Nuxt.js

Я думаю, что лучшим решением является загрузка компонента с импортом после загрузки первых элементов.

Я не знаю, является ли это лучшим решением, я хотел бы услышать ваше мнение.

Каков наилучший способ кодирования?

Попытка:

Файл загружается с app.js , как загрузить только время, когда я установил true ?

devtools

 <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