Redux: μΊ”νŠΈ μƒνƒœκ°€ λ³€ν˜•λ˜λŠ” 이유 ....

에 λ§Œλ“  2015λ…„ 09μ›” 20일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: reduxjs/redux

μ•ˆλ…•ν•˜μ„Έμš”,

λ‚˜λŠ” λΆˆλ³€μ„±μ— λŒ€ν•΄ 관심을 가지고 μ½μ—ˆμœΌλ©° μ–΄λ–»κ²Œ 당신이 λ‹Ήμ‹ μ˜ μƒνƒœλ₯Ό λ³€κ²½ν•΄μ„œλŠ” μ•ˆλ˜λŠ”μ§€ μ½μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κ·Έ 이유λ₯Ό μ–΄λŠ 정도 μ΄ν•΄ν•˜μ§€λ§Œ, "μƒˆ 객체λ₯Ό λ§Œλ“œλŠ” 데 μ†Œμš”λ˜λŠ” μ‹œκ°„μ— λŒ€ν•œ 우렀"츑면은 JSμ—μ„œ 이것이 μ–Όλ§ˆλ‚˜ λΉ λ₯΄κ±°λ‚˜ 느린 지 μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ±°λ‚˜ λ‹€λ₯Έ 것을 λ†“μΉ˜κ³ μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€.

일반적으둜 μƒˆ 객체λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ 이전 객체λ₯Ό μƒˆ 객체에 λ³΅μ œν•˜κ³  μƒˆ μƒνƒœ μΆ”κ°€ (λ˜λŠ” λΉΌκΈ°)λ₯Ό μΆ”κ°€ν•˜λŠ” 것은 κΈ°μ‘΄ μƒνƒœλ₯Ό μˆ˜μ •ν•˜λŠ” 것보닀 μ‹œκ°„μ΄ 더 많이 κ±Έλ¦¬λŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λ‚˜λŠ” λΆˆλ³€μ˜ 것이 μ™œ κ·Έλ ‡κ²Œ μ€‘μš”ν•œμ§€ μ΄ν•΄ν•˜λ €κ³  λ…Έλ ₯ν•˜κ³  있으며 그것이 λ‚΄κ°€ 보지 λͺ»ν•˜λŠ” μ‚¬μŠ¬ μ•„λž˜μ˜ λ‹€λ₯Έ 것에 영ν–₯을 λ―ΈμΉ©λ‹ˆ 까?

κ²Œλ‹€κ°€ .. Reductκ°€ μ œκ³΅ν•˜λŠ” λ§Žμ€ 것듀이 λ°˜μ‘ 코어에 μΆ”κ°€ 될 수 있고, 심지어 DOM diffing 엔진을 ν™œμš©ν•  μˆ˜λ„ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 심지어 μƒνƒœλ₯Ό λ³€κ²½ν•΄μ•Όν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό κ²°μ •ν•˜λŠ” 데 도움이 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” 과정이 μƒνƒœλ₯Ό μƒˆλ‘œμš΄ μƒνƒœλ‘œ λΉ„κ΅ν•˜λŠ” 것보닀 λΉ λ₯΄κ±°λ‚˜ 느린 지 ν™•μ‹€ν•˜μ§€ μ•Šκ³  μ‹€μ œ μƒνƒœ 객체의 μΌλΆ€λ§Œ λ³€κ²½ (λ³€κ²½)ν•΄μ•Όν•©λ‹ˆκΉŒ?

λ‚˜λŠ”μ΄ λͺ¨λ“  것에 μƒλŒ€μ μœΌλ‘œ μƒˆλ‘­κΈ° λ•Œλ¬Έμ— μƒνƒœλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ°œλ…μ„ λ†“μΉ˜κ³  μžˆλ‹€λ©΄ μš©μ„œν•˜μ‹­μ‹œμ˜€. μ €λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ λΆˆλ³€ 데이터 만 λ Œλ”λ§ν•΄μ•Όν•œλ‹€λŠ” 생각을 μ’‹μ•„ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•΄μ„œλŠ” λΆˆλ³€μΈμ§€ μ•„λ‹Œμ§€ μ‹ κ²½ 쓰지 μ•Šκ±°λ‚˜ μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€. μ–΄λ”˜κ°€μ—μ„œ μ „λ‹¬λ˜λŠ” λ°μ΄ν„°μ΄λ―€λ‘œ κ³ κ΅°λΆ„νˆ¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λΆˆλ³€ μƒνƒœμ™€ λ³€κ²½ κ°€λŠ₯ μƒνƒœμ˜ λΉ„νŠΈ.

question

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

λͺ…ν™•ν•˜κ²Œν•˜κΈ° μœ„ν•΄ : μƒνƒœλŠ” λͺ¨λ“  μž‘μ—…μ—μ„œ 깊이 λ³΅μ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ³€κ²½λœ λΆ€λΆ„ 만 λ³΅μ œλ©λ‹ˆλ‹€ (λ‹€μ‹œ ν•œ 번 κΉŠμ΄κ°€ μ•„λ‹ˆλΌ λ³€κ²½λœ λ‚΄μš©μ— 따라 닀름). 예λ₯Ό λ“€μ–΄, TodoMVC μ•±μ—μ„œ 할일이 νŽΈμ§‘λ˜λ©΄ ν•΄λ‹Ή 할일 객체 만 λ³΅μ œλ©λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ 할일 κ°œμ²΄λŠ” λ™μΌν•©λ‹ˆλ‹€. λ¬Όλ‘  μƒˆ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 루트 μƒˆ ν•  일 λͺ©λ‘ 배열이 μƒμ„±λ˜μ§€λ§Œ 객체 μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•Šμ€ 경우 λ³΅μ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ³΄μ΄λŠ” κ²ƒλ§Œ 큼 비싸지 μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ λΉ„μš©μ΄ λ§Žμ΄λ“€ λ•Œ (예 : λΉ λ₯Έ λ°°μ—΄ λ³€κ²½) ꡬ쑰적 곡유 덕뢄에 맀우 λΉ λ₯Έ 볡사가 κ°€λŠ₯ν•œ Immutable.js와 같은 라이브러리λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Immutable.jsλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬μ˜ 큰 덩어리가 μž¬μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ— 큰 배열도 λ³΅μ‚¬ν•˜λŠ” 것이 κ·Έλ ‡κ²Œ 비싸지 μ•ŠμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ, Immutable.js의 μœ λ¬΄μ— 관계없이 λΆˆλ³€μ„±μ€ κ°œμ²΄κ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— _ μ •ν™•ν•˜κ²Œ _ λ³€κ²½λœ λ‚΄μš©μ„ μ•Œκ³  있기 λ•Œλ¬Έμ— 앱을 효율적으둜 λ‹€μ‹œ λ Œλ”λ§ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

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

그것은 λͺ¨λ‘ 예츑 κ°€λŠ₯μ„±κ³Ό 신뒰성에 κ΄€ν•œ κ²ƒμž…λ‹ˆλ‹€.

redux의 κ°μ†κΈ°λŠ” μˆœμˆ˜ν•œ κΈ°λŠ₯μ΄λ―€λ‘œ λΆ€μž‘μš©μ΄ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ κΈ°λŠ₯에 λŒ€ν•œ μ™ΈλΆ€ μƒνƒœλ₯Ό μ‚΄νŽ΄λ³΄κΈ° μ‹œμž‘ν•˜λ©΄ 더 이상 μˆœμˆ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그리고 그듀이 μˆœμˆ˜ν•˜μ§€ μ•ŠμœΌλ©΄ μ‹ λ’°ν•  수 없을 수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 그둜 인해 버그가 λ°œμƒν•˜λ©°, κ·Έ 쀑 λŒ€λΆ€λΆ„μ€ μΆ”μ ν•˜κΈ°κ°€ 맀우 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μˆœμˆ˜ν•œ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•¨μœΌλ‘œμ¨ λ°œκ²¬ν–ˆκ³ , λ‚΄ μ½”λ“œμ—μ„œ 였λ₯˜κ°€ 적게 λ°œμƒν•˜κ³  더 μƒμ‚°μ μž…λ‹ˆλ‹€. 그리고 ν•« λͺ¨λ“ˆ λ¦¬λ‘œλ”© (순수 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ ν™œμ„±ν™” 됨)은 κ·Έ 생산성에 더해 터보 μ°¨μ €μž…λ‹ˆλ‹€.

그리고 당신은 맀우 νŽΈλ¦¬ν•œ μ‹œκ°„ μ—¬ν–‰κ³Ό 같은 무료 κΈ°λŠ₯μ„λ°›μŠ΅λ‹ˆλ‹€.

# 328의 μ€‘λ³΅μœΌλ‘œ λ‹«μŠ΅λ‹ˆλ‹€.

λͺ…ν™•ν•˜κ²Œν•˜κΈ° μœ„ν•΄ : μƒνƒœλŠ” λͺ¨λ“  μž‘μ—…μ—μ„œ 깊이 λ³΅μ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ³€κ²½λœ λΆ€λΆ„ 만 λ³΅μ œλ©λ‹ˆλ‹€ (λ‹€μ‹œ ν•œ 번 κΉŠμ΄κ°€ μ•„λ‹ˆλΌ λ³€κ²½λœ λ‚΄μš©μ— 따라 닀름). 예λ₯Ό λ“€μ–΄, TodoMVC μ•±μ—μ„œ 할일이 νŽΈμ§‘λ˜λ©΄ ν•΄λ‹Ή 할일 객체 만 λ³΅μ œλ©λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ 할일 κ°œμ²΄λŠ” λ™μΌν•©λ‹ˆλ‹€. λ¬Όλ‘  μƒˆ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 루트 μƒˆ ν•  일 λͺ©λ‘ 배열이 μƒμ„±λ˜μ§€λ§Œ 객체 μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•Šμ€ 경우 λ³΅μ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ³΄μ΄λŠ” κ²ƒλ§Œ 큼 비싸지 μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ λΉ„μš©μ΄ λ§Žμ΄λ“€ λ•Œ (예 : λΉ λ₯Έ λ°°μ—΄ λ³€κ²½) ꡬ쑰적 곡유 덕뢄에 맀우 λΉ λ₯Έ 볡사가 κ°€λŠ₯ν•œ Immutable.js와 같은 라이브러리λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Immutable.jsλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬μ˜ 큰 덩어리가 μž¬μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ— 큰 배열도 λ³΅μ‚¬ν•˜λŠ” 것이 κ·Έλ ‡κ²Œ 비싸지 μ•ŠμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ, Immutable.js의 μœ λ¬΄μ— 관계없이 λΆˆλ³€μ„±μ€ κ°œμ²΄κ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— _ μ •ν™•ν•˜κ²Œ _ λ³€κ²½λœ λ‚΄μš©μ„ μ•Œκ³  있기 λ•Œλ¬Έμ— 앱을 효율적으둜 λ‹€μ‹œ λ Œλ”λ§ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

Ahh .... 이제 λ§ˆμ§€λ§‰ λΉ„νŠΈκ°€ μ˜λ―Έκ°€ μžˆμŒμ„ ν™•μΈν•˜μ‹­μ‹œμ˜€ ... 이둜써 ꡬ성 μš”μ†Œ λ Œλ”λ§ λ³€κ²½μœΌλ‘œ 인해 λ³€κ²½λœ μƒνƒœλ‘œ 인해 λ°˜μ‘ diff / redraw 엔진이 결과적으둜 더 λΉ λ₯΄λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. shouldComponentUpdate와 λΉ„μŠ·ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 이것에 μ˜ν•΄ 당신이 μ–΄λ–€ μƒνƒœλ‘œλ§Œ λ³€κ²½λœ μ»΄ν¬λ„ŒνŠΈ λ Œλ” λ³€κ²½ λ•Œλ¬Έμ— λ°˜μ‘ diff / redraw 엔진이 결과적으둜 더 λΉ λ₯΄λ‹€κ³  κ°€μ •ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. shouldComponentUpdate와 λΉ„μŠ·ν•©λ‹ˆλ‹€.

μ •ν™•νžˆ react-redux λŠ” λΆˆλ³€μ„± 보μž₯ 덕뢄에 곡격적인 shouldComponentUpdate λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

@gaearon 이 ν•˜λ‚˜λ₯Ό 쑰금

λ˜ν•œ λΉ„μš©μ΄ λ§Žμ΄λ“€ λ•Œ (예 : λΉ λ₯Έ λ°°μ—΄ λ³€κ²½) ꡬ쑰적 곡유 덕뢄에 맀우 λΉ λ₯Έ 볡사가 κ°€λŠ₯ν•œ Immutable.js와 같은 라이브러리λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ €λŠ” reduxλ₯Ό μ‚¬μš©ν•˜μ—¬ μ΅œλŒ€ 8000 개 μœ„μΉ˜λ‘œ μ˜¬λΌκ°€λŠ” μ–΄λ ˆμ΄μ— λŒ€ν•œ μ—…λ°μ΄νŠΈλ₯Ό μ²˜λ¦¬ν•˜κ³  있으며 μ²˜λ¦¬λŸ‰μ΄ 100ms λ‹Ή 10-100 개의 λ³€κ²½ μ˜μ—­μ—μžˆμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒν•©λ‹ˆλ‹€. reduxλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ νŒ¨λ°°ν•˜λŠ” μ‹Έμ›€μ„ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?
DOM이 μ•„λ‹Œ μΊ”λ²„μŠ€λ₯Ό 톡해 μƒνƒœλ₯Ό ν‘œν˜„ν•  κ³„νšμ΄μ§€λ§Œ, κ²½ν—˜μƒ μ—…λ°μ΄νŠΈ λΉˆλ„κ°€ 문제λ₯Ό μΌμœΌν‚€λŠ” 지 μ—¬λΆ€λ₯Ό μ΄ν•΄ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

@dougajmcdonald : 첫 번째 μ§ˆλ¬Έμ€ κ·Έ μž‘μ—…μ„ μ–΄λ–€ 식 μœΌλ‘œλ“  일괄 처리 ν•  수 β€‹β€‹μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 각 κ°œλ³„ μ—…λ°μ΄νŠΈλ₯Ό UI의 별도 λ‹€μ‹œ 그리기둜 ν‘œν˜„ν•΄μ•Όν•˜λ‚˜μš”?

κ·Έ 외에도 Redux κ΄€λ ¨ μ„±λŠ₯에 λŒ€ν•œ λ‹€μŒ λ¦¬μ†ŒμŠ€λ₯Ό μ‚΄νŽ΄λ³Ό 것을 μ œμ•ˆν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ Reactiflux μ±„νŒ… 채널 μ—μ„œ 이것에 λŒ€ν•΄ 더 많이 κΈ°μ©λ‹ˆλ‹€ .

@markerikson λΆˆν–‰νžˆλ„ κ·Έλ ‡μŠ΅λ‹ˆλ‹€. κ²Œμž„μ˜ κ°œλ…μ—λŠ” 비ꡐ적 큰 데이터 ꡬ쑰에 λŒ€ν•œ λ§Žμ€ λΉ λ₯Έ μ—…λ°μ΄νŠΈκ°€ ν¬ν•¨λ©λ‹ˆλ‹€.
10-100 개의 λ³€κ²½ 사항이 λͺ¨λ‘ λ‹€μ‹œ 그리기λ₯Ό νŠΈλ¦¬κ±°ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. 10-100 변경은 100ms λ‹Ή 단일 λ‹€μ‹œ 그리기둜 ν‘œμ‹œλ˜λŠ” μƒνƒœ λ³€κ²½μž…λ‹ˆλ‹€.
κ·Έλž˜μ„œ 제 μ§ˆλ¬Έμ€ μ‹€μ œλ‘œ μ—…λ°μ΄νŠΈλ₯Ό 100ms λ‹Ή 10-100 개의 μƒνƒœ λ³€κ²½μœΌλ‘œ 일괄 μ²˜λ¦¬ν•˜λ©΄ redux λ‚΄μ˜ μƒνƒœ 관리가 100ms의 μ—μŠ€ν¬ ν•œ μ°½ λ‚΄μ—μ„œ ν˜„λͺ…ν•˜κ²Œ μ™„λ£Œλ˜λŠ” λ°©μ‹μœΌλ‘œμ΄λ₯Ό 효과적으둜 처리 ν•  수 β€‹β€‹μžˆμ„κΉŒμš”? λ’€μ²˜μ§€κΈ° μ‹œμž‘ν•˜μ§€ μ•Šκ³  λ‹€μ‹œ 그릴 수 μžˆμŠ΅λ‹ˆλ‹€.
μƒνƒœ μ—…λ°μ΄νŠΈλŠ” 기본적으둜 크기가 8000 인 λ°°μ—΄μ—μ„œ 3-4 개의 속성을 λ³€κ²½ν•˜λŠ” 것을 ν¬ν•¨ν•˜λ―€λ‘œ λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό λ³€κ²½ν•˜μ—¬ ms λ‹Ή 1-10 번 μƒˆ 배열을 λ§Œλ“œλŠ” 것에 λŒ€ν•΄ 이야기 ν•  κ²ƒμž…λ‹ˆλ‹€ (λΆˆλ³€μœΌλ‘œ μœ μ§€ν•˜κ³  μ‹Άλ‹€κ³  κ°€μ •). λ°°μ—΄ 인덱슀 λ‚΄μ˜ 개체. κ°œμ²΄κ°€ 맀우 μž‘μŠ΅λ‹ˆλ‹€ (3-4 개의 속성, λͺ‡ 개의 숫자 및 λͺ‡ 개의 μž‘μ€ λ¬Έμžμ—΄).

이것이 Dan이 μ œμ•ˆν•œ κ²ƒμ²˜λŸΌ λΆˆλ³€μ„±μ„ μ‚¬μš©ν•˜λŠ” 것이 κ°€λŠ₯ν•œ ν•œ λ§Žμ€ μ–΄λ ˆμ΄λ₯Ό μž¬μ‚¬μš© ν•  수 μžˆλ‹€λ©΄ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€κ³  μƒκ°ν–ˆλ˜ μ΄μœ μž…λ‹ˆλ‹€.

@dougajmcdonald : 음, "Redux의 μƒνƒœ 관리"λŠ” μ‹€μ œλ‘œ _ 당신이 제곡 ν•œ ν•˜λ‚˜μ˜ 루트 감속기 ν•¨μˆ˜μΌλΏμž…λ‹ˆλ‹€. :)

Immutable.jsλŠ” 마술 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 은색 μ΄μ•Œμ΄ μ•„λ‹™λ‹ˆλ‹€. μ–΄λ–€ 것은 더 빨리 λ§Œλ“€κ³  λ‹€λ₯Έ 것은 더 느리게 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. Immutable.js κ΄€λ ¨ μ„±λŠ₯ κ³ λ € 사항에 λŒ€ν•œ μ—¬λŸ¬ 기사 κ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ†”μ§νžˆ λ§ν•΄μ„œ, μ‚¬μš© 사둀λ₯Ό κ°μ•ˆν•  λ•Œ 이둠상 원할 경우 직접 λ³€ν˜•μ„ 더 많이 _ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ _. ν•„μžμ˜ κ²Œμ‹œλ¬Ό Idiomatic Redux, Part 1-Implementation and Intent 에 λ”°λ₯΄λ©΄ Redux μ½”μ–΄ μžμ²΄λŠ” μ‹€μ œλ‘œ 변이에 λŒ€ν•΄ μ „ν˜€ μ‹ κ²½ 쓰지 μ•ŠμŠ΅λ‹ˆλ‹€. 주둜 DevTools뿐만 μ•„λ‹ˆλΌ React-Redux UI λ ˆμ΄μ–΄λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. 이제 λŒμ—°λ³€μ΄λŠ” Reduxλ₯Ό μ‚¬μš©ν•˜λ €λŠ” μ˜λ„κ°€ μ•„λ‹ˆμ§€λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

제 개인적인 쑰언은 κ°„λ‹¨ν•˜κ²Œ μ‹œμž‘ν•˜λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. 일반 JS 객체와 배열을 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. "직접"λ˜λŠ” μ‚¬μš© κ°€λŠ₯ν•œ λ§Žμ€ λΆˆλ³€ μ—…λ°μ΄νŠΈ μœ ν‹Έλ¦¬ν‹° 라이브러리 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜μ—¬

그런 λ‹€μŒ μ—¬κΈ°μ—μ„œ 일괄 처리, λ””μŠ€νŒ¨μΉ˜ κ°μ†Œ, 논리 μ—…λ°μ΄νŠΈ λ“±μ˜ μΆ”κ°€ μ΅œμ ν™” μž‘μ—…μ„ μˆ˜ν–‰ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@markerikson λ―Έλ¬˜ν•œ μ°ν˜” μŠ΅λ‹ˆλ‹€! : p λ§žμ•„μš”. ν˜„μž¬ μƒν™©μ˜ 감속기 츑면은 기본적으둜 μƒλ‹Ήνžˆ 큰 λ°°μ—΄μ˜ 생성 및 νŒŒκ΄΄μ΄μ§€λ§Œ μ‹€μ œ λ¬Έμ œλŠ” μ΅œμ’… λͺ©ν‘œκ°€ 될 λ•Œ λ°˜μ‘ ꡬ성 μš”μ†Œ 수λͺ…μ£ΌκΈ° λΉ„νŠΈ 및 λ΄…μŠ¬λ ˆμ΄ 일 κ°€λŠ₯성이 더 λ†’λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 60ish FPS둜 μ΄μƒμ μœΌλ‘œ λ Œλ”λ§λ˜λŠ” μΊ”λ²„μŠ€ μš”μ†Œ.
λΆˆλ³€μ— λŒ€ν•œ μš”μ κ³Ό 직접 변이에 λŒ€ν•œ μš”μ μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚˜λŠ” 쑰금 읽고 이것듀도 κ³ λ €ν•  κ²ƒμž…λ‹ˆλ‹€.
ν˜„μž¬ λ‚΄ 생각 ν”„λ‘œμ„ΈμŠ€λŠ” μΊ”λ²„μŠ€μ—μ„œ redux μƒνƒœλ₯Ό λΆ„λ¦¬ν•˜κ³  더 λ§Žμ€ μ›€μ§μ΄λŠ” λΆ€λΆ„κ³Ό ν•¨κ»˜ pub / sub (이미 μ—°κ²° ν•œ 방식)λ₯Ό 톡해 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‹€μŒμ—μ„œ λ³€κ²½ν•  μƒκ°μž…λ‹ˆλ‹€.
pubsub> dispatch ()> reducer> redux state> react component stuff> canvas render.

에:
pubsub> 둜컬 ꡬ성 μš”μ†Œ μƒνƒœ> μΊ”λ²„μŠ€ λ Œλ”λ§

μ•±μ˜ μΊ”λ²„μŠ€ 뢀뢄이 μ•„λ‹Œ λ‚˜λ¨Έμ§€ UIμ—λŠ” μ—¬μ „νžˆ reduxλ₯Ό μ‚¬μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

κ·€ν•˜μ˜ μ§ˆλ¬Έμ€ μ™„μ „νžˆ μœ νš¨ν•©λ‹ˆλ‹€. μ‹€μ œλ‘œ vuexλΌλŠ” redux의 vuejs κ΅¬ν˜„μ€ λ³€μ΄μ˜ κ°œλ…μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 'κ°μ†Œ 자'λŠ” 사싀 λŒμ—°λ³€μ΄λΌκ³  뢈리며 쀑앙화 된 μž₯μ†Œμ—μ„œ μƒνƒœλ₯Ό μˆ˜μ •ν•˜λŠ” ν•œ λͺ¨λ“  것이 μ •μƒμ΄μ–΄μ•Όν•©λ‹ˆλ‹€. 이것은 vueκ°€ μ•±μ˜ μƒνƒœμ— κ΄€μ°°μž 및 기타 ν•­λͺ©μ„ μΆ”κ°€ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•˜λ―€λ‘œ μ–ΈκΈ‰ν–ˆλ“―μ΄ 객체λ₯Ό κ΅μ²΄ν•˜λŠ” 것보닀 μˆ˜μ •ν•˜λŠ” 것이 vue의 caeμ—μ„œ 더 ν•©λ¦¬μ μž…λ‹ˆλ‹€. ReduxλŠ” λΆˆλ³€μ΄λ©° κ²°κ΅­ 두 μ ‘κ·Ό λ°©μ‹μ˜ μ„±λŠ₯은 VS vue 가상 DOM μ—…λ°μ΄νŠΈμ— λ°˜μ‘ν•˜μ—¬ λͺ¨λ“  κ²½μš°μ— ν•˜λ‚˜κ°€ λ‹€λ₯Έ 것보닀 λ‚«λ‹€κ³  말할 μˆ˜μ—†λŠ” μ‹œμ μ—μ„œ 거의 λ™μΌν•©λ‹ˆλ‹€.

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