목차
1. 서문
1-1. 세 가지 변경 사항:
1-2를 반환해야 합니다. :
2. Vue 2.x와 Vue 3.x 정의 비교
2-1. 비동기 컴포넌트/라우팅 정의 비교
2-2. 선언 방법 비교
2-3. 비동기 구성요소 로딩 함수는 비교를 반환합니다.
3. Vue3 practice
3-1. 라우팅 지연 로딩 구현
3-2. 비동기 구성 요소 구현
웹 프론트엔드 View.js vue3 vite 비동기 구성 요소 및 라우팅의 지연 로딩을 적용하는 방법

vue3 vite 비동기 구성 요소 및 라우팅의 지연 로딩을 적용하는 방법

May 18, 2023 pm 04:52 PM
vue3 vite

1. 서문

1-1. 세 가지 변경 사항:

  • 비동기 구성 요소 선언 방법 변경: Vue 3.x에서는 비동기 구성 요소 선언을 표시하는 새로운 보조 함수를 추가합니다.

  • 비동기 구성 요소의 고급 선언 메소드의 구성요소 옵션 이름이 loader

  • 로 변경되었습니다. 로더에 바인딩된 구성요소 로딩 함수는 더 이상 확인 및 거부 매개변수를 수신하지 않으며 Promise

1-2를 반환해야 합니다. :

이제 Vue 3에서는 기능적 구성 요소가 순수 함수로 정의되므로 비동기 구성 요소 정의를 새로운 정의AsyncComponent 도우미로 래핑하여 명시적으로 정의해야 합니다.

2. Vue 2.x와 Vue 3.x 정의 비교

2-1. 비동기 컴포넌트/라우팅 정의 비교

  • 2-1-1. Vue 2.x에서는 비동기 컴포넌트만 선언합니다.

const asyncPage = () => import('./views/home.vue')
로그인 후 복사
로그인 후 복사
  • 2-1-2 Vue 3.x에서는 비동기 구성요소 가져오기를 보조 함수인 DefineAsyncComponent를 사용하여 명시적으로 선언해야 합니다. 다음과 같습니다:

<template>
  <div>
    <h2>Async Components</h2>
    <p>异步组件测试</p>
    <child />
  </div>
</template>
<script>
import { defineAsyncComponent } from &#39;vue&#39;
const child = defineAsyncComponent(() => import(&#39;@/components/async-component-child.vue&#39;))
export default {
  name: &#39;async-components&#39;,
  components:{
    &#39;child&#39;: child
  }
};
</script>
로그인 후 복사

2-2. 선언 방법 비교

  • 2-2-1. Vue 2.x의 비동기 구성 요소 선언에는 보다 발전된 선언 방법이 있습니다. 다음과 같습니다:

const asyncPageWithOptions  = {
  component: () => import(&#39;./views/home.vue&#39;),
  delay: 200,
  timeout: 3000,
  error: ErrorComponent,
  loading: LoadingComponent
}
로그인 후 복사

따라서 다음 비동기 구성 요소 선언:

const asyncPage = () => import(&#39;./views/home.vue&#39;)
로그인 후 복사
로그인 후 복사

const asyncPageWithOptions  = {
  component: () => import(&#39;./views/home.vue&#39;)
}
로그인 후 복사
  • 2-2-2와 동일합니다. 비동기 구성 요소는 Vue 3.x에서도 이와 같이 선언될 수 있습니다. 컴포넌트만 로더로 변경하면 됩니다. 다음과 같습니다:

const asyncPageWithOptions  = defineAsyncComponent({
  loader: () => import(&#39;./views/home.vue&#39;),
  delay: 200,
  timeout: 3000,
  error: ErrorComponent,
  loading: LoadingComponent
})
로그인 후 복사

2-3. 비동기 구성요소 로딩 함수는 비교를 반환합니다.

  • 2-3-1. Vue 2.x에서 확인 및 거부를 수신합니다.

// 2.x version
const oldAsyncComponent = (resolve, reject) => {
  /* ... */
}
로그인 후 복사
  • 2-3-2 .Vue 3.x에서는 항상 Promise를 반환합니다.

// 3.x version
const asyncComponent = defineAsyncComponent(
  () => new Promise((resolve, reject) => {
      /* ... */
  })
)
로그인 후 복사

Vue 3.x의 비동기 컴포넌트 로딩 함수는 더 이상 확인 및 거부를 수신하지 않으며 항상 Promise를 반환해야 합니다. 즉, Vue 3.x에서는 비동기 구성 요소를 정의하기 위해 팩토리 함수를 통해 확인 콜백을 수신하는 것이 더 이상 지원되지 않습니다.

// 在 Vue 3.x 中不适用
export default {
  components: {
    asyncPage: resolve => require([&#39;@/components/list.vue&#39;], resolve)
  },
}
로그인 후 복사

3. Vue3 practice

팁: Vite 도구를 사용하여 프로젝트를 빌드하는 경우 로컬 개발 중에 라우팅 및 지연 로딩을 위해 가져오기를 사용하세요. 정상적으로 로드할 수 있지만 프로덕션에 패키지하면 경고가 표시됩니다. 환경에서는 오류가 보고되고 페이지가 정상적이지 않습니다. 다음 두 가지 방법을 사용하면 표시가 가능합니다.

3-1. 라우팅 지연 로딩 구현

  • 3-1-1.defineAsyncComponent 메서드

// router/index.js
import { defineAsyncComponent } from &#39;vue&#39;
const _import = (path) => defineAsyncComponent(() => import(`../views/${path}.vue`));
const routes = [
  {
    path: &#39;/async-component&#39;,
    name: &#39;asyncComponent&#39;,
    component: _import(&#39;home&#39;),
  }
];
로그인 후 복사
  • 3-1-2.import.meta.glob 메서드

// 1.上面的方法相当于一次性加载了 views 目录下的所有.vue文件,返回一个对象
const modules = import.meta.glob(&#39;../views/*/*.vue&#39;);
const modules ={
    "../views/about/index.vue": () => import("./src/views/about/index.vue")
}
// 2.动态导入的时候直接,引用
const router = createRouter({
  history: createWebHistory(),
  routes: [
    // ...
    {
      path: &#39;xxxx&#39;,
      name: &#39;xxxxx&#39;,
      // 原来的方式,这个在开发中可行,但是生产中不行
      // component: () => import(`../views${menu.file}`),
      // 改成下面这样
      component: modules[`../views${filename}`]
    }
    // ...          
  ],
})
로그인 후 복사

3-2. 비동기 구성 요소 구현

<template>
  <div>
    <h2>Async Components</h2>
    <p>异步组件测试</p>
    <child></child>
  </div>
</template>
<script>
import { defineAsyncComponent } from &#39;vue&#39;
const child = defineAsyncComponent(() => import(&#39;@/components/async-component-child.vue&#39;))
export default {
  name: &#39;async-components&#39;,
  components:{
    &#39;child&#39;: child
  }
};
</script>
로그인 후 복사

위 내용은 vue3 vite 비동기 구성 요소 및 라우팅의 지연 로딩을 적용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue3+TS+Vite 개발 기술: SEO 최적화 방법 Vue3+TS+Vite 개발 기술: SEO 최적화 방법 Sep 10, 2023 pm 07:33 PM

Vue3+TS+Vite 개발 스킬: SEO 최적화 수행 방법 SEO(SearchEngineOptimization)는 웹사이트의 구조, 콘텐츠, 키워드를 최적화하여 검색 엔진에서 상위에 랭크되도록 하여 웹사이트의 트래픽과 노출을 높이는 것을 말합니다. Vue3+TS+Vite와 같은 현대 프론트엔드 기술의 개발에 있어서 SEO를 어떻게 최적화하는가는 매우 중요한 문제입니다. 이 기사에서는 Vue3+TS+Vite 개발 기술과 방법을 소개합니다.

vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 vue3+vite: src에서 이미지를 동적으로 가져오기 위해 require를 사용할 때 오류를 해결하는 방법 May 21, 2023 pm 03:16 PM

vue3+vite:src는 require를 사용하여 이미지를 동적으로 가져오고 vue3+vite는 여러 이미지를 동적으로 가져옵니다. vue3을 사용하는 경우 require는 이미지를 사용할 수 없습니다. imgUrl:require(' .../assets/test.png') 와 같은 vue2는 typescript가 require를 지원하지 않기 때문에 가져오므로 이를 해결하는 방법은 다음과 같습니다. waitimport를 사용합니다.

Vue3에서 페이지의 일부 콘텐츠를 새로 고치는 방법 Vue3에서 페이지의 일부 콘텐츠를 새로 고치는 방법 May 26, 2023 pm 05:31 PM

페이지를 부분적으로 새로 고치려면 로컬 구성 요소(dom)의 다시 렌더링만 구현하면 됩니다. Vue에서 이 효과를 얻는 가장 쉬운 방법은 v-if 지시어를 사용하는 것입니다. Vue2에서는 v-if 명령을 사용하여 로컬 DOM을 다시 렌더링하는 것 외에도 새 빈 구성 요소를 만들 수도 있습니다. 로컬 페이지를 새로 고쳐야 할 경우 이 빈 구성 요소 페이지로 점프한 다음 다시 돌아올 수 있습니다. 빈 원본 페이지의 beforeRouteEnter 가드. 아래 그림과 같이 Vue3.X에서 새로 고침 버튼을 클릭하여 빨간색 상자 안에 DOM을 다시 로드하고 해당 로딩 상태를 표시하는 방법입니다. Vue3.X의 scriptsetup 구문에 있는 구성 요소의 가드에는

Vue3+TS+Vite 개발 기술: 프런트 엔드 보안 보호를 수행하는 방법 Vue3+TS+Vite 개발 기술: 프런트 엔드 보안 보호를 수행하는 방법 Sep 09, 2023 pm 04:19 PM

Vue3+TS+Vite 개발 기술: 프런트 엔드 보안 보호를 수행하는 방법 프런트 엔드 기술의 지속적인 개발로 인해 점점 더 많은 회사와 개인이 프런트 엔드 개발에 Vue3+TS+Vite를 사용하기 시작하고 있습니다. 그러나 이에 수반되는 보안 위험도 사람들의 관심을 끌었습니다. 이 기사에서는 몇 가지 일반적인 프런트 엔드 보안 문제에 대해 논의하고 Vue3+TS+Vite 개발 과정에서 프런트 엔드 보안을 보호하는 방법에 대한 몇 가지 팁을 공유합니다. 입력 유효성 검사 사용자 입력은 프런트엔드 보안 취약점의 주요 소스 중 하나인 경우가 많습니다. 존재하다

Vue3+TS+Vite 개발 기술: 도메인 간 요청 및 네트워크 요청을 최적화하는 방법 Vue3+TS+Vite 개발 기술: 도메인 간 요청 및 네트워크 요청을 최적화하는 방법 Sep 09, 2023 pm 04:40 PM

Vue3+TS+Vite 개발 기술: 도메인 간 요청 및 네트워크 요청을 최적화하는 방법 소개: 프런트 엔드 개발에서 네트워크 요청은 매우 일반적인 작업입니다. 페이지 로딩 속도와 사용자 경험을 개선하기 위해 네트워크 요청을 최적화하는 방법은 개발자가 고려해야 할 문제 중 하나입니다. 동시에 다른 도메인 이름으로 요청을 보내야 하는 일부 시나리오의 경우 도메인 간 문제를 해결해야 합니다. 이 기사에서는 Vue3+TS+Vite 개발 환경에서 도메인 간 요청 및 네트워크 요청 최적화 기술을 만드는 방법을 소개합니다. 1. 도메인 간 요청 솔루션

Vue3가 마크다운을 구문 분석하고 코드 강조 표시를 구현하는 방법 Vue3가 마크다운을 구문 분석하고 코드 강조 표시를 구현하는 방법 May 20, 2023 pm 04:16 PM

Vue로 블로그 프론트엔드를 구현하려면 마크다운 파싱을 구현해야 합니다. 코드가 있는 경우 코드 하이라이팅을 구현해야 합니다. markdown-it, vue-markdown-loader,marked,vue-markdown 등과 같은 Vue용 마크다운 구문 분석 라이브러리가 많이 있습니다. 이 라이브러리는 모두 매우 유사합니다. 여기서는 Marked가 사용되었고, 코드 하이라이팅 라이브러리로 하이라이트.js가 사용되었습니다. 구체적인 구현 단계는 다음과 같습니다. 1. 종속 라이브러리를 설치합니다. vue 프로젝트에서 명령 창을 열고 다음 명령 npminstallmarked-save//marked를 입력하여 markdown을 htmlnpmins로 변환합니다.

Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite 개발 팁: 데이터를 암호화하고 저장하는 방법 인터넷 기술의 급속한 발전으로 인해 데이터 보안 및 개인 정보 보호가 점점 더 중요해지고 있습니다. Vue3+TS+Vite 개발 환경에서 데이터를 암호화하고 저장하는 방법은 모든 개발자가 직면해야 하는 문제입니다. 이 기사에서는 개발자가 애플리케이션 보안 및 사용자 경험을 개선하는 데 도움이 되는 몇 가지 일반적인 데이터 암호화 및 저장 기술을 소개합니다. 1. 데이터 암호화 프런트엔드 데이터 암호화 프런트엔드 암호화는 데이터 보안을 보호하는 중요한 부분입니다. 일반적으로 사용되는

vue3+ts+axios+pinia를 사용하여 무의미한 새로 고침을 달성하는 방법 vue3+ts+axios+pinia를 사용하여 무의미한 새로 고침을 달성하는 방법 May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia는 무의미한 새로 고침을 실현합니다. 1. 먼저 프로젝트에서 aiXos 및 pinianpmipinia를 다운로드합니다--savenpminstallaxios--save2. AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

See all articles