SPA(Single Page Application)는 Client Side Rendering (혹은 Client Side Navigation) 방식으로 단 한 번만 리소스(HTML, CSS, JavaScript) 를 로딩하고, 그 후에는 데이터를 받아올 때만 서버와 통신한다. 즉, 최초에 한 페이지만 불러오고 페이지 이동 시 기존 페이지의 내부를 수정해서 보여주는 방식을 말한다.
React, Vue, Angular 등은 SPA 프레임워크에 해당한다. SPA는 JS가 동작하면서 데이터를 주고 받는다. 과거의 웹사이트처럼 rendering에 필요한 모든 정보를 받아오지 않고, 필요한 정보만 요청하고 변화된 부분만 rendering되므로 빠른 interaction이 가능하다.
Rendering이란 HTML, CSS, JS로 작성된 문서를 해석하여 브라우저에 시각적으로 출력하는 것을 말한다.
Lazy Loading이란? 페이지 내에서 바로 필요하지 않은 데이터는 로딩하지않고, 필요한 시점에 로딩하는 디자인 패턴
ex) 스크롤을 내리기 전까지 페이지에 보이지 않는 부분은 로딩하지 않는다.
웹페이지의
index.html
구조를 분석하여 Search Engine에 검색력을 높여주는데 CSR의 경우 요청이 전달되기 전까지 body가 비어있기때문에 SEO가 효율적으로 동작하지 않아 검색 노출 면에서 불리하다.
long TTV(Time To View)
short TTI(Time To Interact)
short TTV
long TTI
npx create-next-app@latest --typescript
--typescript
flag를 주면 된다.npm ls
yarn list
seuan@seuanui-MacBookPro my-app % yarn start
yarn run v1.22.19
$ next start
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
Error: Could not find a production build in the '/Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/.next' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id
at NextNodeServer.getBuildId (/Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/node_modules/next/dist/server/next-server.js:169:23)
at new Server (/Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/node_modules/next/dist/server/base-server.js:58:29)
at new NextNodeServer (/Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/node_modules/next/dist/server/next-server.js:70:9)
at NextServer.createServer (/Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/node_modules/next/dist/server/next.js:140:16)
at async /Users/seuan/workspace/wanted-pre-onboarding-challenge-fe-3/my-app/node_modules/next/dist/server/next.js:149:31
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
yarn start
입력하면 에러가 발생한다.nextjs github
에서 해당 에러에 대한 내용을 찾을 수 있었다.next build
를 실행하여 build 생성next dev
를 실행하여 해결yarn build
yarn start
or
yarn dev
yarn build
후에 다시 yarn start
를 진행하거나 yarn dev
명령어를 입력하면 이전과 다르게 잘 실행되는 걸 볼 수 있다.build
후 start
하는 것과 dev
두 실행 방법의 차이에 대해서는 다른 포스트에서 다룰 예정이다.