>  기사  >  웹 프론트엔드  >  vue3는 각 장면의 과도한 로딩 문제를 어떻게 해결합니까?

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

WBOY
WBOY앞으로
2023-05-18 15:25:061774검색

    vue3 공통 과잉

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

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

    64fb6a03fb5631519b8db02f6a431454 里添加内容,就是过度内容

    <body>
       <div id="app">
          <h2>加载中......</h2>
       </div>
       <script type="module" src="/src/main.js"></script>
    </body>

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

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

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

    • bb06e69d307cb52103d07d8f9dd385e5 提供 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 内置组件 9366e37985177da7839522e36133b6c887a2e53b90599db3250d06933523db3b ????

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

     <template>
     	<Component :is="visible ? TestComp : &#39;&#39; " /> 
     </template>

    87a2e53b90599db3250d06933523db3b : 里插入的内容 显示/隐藏 添加过度动画 ,通过 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 b7d391b0a8e9eea5e525c473b7ead7d2; 🎜
    • 🎜 bb06e69d307cb52103d07d8f9dd385e52 슬롯을 제공합니다????; 🎜#default : 로드할 콘텐츠 🎜
    • 🎜#fallback: 로드하는 종에 의해 표시되는 콘텐츠 🎜
    • 🎜rrreee 🎜🎜유사: (비동기 컴포넌트 전환)🎜🎜rrreee🎜비동기 컴포넌트 같은 방법을 사용할 수도 있습니다🎜🎜전환 애니메이션 추가🎜🎜전환 애니메이션을 추가하려면 먼저 vue3 내장을 이해해야 합니다. 9366e37985177da7839522e36133b6c887a2e53b90599db3250d06933523db3b code> 구성 요소에서 ????🎜🎜<code>9366e37985177da7839522e36133b6c8: 매우 간단합니다. 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으로 문의하시기 바랍니다. 삭제