Razzle: μ œλŒ€λ‘œ λ Œλ”λ§λ˜μ§€ μ•ŠλŠ” μŠ€νƒ€μΌμ˜ μˆ˜ν™”

에 λ§Œλ“  2018λ…„ 10μ›” 03일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: jaredpalmer/razzle

μ‚¬λž‘μŠ€λŸ¬μš΄ razzle, 정말 ν›Œλ₯­ν•œ λ„κ΅¬μž…λ‹ˆλ‹€.

Material UIλ₯Ό μ„€μ •ν–ˆλŠ”λ° ν•œ 가지λ₯Ό μ œμ™Έν•˜κ³  λͺ¨λ“  것이 _ν™˜μƒμ μœΌλ‘œ_ μž‘λ™ν•˜λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μœ„ νŽ˜μ΄μ§€λ₯Ό λ°©λ¬Έν•˜κ³  νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄ μ΅œμ†Œν•œμ˜ μŠ€νƒ€μΌλ§Œ μžˆλŠ” νŽ˜μ΄μ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. λ§ˆμ§€λ§‰ yarn start μ—μ„œ μ–΄λ–€ νŽ˜μ΄μ§€κ°€ μ—΄λ ΈλŠ”μ§€μ— 따라 ν•΄λ‹Ή νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ  λ•Œλ§Œ μ œλŒ€λ‘œ λ Œλ”λ§λ˜μ§€λ§Œ νƒμƒ‰ν•˜κ³  μƒˆλ‘œ κ³ μΉ¨ν•˜λ©΄ (루트 κ²½λ‘œμ—μ„œλ„) μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ‹€μ œλ‘œ 맀혹적인 λ²„κ·Έμž…λ‹ˆλ‹€.

  1. yarn start μ„œλ²„ μ‹œμž‘
  2. 예λ₯Ό λ“€μ–΄ http://localhost:3000/blog-posts 둜 μ΄λ™ν•©λ‹ˆλ‹€.
  3. νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨(λͺ¨λ“  것이 μ“°λ ˆκΈ°μ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€)
  4. μ„œλ²„ μ’…λ£Œ(λΈŒλΌμš°μ € 창을 μ—΄μ–΄ λ‘‘λ‹ˆλ‹€)
  5. yarn start μ„œλ²„ μ‹œμž‘
  6. νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ 고치면 μ•„λ¦„λ‹΅κ²Œ λ³΄μž…λ‹ˆλ‹€(λͺ¨λ“  것이 μ œλŒ€λ‘œ λ Œλ”λ§λ¨).
  7. _any_ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동
  8. μƒˆλ‘œκ³ μΉ¨, μ“°λ ˆκΈ° κ°™κ΅°μš”... 그리고 λ°˜λ³΅ν•˜μ„Έμš”.

yarn build && yarn start:prod μ‹œλ„ν–ˆκ³  μ‹œμŠ€ν…œμ΄ μ‹€ν–‰λ˜μ§€λ§Œ μ΅œμ†Œν•œμ˜ μŠ€νƒ€μΌλ‘œλ§Œ μ‹€ν–‰λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 링크λ₯Ό μ°Ύμ•„ ν΄λ¦­ν•˜λ©΄ 전체 μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ λ‹€μ‹œ μ•„λ¦„λ‹΅κ²Œ λ³΄μž…λ‹ˆλ‹€.

λ‚˜λŠ” 그것이 μˆ˜ν™”λ¬Ό λ˜λŠ” μ•„λ§ˆλ„ 그것과 @material-ui/core/styles/withStyles 쑰합에 λ¬Έμ œκ°€ μžˆλ‹€κ³  κ°€μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œκ°€ λ°œμƒν•œ μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

ν΄λž˜μŠ€λŠ” 후속 νŽ˜μ΄μ§€ λ‘œλ“œ μ‹œ λ‹€λ¦…λ‹ˆλ‹€( html둜 λ Œλ”λ§λ¨ ). μ΄λŠ” μ•„λ§ˆλ„ λ‹€μŒ ν† λ‘ κ³Ό κ΄€λ ¨λœ λ™ν˜• μŠ€νƒ€μΌ/클래슀의 초기 λ‘œλ“œμ™€ 관련이 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μœ„μ˜ λ‚΄ μƒν™©μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ μž‘λ™ν•˜λŠ” 것 κ°™μœΌλ―€λ‘œ μ΄λŸ¬ν•œ λ…Όμ˜κ°€ λ‚˜νƒ€λ‚˜κ²Œ ν•˜λŠ” 것보닀 더 가깝닀고 μƒκ°ν•©λ‹ˆλ‹€. 생각?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

κΈΈκ³  μ§€λ£¨ν•œ μ‹œκ°„ λ™μ•ˆ μ‘°μ‚¬ν•˜κ³  λ””λ²„κΉ…ν•œ ν›„μ—λŠ” 쑰금 더 만쑱슀러울 것이라고 생각할 수 μžˆμ§€λ§Œ μˆ˜μ •μ€ 기본적으둜 after.js, react-jssλ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ‹ λ§Œμ˜ Document λ₯Ό μƒμ„±ν•œ λ‹€μŒ 맨 μ•„λž˜μ— μžˆλŠ” 쀄을 μƒμ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μŠ€λ ˆλ“œμ˜ (MUI κ΄€λ ¨λ§Œ μžˆλŠ” MuiThemeProvider 정보):

  static async getInitialProps({ assets, data, renderPage }) {
    const generateClassName = createGenerateClassName()
    const jss = create(jssPreset())

    const page = await renderPage(App => props => (
      <JssProvider jss={jss} generateClassName={generateClassName}>
        <MuiThemeProvider sheetsManager={new Map()}>
          <App {...props} />
        </MuiThemeProvider>
      </JssProvider>
    ))

    return { assets, data, ...page }
  }

λͺ¨λ‘ 고톡을 ν”Όν•˜μ‹­μ‹œμ˜€. :ν”Ό

λͺ¨λ“  5 λŒ“κΈ€

γ…‹γ…‹γ…‹γ…‹ Razzle의 Material UIμ—μ„œλ„ 같은 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€ 😒

@CharlyJazz 정말 μš©κΈ°κ°€ λ‚©λ‹ˆλ‹€. ν•˜ν•˜ withStyles κ΅¬ν˜„μ—μ„œ λ™ν˜• 클래슀둜 μ΄λ™ν•˜λ €κ³  ν–ˆμŠ΅λ‹ˆκΉŒ?

κΈΈκ³  μ§€λ£¨ν•œ μ‹œκ°„ λ™μ•ˆ μ‘°μ‚¬ν•˜κ³  λ””λ²„κΉ…ν•œ ν›„μ—λŠ” 쑰금 더 만쑱슀러울 것이라고 생각할 수 μžˆμ§€λ§Œ μˆ˜μ •μ€ 기본적으둜 after.js, react-jssλ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ‹ λ§Œμ˜ Document λ₯Ό μƒμ„±ν•œ λ‹€μŒ 맨 μ•„λž˜μ— μžˆλŠ” 쀄을 μƒμ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μŠ€λ ˆλ“œμ˜ (MUI κ΄€λ ¨λ§Œ μžˆλŠ” MuiThemeProvider 정보):

  static async getInitialProps({ assets, data, renderPage }) {
    const generateClassName = createGenerateClassName()
    const jss = create(jssPreset())

    const page = await renderPage(App => props => (
      <JssProvider jss={jss} generateClassName={generateClassName}>
        <MuiThemeProvider sheetsManager={new Map()}>
          <App {...props} />
        </MuiThemeProvider>
      </JssProvider>
    ))

    return { assets, data, ...page }
  }

λͺ¨λ‘ 고톡을 ν”Όν•˜μ‹­μ‹œμ˜€. :ν”Ό

@jaredpalmer @jylinman razzle λ¬Έμ„œμ— λŒ€ν•œ 예제λ₯Ό λ§Œλ“œλŠ” 것이 λΆˆκ°€λŠ₯ν•©λ‹ˆκΉŒ?

이 문제λ₯Ό κ²ͺκ³  μžˆλŠ” λ‹€λ₯Έ μ‚¬λžŒμ—κ²ŒλŠ” 곡식 Material-UI SSR λ¬Έμ„œλ₯Ό λ”°λ₯΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. https://material-ui.com/guides/server-rendering/

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰