React + Express.js + react-router-dom β ~ Server Side Rendering ~ β
μ λ§ μ½λ€! next! (level~ π―ββοΈ)
- npx create-next-app@latest .
- npm install next@12 (νμ¬λ 13 λ²μ κΉμ§ λμμΌλ―λ‘, 12 λ²μ μΌλ‘ κΉμ.)
npm run dev
: κ°λ° νκ²½ μ€νnpm run build
: .next λΌλ κ³³μ λΉλ νμΌ μμ±npm run start
: λ°°ν¬λ νμΌ μ€ν
- κ²μ μμ§ μ΅μ ν (SEO)
- λͺ¨λ νμΌμ reactλ₯Ό import ν νμκ° μλ€.
- react.js component λ₯Ό export νκ³ μλ νμΌμ
pages
ν΄λ μμ λκΈ°λ§ νλ©΄ next.js κ° νμΌμ μ΄λ¦μ κ°μ Έλ€κ° url μ μ΄λ¦μΌλ‘ μ΄λ€. - μ€μν 건, pages ν΄λμμ μ μ μκ² λ³΄μ¬ μ£Όκ³ μΆμ κ±Έ export default function μ ν΅ν΄ μ°κ²°ν΄ μ£Όλ κ²λλ .
- anchor νκ·Έμ hrefλ₯Ό λ£μ΄ μ£Όλ κ²μ΄ μλ, Link νκ·Έ μμ hrefλ₯Ό λ£μ΄ μ€μΌ ν©λλ€.
- λΌμ°ν μ μΉ μ¬μ΄νΈκ° μλ‘κ³ μΉ¨ λμ§ μλ ν° μ₯μ μ΄ μμ΅λλ€.
- style μ΄λ className μ μ©μν¬ λλ Link > anchor νκ·Έμ μ μ©μν΅λλ€.
XXXX.module.css
νμΌμ μμ±νλ€.import styles from "./XXXX.module.css"
- μλ°μ€ν¬λ¦½νΈ μ€λΈμ νΈμμμ νλ‘νΌν° νμμΌλ‘ μ λλ€. (ex. className={styles.nav})
- νΉμ λ¬Έμμ΄μ λ§λ€μ΄μ μ½μ
νλ λ°©μλ μλ€. (ex. <div className={
${styles.link}
} ${router.pathname === "/" ? styles.active : ""} ) - ν΄λμ€ μ΄λ¦λ€μ λ°°μ΄μ λ§λλ λ°©λ²λ μλ€. (ex. <div className={[styles.link, router.pathname === "/about" ? styles.active : "",]join(" ")}>)
λ¨μ
- μμλ³λ‘ νμΌμ λ°κΏμΌ ν¨.
- ν΄λμ€ μ΄λ¦λ€μ κΈ°μ΅ν΄μΌ νλ λ¬Έμ .
- ν΄λμ€ μ΄λ¦ μ체λ₯Ό ꡬννλ κ² λ³΅μ‘μλ €μ, νΉν 쑰건μ....
- NextJS κ³ μ μ λ°©λ².
- μ΄ν리μΌμ΄μ μ styles λ₯Ό μΆκ°νλ λ λ€λ₯Έ λ°©μμ΄λ€.
- λ΄λΆ μ€νμΌ μνΈμμ jsx props μΆκ°ν λ€, μ€κ΄νΈλ‘ λ°±ν±μ κ°μΈλ©΄ λλ€.
- μ»΄ν¬λνΈ λ΄λΆ λ²μμ ν΄λΉλλ μμμμλ§ μ€νμΌ μ§μ μ΄ κ°λ₯νλ€.
- μ μ styles λ₯Ό μΆκ°νκ³ μΆμ λλ styls jsx μ
global
prop μ μΆκ°ν΄ μ€λ€. - styles/global.css λ App μ»΄ν¬λνΈμμλ μ μ©μ΄ λΆκ°λ₯νκ³ , 컀μ€ν λ νμ΄μ§λ μ»΄ν¬λνΈ λ΄μμλ§ import ν΄μ μ¬μ©ν μ μλ€.
- export function getServerSideProps() {}
- μμ²ν λλ§λ€ HTML μ΄ μμ±λκΈ° λλ¬Έμ λ°μ΄ν°κ° κ³μ μ λ°μ΄νΈ λλ€.
- λ°μ΄ν°λ₯Ό μλ‘ λ°μμ νμ΄μ§κ° λ λλ§ λλ€.
- ν΄λΉ νμ΄μ§ μ¬μ©μκ° μμ² μ, getServerSideProps λ₯Ό μ μ€ν ν, front κ° server μ μ§μ μμ²νμ¬ λ°μ΄ν°λ₯Ό λ°μμμ page μ»΄ν¬λνΈμ λ°μ΄ν°λ₯Ό props λ‘ μ λ¬νμ¬ λ λλ§ νλ€.
- getServerSideProps λ λ°μ΄ν°κ° κ³μ λ°λλ νμ΄μ§μ μ¬μ©νμ.
- /movies/all κ²½λ‘λ₯Ό λ§λ€κ³ μΆλ€?
movies ν΄λ μμ± ν > all μ»΄ν¬λνΈ νμΌμ μΆκ°ν΄ μ£Όλ©΄ λλ€.
movies ν΄λ μμ μλ νμΌλ€μ΄ μλ¦λ΅κ² 맡νλ κ²~
- νμ΄μ§κ° νλλΌλ©΄ ν΄λλ₯Ό λ§λ€μ΄ μ€ νμλ μλ€.
- URL μ λ³μλ₯Ό λ£λ λ°©λ²
λκ΄νΈ μμ λ³μλͺ μ μ μ΄ νμΌμ μμ±νλ€. (ex. [movieID].tsx)