vue3는 각 장면의 과도한 로딩 문제를 어떻게 해결합니까?

WBOY
풀어 주다: 2023-05-18 15:25:06
앞으로
1849명이 탐색했습니다.

    vue3 공통 과잉

    1. 페이지를 처음 열 때 로딩

    루트 디렉터리 index를 통해 페이지를 처음 열 때 콘텐츠를 로드하는 것이 가장 쉽습니다. <div id='app'>의 html 파일 index.html文件

    <div id=&#39;app&#39;> 里添加内容,就是过度内容

    <body>
       <div id="app">
          <h2>加载中......</h2>
       </div>
       <script type="module" src="/src/main.js"></script>
    </body>
    로그인 후 복사

    当vue实例创建完成,通过.mount() 方法挂载到 id=&#39;app&#39; 的div 里,会替换掉里的loading内容;

    2、 路由切换时、异步组件 loading

    • 路由切换过度 需要先了解一个,vue3 的内置组件 <Suspense>

    • <Suspense> 提供 2 个插槽 ????;

    • #default : 一个要加载的内容 ;

    • #fallback: 一个加载种显示的内容;

    <Suspense>
    	<template #default>
    		<router-view />
    	</template>
    	<template #fallback>
    		<h2>加载中......</h2>
    	</template>
    </Suspense>
    로그인 후 복사

    同理:( 异步组件的切换 )

    <template>
    	<Suspense>
    		<template #default>
    			<AsyncComp  v-if = &#39;vitblie&#39; />
    		</template>
    		<template #fallback>
    			<h2>加载中......</h2>
    		</template>
    	</Suspense>
    	
    	<button @click=&#39;open&#39;> 切换 </button>
    </template>
    <script setup>
    	import { defineAsyncComponent , ref } from &#39;vue&#39;;
    	const asyncComp = defineAsyncComponent(()=>important(&#39;./asyncComp.vue));
    
    	const vitblie = ref(false);
    	function open(){
    		vitblie.value = !vitblie.value;
    	}
    </script>
    로그인 후 복사

    异步组件也是可以使用相同的方法

    添加过度动画

    添加过度动画需要先了解 vue3 内置组件 <Component><Transition> ????

    <Component>: 非常简单只有一个 is 显示该组件, 可以用来组件切换 如:

     <template>
     	<Component :is="visible ? TestComp : &#39;&#39; " /> 
     </template>
    로그인 후 복사

    <Transition> : 里插入的内容 显示/隐藏 添加过度动画 ,通过 name 属性来拼接 class 如 :

     <template>
     	<transition name=&#39;anime&#39;>
     		<TestComp v-if=&#39;visblte&#39; /> 
     	</transition>
     </template>
    로그인 후 복사

    设置样式通过 name 属性 这里

    anime-enter-active: 过度态 ( 设置 隐藏 => 显示 过度的时间等参数)
    anime-leave-active: 过度态 ( 设置 显示 => 隐藏 过度的时间等参数)

    anime-enter-from => anime-enter-to 隐藏 => 显示 开始和结束的样式
    anime-leave-from => anime-leave-to에 콘텐츠가 너무 많습니다

    <template>
    	<router-view v-slot={ Component } >
    		<transition name=&#39;anime&#39;>
    			<component :is="Component" />
    		<transition>
    	</router-view>
    <template>
    <style scoped>
    .anime-enter-active,
    .anime-leave-active {
    	transition: all 1s;
    }
    .anime-leave-from { transform: translateY(0); }
    .anime-leave-to { transform: translateY(-100%); }
    
    .anime-enter-from { transform: translateY(100%); }
    .anime-enter-to { transform: translate(0); }
    </style>
    로그인 후 복사
    vue 인스턴스가 생성되면 .mount() 메소드 >id='app'가 있는 div에서 loading 콘텐츠가 대체됩니다.

    2. 컴포넌트 로딩

    • 🎜과도하게 전환하려면 먼저 vue3 < Suspense>; 🎜
    • 🎜 <Suspense>2 슬롯을 제공합니다????; 🎜#default : 로드할 콘텐츠 🎜
    • 🎜#fallback: 로드하는 종에 의해 표시되는 콘텐츠 🎜
    • 🎜rrreee 🎜🎜유사: (비동기 컴포넌트 전환)🎜🎜rrreee🎜비동기 컴포넌트 같은 방법을 사용할 수도 있습니다🎜🎜전환 애니메이션 추가🎜🎜전환 애니메이션을 추가하려면 먼저 vue3 내장을 이해해야 합니다. <Component><Transition> code> 구성 요소에서 ????🎜🎜<Component>: 매우 간단합니다. is는 다음과 같이 구성 요소를 전환하는 데 사용할 수 있는 구성 요소를 표시합니다. 🎜rrreee🎜&lt ;Transition>: 🎜Show/hide🎜에 삽입된 콘텐츠 전환 애니메이션 및 스플라이스 추가 name 속성을 ​​통한 class 예: 🎜rrreee🎜여기에서 name 속성을 ​​통해 스타일을 설정하세요. 🎜
      🎜anime- enter-active: 전환 상태(🎜hide=> 표시 🎜 전환 시간 및 기타 매개변수 설정)
      anime-leave-active: 전환 상태(🎜display=> 설정) ; 전환 시간 및 기타 매개변수 숨기기)

      anime-enter-from => ; anime-enter-to 🎜Hide=> 🎜 시작 및 끝 스타일
      anime-leave-from => anime-leave -to 🎜Show => 숨기기 🎜 시작 및 끝 스타일 🎜🎜🎜 결합 ????🎜아아아아

    위 내용은 vue3는 각 장면의 과도한 로딩 문제를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿