구덩이 밟 기 실 록
vite 프로젝트 구축 최적화
동적 가 져 오기 rollup 의 구축 을 거 쳐 동적 가 져 온 파일 은 비동기 적 인 chunk 파일 을 생 성 합 니 다.프로젝트 에 접근 할 때 필요 에 따라 불 러 오고 응용 프로그램의 로드 속 도 를 크게 향상 시 킵 니 다.
import Home from '@/views/home/index.vue'
import Layout from '@/components/Layout.vue'
const routes: Array<RouteRecordRaw> = [
{
path: '/',
component: Layout,
redirect: '/home',
children: [
{
path: '/home',
name: 'Home',
component: Home,
meta: { title: ' ' }
},
{
path: '/about',
name: 'About',
meta: { title: ' ', keepAlive: true },
component: () => import('@/views/about/index.vue')
},
{
path: '/square',
name: 'Square',
meta: { title: ' ', keepAlive: true },
component: () => import('@/views/square/index.vue')
}
]
}
]
const router = createRouter({
history: process.env.NODE_ENV === 'development'
? createWebHistory(process.env.BASE_URL)
: createWebHashHistory(process.env.BASE_URL),
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
//
return savedPosition
} else {
return { top: 0, behavior: 'smooth' }
}
}
})
router.beforeEach((to, from, next) => {
//
if (to.path !== from.path) {
document.title = ` | ${to.meta.title}`
}
next()
})
router.onError((error) => {
const pattern = /Loading chunk (\d)+ failed/g
const isChunkLoadFailed = error.message.match(pattern)
if (isChunkLoadFailed) {
location.reload()
}
})
export default router
상기 코드 는 vite 가 구축 한 vue 프로젝트 의 router 파일 로 vue-를 사용 합 니 다[email protected] Router 는 상 자 를 열 때 사용 하 는 동적 가 져 오기 를 지원 합 니 다.정적 가 져 오기 대신 동적 가 져 오기 가 가능 합 니 다.코드 에서 볼 수 있 습 니 다.about 페이지 와 square 페이지 는 모두 동적 가 져 오기 입 니 다.동적 가 져 오기 에 대해 MDN 에 매우 상세 한 소개 가 있 습 니 다.전송 문
rollup 의 구축 을 통 해 동적 으로 가 져 온 파일 은 비동기 적 인 chunk 파일 을 생 성 합 니 다.프로젝트 에 접근 할 때 필요 에 따라 불 러 오고 응용 프로그램의 로드 속 도 를 크게 향상 시 킵 니 다.
vite 프로젝트 의 루트 동적 가 져 오기 에서 내 가 밟 은 구덩이:
빌 드 시@/별명 은 지원 되 지 않 습 니 다.구축 할 때 rollup 구축 시 설정 한 별명 에 따라 해당 하 는 파일 을 찾 을 수 없 기 때문에 구축 단계 에서 오류 가 발생 할 수 있 습 니 다.
해결 방안:
warning: "import.meta" is not available in the configured target environment ("es2019") and will be empty
vite 설정 항목 인 esbuild.target 이'es 2019'일 때 이 경고 가 있 습 니 다.이 경우 import.meta api 사용 이 지원 되 지 않 음 을 표시 합 니 다.
[vite] Internal server error: Invalid glob import syntax: pattern must start with "." or "/" (relative to project root)
import.meta.glob()의 인 자 는"."또는"/"로 시작 하여 루트 디 렉 터 리 와 일치 해 야 합 니 다.
마지막 쓰기 부분 코드:
import Layout from '@/components/Layout.vue'
const modules = import.meta.glob('/src/views/*/index.vue')
const routes: Array<RouteRecordRaw> = [
{
path: '/',
component: Layout,
redirect: '/home',
children: [
{
path: '/home',
name: 'Home',
component: modules['/src/views/home/index.vue'],
meta: { title: ' ' }
},
{
path: '/about',
name: 'About',
meta: { title: ' ', keepAlive: true },
component: modules['/src/views/about/index.vue']
},
{
path: '/square',
name: 'Square',
meta: { title: ' ', keepAlive: true },
component: modules['/src/views/square/index.vue']
}
]
}
]
import.meta.glob 방법 을 사용 하면 백 엔 드 인 터 페 이 스 를 통 해 루트 를 설정 하고 권한 제 어 를 제어 할 수 있 습 니 다.routes 데이터 가 인터페이스 에서 돌아 오 면 권한 범위 내 에 있 지 않 은 구성 요소 가 경로 항목 을 생 성하 지 않 습 니 다.이것 은 권한 제어 의 강 도 를 증가 시 킵 니 다.build.rollupOptions.manualChunks 설정,nodemodules 파일 을 패키지 로 불 러 옵 니 다.
manualChunks(id) {
if (id.includes('node_modules') && id.includes('prime')) {
return 'prime'
} else if (id.includes('node_modules') && id.includes('vue')) {
return 'vue'
} else if (id.includes('node_modules')) {
return 'vendor'
}
}
이 설정 을 하지 않 으 면 vite 는 nodemodules 패 키 지 는 큰 비동기 vendor.js 파일 로 포장 되 어 있 습 니 다.파일 이 너무 크 면 페이지 렌 더 링 시의 차단 시간 이 증가 합 니 다.또한 페이지 캐 시 최적화 에 불리 합 니 다.위의 설정 에서 저 는 ui 프레임 워 크(primeVue),vue 와 관련 된 가방 을 각각 파일 로 포장 합 니 다.이렇게 하면 모든 의존 파일 의 부 피 를 줄 일 수 있 을 뿐만 아니 라 프로젝트 의 캐 시 를 최적화 할 수 있 습 니 다.이러한 기초 라 이브 러 리 와 같은 의존 패 키 지 는 업데이트 횟수 가 비교적 적 을 것 이다.
서버 의 파일 캐 시 정책 설정 과 결합 하여 사용 자 는 처음 방문 할 때 이 의존 파일 을 불 러 와 야 하 는 것 을 제외 하고 나중에 접근 하면 캐 시 에서 직접 읽 을 수 있 습 니 다.파일 코드 에 의존 하여 일정한 절단 을 하면 프로젝트 의 성능 을 크게 향상 시 킬 수 있 습 니 다.
그리고 vite 는 구축 할 때 다음 html 파일 을 자동 으로 생 성 합 니 다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" rel="external nofollow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title> </title>
<script type="module" crossorigin src="/assets/index.e3627129.js"></script>
<link rel="modulepreload" href="/js/vue/vue.a1ee204f.js" rel="external nofollow" >
<link rel="modulepreload" href="/js/prime/prime.eb4bfea6.js" rel="external nofollow" >
<link rel="stylesheet" href="/assets/prime.296674d4.css" rel="external nofollow" >
<link rel="stylesheet" href="/assets/index.289426b3.css" rel="external nofollow" >
</head>
<body>
<div id="app"></div>
</body>
</html>
그 중에서 rel="modulepreload"속성의 링크 탭 을 추가 하여 원생 모듈 을 미리 불 러 올 수 있 습 니 다.일부 파일 은 실행 할 때 까지 기다 리 지 않 고 불 러 올 수 있 도록 합 니 다.또한 페이지 의 성능 을 향상 시 킬 수 있 습 니 다.그림 자원 파일 처리.자원 부피 가 assets InlineLimit 옵션 값 보다 작 으 면 base 64 data URL 로 연결 되 어 참조 파일 에 포 장 됩 니 다.이로써 파일 에 대한 요청 횟수 를 줄 이 고 프로젝트 성능 을 향상 시킨다
기타
동적 가 져 오기 파일 에 생 성 된 비동기 chunk,해당 하 는 폴 더 에 놓 거나 chunk 이름 을 사용자 정의 합 니 다.
헤헤,롤 업 문 서 를 한참 찾 았 는데,또 스스로 한참 을 시도 해 보 았 는데,마침내 성공 했다.다음 설정 참조:
export default defineConfig({
build: {
assetsDir: 'assets',
rollupOptions: {
output: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
chunkFileNames: (chunkInfo: any) => {
const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : []
const fileName = facadeModuleId[facadeModuleId.length - 2] || '[name]'
return `js/${fileName}/[name].[hash].js`
},
}
}
}
})
vite 설정 전역 에 들 어 오 는 scss 변수설정 은 다음 과 같 습 니 다.
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "./src/styles/variables";'
}
}
},
})
또한 주의해 야 할 것 은 서로 다른 버 전의 vite 사이 에 설정 항목 에 약간의 차이 가 있 을 수 있 기 때문에 프로젝트 를 설정 할 때 문서 에 따라 완전히 설정 하 는 데 문제 가 있다 면 자신의 버 전과 문서 의 버 전이 다 르 기 때문에 발생 한 것 인지 확인 해 보 세 요.마지막.
제 가 설정 한 vite 2.0+Vue 3.0 프로젝트 를 공유 하 겠 습 니 다.전송 문물 을 시험 하 는 프로젝트 입 니 다.잘못된 점 이 있 으 면 지적 해 주 십시오!
여기 서 vite 2.0 구덩이 밟 기 실 록 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 vite 2.0 구덩이 밟 기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Selenium 마우스 클릭 이벤트 구덩이 밟 기탭 을 찾 은 후 클릭 하면 지연 시간 을 설정 해 야 합 니 다. 그렇지 않 으 면 실행 이 너무 빠 른 js 파일 을 불 러 올 수 없어 서 클릭 반응 이 없습니다. 처음에 나 는 요소 가 나 오 기 를 기다 리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.