-
Notifications
You must be signed in to change notification settings - Fork 1
첫 페이지 로딩 시간 개선 #119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
첫 페이지 로딩 시간 개선 #119
Conversation
지금 발생한 린트 에러는 devDependency에 있는 패키지를 import해서 나는 것이에요! 저번에 얘기했던 것처럼 react-query-devtools는 프로덕션 환경에서는 사용하지 않는 것이기 때문에 devDependency로 옮긴 것인데요.
제가 생각한 선택지는 크게 2가지인데 어떻게 하는게 좋을까요? 아니면 더 좋은 방법이 있을까요??
어떻게 하는게 좋을까요... ( •︠ˍ•︡ ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵 변경사항 모두 확인했습니다! 고생하셨습니다 정연님 👍🏻
react-query-devtools 위치에 대해서는 저도 1번 방법처럼 다시 원래대로 dependency에 넣는게 좋아 보입니다!
전체 번들에 포함되는 점이 약간 마음에 걸리긴 했는데, Devtools 공식 문서에 적용 방법이 있네요! devtools 코드를 lazy loading을 통해 별도 청크로 분리하는 방법인데 이걸 적용해봐도 좋을 것 같습니당
devtools-in-production
import * as React from 'react'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
import { Example } from './Example'
const queryClient = new QueryClient()
const ReactQueryDevtoolsProduction = React.lazy(() =>
import('@tanstack/react-query-devtools/build/lib/index.prod.js').then(
(d) => ({
default: d.ReactQueryDevtools,
}),
),
)
function App() {
const [showDevtools, setShowDevtools] = React.useState(false)
React.useEffect(() => {
// @ts-ignore
window.toggleDevtools = () => setShowDevtools((old) => !old)
}, [])
return (
<QueryClientProvider client={queryClient}>
<Example />
<ReactQueryDevtools initialIsOpen />
{showDevtools && (
<React.Suspense fallback={null}>
<ReactQueryDevtoolsProduction />
</React.Suspense>
)}
</QueryClientProvider>
)
}
export default App
아닛 아래 부분을 좀 더 꼼꼼하게 읽어볼 걸 그랬네요... 알려주신 부분 읽어보고 적용해보고 다시 PR 열겠습니다!! 감사합니다... 🥹🍀 |
링크해주신 문서 내용을 다시 한번 찬찬히 읽어봤는데요. 해당 내용은
을 알려주고 있는 것 같아요..!!
-- const ReactQueryDevtoolsProduction = React.lazy(() =>
import('@tanstack/react-query-devtools/build/modern/production.js').then(
(d) => ({
default: d.ReactQueryDevtools,
}),
),
) 문서에 있는 것처럼 그래서 오히려 말씀해주신 코드를 적용하면 프로덕션 환경에서 제외된 녀석을 다시 불러오는 결과가 될 것 같다는 생각이 들었습니당 제가 제대로 이해한건지 모르겠네요 😵💫 제가 제대로 이해한 것이 맞는지 (...) 확인 한번만 부탁드립니다!! |
오옹 첨부해주신 코드 모두 확인했습니다! 내부적으로 Null로 처리하는지는 몰랐네요... 꼼꼼하게 확인해주셔서 감사합니다 |
📝 관련 이슈
MOD-42
💻 작업 내용
첫 페이지 로딩 시간을 "조금" 줄여보았습니다..
1. 페이지별로 lazy 로딩을 적용
Before
After
2. 프로덕션 환경에서 불필요한 패키지들을 dependency에서 devDependency로 옮김
📸 스크린샷
http://localhost:4173 에서 테스트한 결과입니닷 (캐시 모두 제거)
lighthouse
vite-bundle-visualizer
👻 리뷰 요구사항
(저번에 말씀드리긴 했지만) visualizer에서 보이듯이 lottie 파일이 너무너무너무 커서 지금은 크게 만족스러운 결과가 나오지 않는 것 같아요ㅠ
계획했던 것처럼 lottie 파일 크기를 최적화한 다음에 이것도 온보딩 페이지에서만 로드해서 사용하도록 해도 좋을 것 같다는 생각이 들었습니당