기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[React] SEO 처리 하기
FrontEnd/React 심화

[React] SEO 처리 하기

2022. 10. 19. 17:20
반응형

1. 개요

React는 기본적으로 CSR(Client Side Rendering), SPA(Single Page Application)으로 동작합니다. 

이때 React에서는 HTML 파일이 딱 1개뿐이고, 그 내용조차 서버에서 javascript를 받아서 렌더링하기 전까지는 빈 껍데기인 상태이기 때문에 검색 엔진에 노출되기가 어렵습니다.

따라서 SEO에 노출시키기 위해 html 내용을 미리 만들어야합니다.

 

 

2. pre-rendering

pre-rendering이란, 빌드할때 미리 특정 페이지를 렌더링해서 html을 만들어 두는 것을 말합니다.

빌드할 때 html 파일을 만들어두기 때문에 검색 엔진이 크롤링하러 사이트에 접근했을 때, 내용물을 보여줄 수가 있게 됩니다.

다만, 빌드 시에는 정적 파일만 가져오기 때문에 서버측에서 가져오는 데이터는 포함되어 있지 않습니다.

 

 

2-1. react-snap

1) pre-rendering을 사용하기 위해 react-snap 라이브러리를 설치합니다.

npm install --dev react-snap

 

2) package.json에   "postbuild": "react-snap" 스크립트를 추가해줍니다.

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "postbuild": "react-snap"
  },

 

3) pre-rendering할 페이지를 package.json에 추가해줍니다.

"reactSnap": {
    "include": [
      "/index","/"
    ]
  }

 

 

 

4) npm run build로 빌드해줍니다.

그러면 먼저 빌드가 되고 자동적으로 react-snap 라이브러리가 실행됩니다.

 

5) serve로 서버 실행하기

serve 라이브러리를 전역에 설치하고,

npm install -g serve

 

 

/build/server.json을 생성해 아래와 같이 작성합니다

{
  "rewrites": [
    { "source": "/", "destination": "/200.html" },
    { "source": "/index", "destination": "/index.html" }
  ]
}

그다음 아래 명령어로 서버를 실행시킵니다.

serve -c server.json build

 

 

 

반응형
저작자표시 변경금지 (새창열림)

'FrontEnd > React 심화' 카테고리의 다른 글

[React] useMemo와 useCallback의 차이  (5) 2022.11.03
[React] 렌더링(리렌더링)  (0) 2022.11.03
[React] SSR과 CSR(SPA) 차이  (0) 2022.10.19
[React] Redux Toolkit 에서의 비동기 처리(createAsyncThunk, extraReducers)  (0) 2022.09.19
[React] Redux Toolkit 사용법  (1) 2022.09.19
    'FrontEnd/React 심화' 카테고리의 다른 글
    • [React] useMemo와 useCallback의 차이
    • [React] 렌더링(리렌더링)
    • [React] SSR과 CSR(SPA) 차이
    • [React] Redux Toolkit 에서의 비동기 처리(createAsyncThunk, extraReducers)
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바