<p>๋””๋ฐ” 2.0</p>

์— ๋งŒ๋“  2017๋…„ 03์›” 27์ผ  ยท  43์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dvajs/dva

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๋ฐ›์€ ์ •๋ณด์™€ ์ œ ์ƒ๊ฐ์„ ๊ฒฐํ•ฉํ•˜์—ฌ [email protected]์— ๋Œ€ํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ๋‚˜์—ดํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ† ๋ก ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ„๋‹จํ•œ ๊ทœ์น™์œผ๋กœ dva 1.0, BreakChange์™€ ํ˜ธํ™˜๋˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  CodeMod ์›ํด๋ฆญ ์—…๊ทธ๋ ˆ์ด๋“œ ์ œ๊ณต
  • ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์†”๋ฃจ์…˜, React ๋˜๋Š” ๋‹ค๋ฅธ ๋ณด๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š๊ณ , Router ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ์กด ๋ฐ”์ธ๋”ฉ๊ณผ ์‰ฝ๊ฒŒ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #530
  • Reselect์˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜๊ณผ ๊ฐ™์€ ๋‚ด์žฅ๋œ ํ•ฉ๋ฆฌ์ ์ธ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ๋“€์„œ์™€ ์…€๋ ‰ํ„ฐ๋ฅผ ๋” ๋ฐ€์ ‘ํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜๊ณ  ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.ํ•จ๊ป˜ ๋ฌถ์ด๊ณ  ์“ฐ๊ธฐ ์‰ฝ๊ณ  ๋” ๋‚˜์€ ์กฐํ•ฉ
  • ์˜ค๋ฅ˜ ์•Œ๋ฆผ์„ ๋” ์นœ์ˆ™ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. #436 #416
  • ์ฝ”๋“œ ๋ถ„ํ• ์„ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ์ฒ˜๋ฆฌ
  • View์—์„œ Effect ์ฝœ๋ฐฑ์„ ๋ณด๋‹ค ์šฐ์•„ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ, #175
  • ๋” ์šฐ์•„ํ•œ HMR ์ฒด๊ณ„, #469
  • dva-model-extend ์™€ ๊ฐ™์€ Model์˜ ํ™•์žฅ ๋ฐ ์žฌ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.
  • ์ฝ”๋“œ ์Šคํƒ€์ผ: ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„ ์žฌ์ž‘์„ฑ, ๋ชจ๋“ˆ ๋ถ„ํ•  ๋“ฑ
discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@nihgwu ๋ผ์šฐํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  43 ๋Œ“๊ธ€

ts์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋ชจ๋ธ๋ง์„ ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๊ดดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์†๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ๋‹ˆ๊นŒ? https://github.com/dvajs/dva/issues/769

๋กœ๋“œํ˜ธ๊ทธ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พผ dva-cli๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ฐœ๋…์ด ํ˜ผ๋™๋˜์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

๊ฐœ์ธ์ ์œผ๋กœ, ๋‚˜๋Š” ts์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค๋ฅธ ๊ด€๋ จ ์—†๋Š” ๊ธฐ์ˆ  ์Šคํƒ์—์„œ ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ œํ•˜๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ ์˜คํžˆ๋ ค ๋œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋ธ ๋งˆ์šดํŠธ ํ•ด์ œ์˜ ์ƒํƒœ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด api, react-router react-router-dva์™€ ๊ฐ™์€ ๋…๋ฆฝ๋œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•  ๊ณ„ํš์ด๋ฉฐ, rn์šฉ react-navigation-dva๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dva.use(reselect) ์™€ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ๋„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ ํ™” ๋ฐฉ์‹๋„ ์žˆ์œผ๋ฉฐ ์ต์Šคํ”„๋ ˆ์Šค ๋ฏธ๋“ค์›จ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •์  ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ๋‚ด์žฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ณ„๋„๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. , ์‹ฌ์ง€์–ด ์‚ฌ๊ฐ€๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

@nihgwu antd ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ts๋กœ ์ž‘์„ฑ๋˜์–ด ์‚ฌ์šฉ์ž๋ฅผ ์ œํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์œผ๋กœ, ํ•ญ์ƒ ์ˆ˜๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๊ณ  ์œ ํ˜• ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ ์†”๋ฃจ์…˜์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

view - dva-core - [ๆ’ไปถ]

๊ทธ ์ค‘ ํ˜„์žฌ dva์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • dva ์ฝ”์–ด
  • dva-saga
  • ๋ผ์šฐํ„ฐ

๋งˆ์ง€๋ง‰ ๋‘ ๊ฐ€์ง€๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

๋ทฐ์™€ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ dva๋ฅผ ํฌ์ง€์…”๋‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ทฐ๋Š” ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ 1.0์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด dva๋ฅผ dva-core์™€ saga์˜ ๊ธฐ๋ณธ ์กฐํ•ฉ์œผ๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ธฐ๋ณธ ์บก์Šํ™”๊ฐ€ ์ธ์Šคํ„ด์Šค ์œ ํ˜•์˜ ๋””์ŠคํŒจ์น˜ ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š” ๋ฐ ํŽธ๋ฆฌํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

dispatch({
  type: model => model.product.loadAll,
})

๋ฌธ์ž์—ด ์™ธ์šฐ๊ธฐ๋„ ๊ท€์ฐฎ๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ž‘์„ฑ์„ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , ๋“œ๋กญ๋‹ค์šด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค~

์ƒํƒœ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์†๊ธฐ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํ•„๋“œ์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ๋“€์„œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ์„ฑํ’ˆ์˜ ๋‹จ์ผ ํ•„๋“œ ์„ธํŠธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฝค ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋“€์„œ๋ฅผ ํŠธ๋ฆฌ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?์ง€๊ธˆ์ฒ˜๋Ÿผ ns split์€ ๋กœ์ง์„ ํ‰ํ‰ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•์ œ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.๋ชจ๋ธ์€ ๋ฆฌ๋“€์„œ์˜ ๋ฃจํŠธ์— ํ•ด๋‹นํ•˜๊ณ , ์•„๋ž˜์— ๋งค๋‹ฌ๋ ค ์žˆ๋Š” ๋ฆฌ๋“€์„œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.

@xufei ์‚ฌ๊ฐ€๊ฐ€ ํ•ต์‹ฌ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ ์‚ฌ๊ฐ€๊ฐ€ ์—†๋Š” ํ˜„์žฌ์˜

@xufei ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์ €๋„ ts๋กœ ์“ฐ๋Š”๊ฑฐ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด

@sorrycc Separating saga ๋‚˜๋„ ์˜ˆ๋ฅผ ๋“ค์–ด dva์˜ ํ•ต์‹ฌ์ด redux + redux-saga์ธ ๊ฒƒ์€ ๋งž์ง€๋งŒ ๊ตฌํ˜„์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ฝœ๋ฐฑ ํ›„ํฌ๋ฅผ ํ†ตํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Immutable.js๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Immutable.js ์ง€์›, Immutable.js๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๋“œํ˜ธ๊ทธ ํŒจํ‚ค์ง•์€ ์„ฑ๋Šฅ์„ ๋„ˆ๋ฌด ๋งŽ์ด ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ์ตœ์ ํ™”ํ•˜์‹ญ์‹œ์˜ค. ์ด์ œ ์„œ๋ฒ„๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

Immutable.js๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. lodash์™€ Spread ์ž‘์—…์„ ๊ฒฐํ•ฉํ•˜๋ฉด ๋ถˆ๋ณ€ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  lodash๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค dva 1.x์˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์€ ์ด๋ฏธ ๋งค์šฐ ์ข‹์€๋ฐ Immutable.js, split saga, native support ts ์ง€์› ์—ฌ๋ถ€์™€ ๋น„์Šทํ•˜๊ณ , ๋ถˆํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๋ผ๊ณ , ๋ชจ๋‘ ๊ฐœ๋ฐœ์ž์˜ ์ž๊ธฐ์• ์— ์†ํ•˜๊ณ , ๋ณ„๋กœ ์‹ค์ œ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ๊ณผ ๊ฒฝํ—˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ dva 2.x์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  4๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค ๊ณ„์ธต์˜ ์ตœ์ ํ™” ์—ฌ๋ถ€, ๋ชจ๋ธ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ํ†ตํ•ฉ๋œ ๋ฐฉ์‹์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ request ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ด์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. request.js ์ง์ ‘ ์“ฐ๋ ค๋ฉด;

  2. ๋ทฐ ๋ ˆ์ด์–ด์˜ ์ดํŽ™ํŠธ ์ฝœ๋ฐฑ ๋ฌธ์ œ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์™„์ „ํžˆ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ดํŽ™ํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋น„ํ˜„์‹ค์ (๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กœ์›€)์ด๋ฏ€๋กœ ์ด ๋ถ€๋ถ„์—์„œ ์ข€ ๋” ์„ธ๋ จ๋œ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ทธ๊ฒƒ์€ dva์˜ ์ฃผ๋ณ€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์Šค์บํด๋”ฉ์˜ ์œ ํ˜•์€ ์˜ˆ์ œ๊ฐ€ ํ’๋ถ€ํ•˜์ง€๋งŒ ๋” ๋งŽ์€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๊ฐ๋„ ๋˜๋Š” ๋ฐ˜์‘ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž์ฒด์˜ ๋ฆฌ์†Œ์Šค ์ˆ˜์ค€์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  4. ๋นŒ๋“œ ๋„๊ตฌ, ์„ฑ๋Šฅ, ๊ธฐ๋Šฅ ๋“ฑ์˜ ํ–ฅ์ƒ(ํ˜„์žฌ ๋ชจ์˜)์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์•ฝ๊ฐ„ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค.

์ €์—๊ฒŒ ๊ฐ€์žฅ ์šฐ๋ ค๋˜๋Š” ๊ฒƒ์€ router ์˜ ๋ถ„๋ฆฌ์ž…๋‹ˆ๋‹ค. dva ์—๋Š” redux + redux-saga ๋งŒ ํฌํ•จํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. redux ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ์ ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ์˜นํ˜ธํ•˜๋ฏ€๋กœ 1.x ํŒจํ‚ค์ง• react-router ๋ฐ fetch ๋Š” ๋ฌผ๋ก  ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Immutable ๋„ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์ทจํ–ฅ์— ์†ํ•œ๋‹ค ์œ ์ง€์ž๋กœ์„œ ํŽธํ–ฅ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค ๊ฐœ๋ฐœ์ž์˜ ์ทจํ–ฅ์— ๋”ฐ๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์ง€์›๋  ์ˆ˜ ์žˆ๋‹ค ์„œ๋น„์Šค ๊ณ„์ธต์˜ ๋ฌธ์ œ๋„ ์žˆ๋‹ค ํ•„์š”์— ๋”ฐ๋ผ , plugin ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dva-core ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@nihgwu ๋ผ์šฐํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@nikogu๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ–ˆ๊ณ  ์ดˆ๋ณด์ž๋Š”

๋ผ์šฐํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@nikogu

ํ˜„์žฌ dva์˜ ์ ์šฉ ๋ฒ”์œ„๋Š” ๋‹ค์†Œ ์ข๊ณ , ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ view๋ฅผ ํฌํ•จํ•˜๋Š” react ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  react-router์™€๋„ ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•œ ํ›„์— ๋‚˜๋Š” ๋ฌด์„  ๋‹ค์ค‘ ํŽ˜์ด์ง€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฐ™์ด ๋ผ์šฐํ„ฐ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ณณ, react-native์™€ ๊ฐ™์ด react-router๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ณณ, node์™€ ๊ฐ™์ด react๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ณณ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. , ์ „์ž ๋ฐ ์• ํ”Œ๋ฆฟ.

๋‚˜๋Š” dva๊ฐ€ ๋” ๋งŽ์€ ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@nikogu๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์šฐํ„ฐ๋ฅผ ๋ฉ€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด RN์—์„œ๋Š” react-navigation์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  react-navigation์€ ์›น๋„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜์—ฌ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dva๋Š” ๋…ธ๋“œ์˜ ๊ธฐ์กด API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” express์™€ ๊ฐ™์€ ์™„์ „ํ•œ ์›น ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋ณด๋‹ค๋Š” redux ๋ฐ saga ์ฝ”๋“œ์™€ ๋กœ์ง์„ ์ƒˆ๋กœ์šด ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ, ์ฟ ํ‚ค ๋ฐ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ?

์™„์ „ํ•œ ์†”๋ฃจ์…˜์ด ๋งˆ์Œ์— ๋“ค๋ฉด dva-ant = dva-core + dva-plugins ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dva์˜ ์กฐํ•ฉ์€ redux์™€ saga์˜ ์กฐํ•ฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด ๋‘ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ ์ƒํƒœ ํ๋ฆ„์˜ ํ•ต์‹ฌ์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ฃผ๋ณ€ ์žฅ์น˜๋กœ๋งŒ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง€์›๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Express์™€ Django๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋œ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋” ๋งŽ์ด ํ•˜๋Š” ๊ฒƒ์˜ ์ „ํ˜•์ ์ธ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ํฌ๊ณ  ์™„์ „ํ•œ ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ js ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ž‘์ง€๋งŒ ์•„๋ฆ„๋‹ค์šด ๊ฒƒ์„ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

redux๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ dva๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” dva๊ฐ€ redux์˜ ์ฝ”๋“œ ๊ตฌ์กฐ์™€ ๋กœ์ง์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์ƒ์‚ฐ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ์ด๊ฒƒ์ด redux ๊ธฐ๋ฐ˜ dva์˜ ํ•ต์‹ฌ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋งน๋ชฉ์ ์œผ๋กœ ๋” ๋งŽ์ด ํ•˜๋ฉด dva์˜ ์‘์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ ์  ๋” ์ข์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด react-router๋Š” RN์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(v4๋Š” ์ด๋ฏธ ์ง€์›ํ•˜์ง€๋งŒ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ž„), RN๋„ fetch์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ ๋‹ค๋ฅธ ๊ฐ•๋ ฅํ•œ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. . ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋˜ํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ์ข…์†์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ์ž…๋‹ˆ๋‹ค. V4๋Š” RN์„ ์ง€์›ํ•˜์ง€๋งŒ dva๋Š” ์—ฌ์ „ํžˆ V2์ž…๋‹ˆ๋‹ค. dva๊ฐ€ ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ธ ๊ฒฝ์šฐ ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NS

์œ„์˜ dva-core๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ์ž‘์€ ์ฝ”์–ด๋ฅผ dva-core๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ผ์šฐํ„ฐ ๋“ฑ์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ์ค‘๊ฐ„ ๋ฐ ๋ฐฑ์˜คํ”ผ์Šค๋ฅผ ์œ„ํ•œ ํšŒ์‚ฌ์˜ ๋‚ด๋ถ€ ํ†ตํ•ฉ ๋ฒ„์ „๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ†ตํ•ฉ ์ฒด๊ณ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. , H5์˜ ๊ฒฝ์šฐ ์†Œ๊ทœ๋ชจ ํ”„๋กœ๊ทธ๋žจ, ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง ๋“ฑ

2:00:
1. ์‹ค์ œ ๊ฐœ๋ฐœ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ชจ๋ธ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๋ฐ ํŒŒ์ผ์ด ๋„ˆ๋ฌด ํฐ๋ฐ ์ƒ๋Œ€๋ฐฉ๊ณผ ์„œ๋น„์Šค์˜ ๊ด€๊ณ„๋Š”? ์„œ๋น„์Šค ๋˜๋Š” ์š”์ฒญ ๋‚ด์žฅ ๊ฐ€๋Šฅ
2. react-router๋ฅผ ์‹œ์Šคํ…œ ์ž์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ข…์†์„ฑ์„ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

2.0์€ ์–ธ์ œ ์‹œ์ž‘๋˜๋‚˜์š”?

Pluggable ssr ์†”๋ฃจ์…˜์€ ๋ผ์šฐํ„ฐ์˜ ๊ด€๋ฆฌ๋ฅผ ์ถ”์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก์ด ์ฒซ ๋ฒˆ์งธ ๋ผ์šฐํŒ… ์š”์ฒญ์„ ์ธ์ˆ˜ํ•˜๊ณ  ๊ณต์œ  dva()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ํŠธ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dva๊ฐ€ ๊ณ„์† ์—…๊ทธ๋ ˆ์ด๋“œ๋จ์— ๋”ฐ๋ผ ์„œ๋ฒ„ ๋ Œ๋”๋ง์ด ์•ฝํ•˜๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ์ ์šฉ.

TypeScript ๋ฐ RN.๋” ๋‚˜์€ ์ง€์›์„ ๋ฐ”๋ž๋‹ˆ๋‹ค

๋‹ค๋ฅธ ๊ฒƒ์„ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. ๊ธฐ๋ณธ namespace ์ œ๊ณตํ•˜์„ธ์š”.

dva๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•ญ์ƒ reducer ์ ‘๋‘์‚ฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  dva์˜ ํ˜„์žฌ ๊ตฌํ˜„์ด namespace ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ namespace ๋Š” default (๋˜๋Š” global , * )์ด๊ณ  model ์•„๋ž˜์˜ reducers ๋Š” ์ ‘๋‘์‚ฌ ์—†์Œ

๊ฐœ์ธ์ ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค.

  • redux-saga ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ผ๋ถ€ ๊ธฐ๋Šฅ(์˜ˆ: async/await ์ง€์›)์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋ชจ๋“ˆ๋กœ ๋ถ„ํ• (์˜ˆ: ๋‹จ์ผ ์ƒ์ , ๋‹จ์ผ ๋ผ์šฐํ„ฐ)
  • ์ค‘์ฒฉ ๋ชจ๋ธ ์ง€์›

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ ๋ชจ๋ธ vuex ์— ๋”ฐ๋ผ redux ์“ด ๊ธฐ์ค€์  : https://github.com/d-band/yax

์„œ๋ฒ„์ธก์—์„œ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค!

๊ฒฝ๋กœ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ
์‚ฌ์‹ค, ๋‚˜๋Š” ๊ธฐ๋Šฅ๋ณ„๋กœ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ๋‚˜๋ˆ„๊ณ  ๋ชจ๋ธ, ์„œ๋น„์Šค ๋ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•จ๊ป˜ ๋„ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ฌ๋Ÿฌ ์นดํƒˆ๋กœ๊ทธ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์Œ์˜ ํ๋ฆ„์ด ํŒŒ๊ดด๋ฉ๋‹ˆ๋‹ค. ์ˆญ๊ณ ํ•œ ํƒญ์—์„œ ์—ด๋ฆฐ user.js๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด ์ด๋ฏธ user.jsx, user.model.js, user.service.js์™€ ๊ฐ™์ด ์ด๋ฆ„์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. user/model.js, service.js, container.js๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค.

@zheeeng ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ์ด ์ด์ œ ์ง€์›๋˜๋ฉฐ dva๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ์— ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

@xufei
@sorrycc

๋ชจ๋ธ๋ง์„ ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๊ดดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์†๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ๋‹ˆ๊นŒ?

์ˆ˜๋™ ์ œ์–ด๋Š” ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. GC ์„ธํŠธ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

pathToRegexp๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค. ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ์ปดํŒŒ์ผ ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•ฉ์˜๋Š” ๊ตฌ์„ฑ๋ณด๋‹ค ๋‚ซ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋‚˜ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ์˜ ๊ฒฐํ•ฉ์„ ์ค„์ž…๋‹ˆ๋‹ค.

ํšจ๊ณผ ์‚ฌ์—…์ด ๋„ˆ๋ฌด ๋ฌด๊ฒ๊ณ  ๋ชจ๋ธ ํ™•์žฅ์˜ ์•„์ด๋””์–ด๊ฐ€ ์ƒ๋‹นํžˆ ์ข‹์Šต๋‹ˆ๋‹ค.

@nihgwu๋Š” ๊ฐœ์ธ์ ์œผ๋กœ "

@sorrycc dva 2.0์— ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

dva-cli๊ฐ€ TypeScript ์ƒ์šฉ๊ตฌ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๊ฐ•๋ ฅํžˆ ๋ฐ”๋ž๋‹ˆ๋‹ค.

dva-core๋Š” ์ด๋ฏธ WeChat ์• ํ”Œ๋ฆฟ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@yautah๊ฐ€ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•œ ํ›„ ๊ณ„ํš์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dva-core๋Š” redux ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์žฌ์บก์Šํ™”๋งŒ ์ œ๊ณตํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ€์ผ๋Ÿฌ์Šค๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด dva-cli๋ฅผ ์ง€์›ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ssr์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HRM ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•, API ์ž‘์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ์Œ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰