Back to posts

Phoenix LiveView Double Mount

View count: -

https://kobrakai.de/kolumne/liveview-double-mount/

LiveView λŠ” HTTP request λ₯Ό λ°›μ•˜μ„ λ•Œ static render κ°€ HTML 을 κ·Έλ €μ„œ response ν•œλ‹€. 이λ₯Ό client μ—μ„œ λ³΄μ—¬μ£Όλ©΄μ„œ javascript μ½”λ“œκ°€ μ‹€ν–‰λ˜μ–΄ server 와 websocket 연결이 맺어진닀. μ΄λ•ŒλΆ€ν„° state 변경에 따라 HTML 이 변경될 뢀뢄을 μ „μ†‘ν•΄μ„œ κ΅μ²΄ν•˜μ—¬ 화면을 κ·Έλ¦°λ‹€.

LiveView 첫 μ—°κ²°μ—μ„œ 이런 double mount λŠ” ν”Όν•  수 μ—†λ‹€.

이 λ•Œ κ°€μž₯ μ‹ κ²½μ“°μ΄λŠ” 것이 데이터λ₯Ό λΆˆλŸ¬μ˜€λŠ” 뢀뢄인데, 두 번의 mount 각각 데이터λ₯Ό 뢈러였게 λ˜λ―€λ‘œ 괜히 신경이 쓰인닀.

이λ₯Ό ν•΄μ†Œν•˜κΈ° μœ„ν•΄ HTTP μ—°κ²° λ•Œ session 에 데이터λ₯Ό λ„£κ³  이λ₯Ό websocket μ—°κ²°μ—μ„œ 받도둝 ν•˜λŠ” 방법, client μ—μ„œ caching ν•˜λŠ” 방법 등을 κ³ λ €ν•΄λ³Ό 수 μžˆμœΌλ‚˜ λ³„λ‘œ 쒋은 선택은 μ•„λ‹ˆλ‹€.

이 글을 읽기 μ „κΉŒμ§€ 바보 κ°™κ²Œλ„ assign_new/3 κ°€ HTTP μ—°κ²°μ—μ„œ 뢈러온 데이터λ₯Ό websocket μ—°κ²°μ—μ„œ μ€‘λ³΅ν•΄μ„œ λΆˆλŸ¬μ˜€μ§€ μ•ŠκΈ° μœ„ν•œ κΈ°λŠ₯이라고 μƒκ°ν•˜κ³  μ‚¬μš©ν•˜κ³  μžˆμ—ˆλŠ”λ°, plug, hook, parent LiveView λ“± μ—μ„œ 뢈러온 데이터λ₯Ό μ€‘λ³΅ν•΄μ„œ assign ν•˜μ§€ μ•ŠκΈ° μœ„ν•œ μš©λ„μ˜€λ‹€. 아무 의미 없이 μ‚¬μš©ν–ˆλ˜λ“―.

κ·Έλ™μ•ˆ 주둜 SEO κ°€ μ€‘μš”ν•˜μ§€ μ•Šμ€ backoffice 등을 LiveView 둜 λ§Œλ“€μ—ˆμ—ˆλŠ”λ°, 이런 κ²½μš°λŠ” λ‹¨μˆœνžˆ websocket 연결인 경우, 즉 connected?/1 κ°€ true 인 경우 만 데이터λ₯Ό λΆˆλŸ¬μ˜€λ„λ‘ ν•˜λŠ” 것도 방법이닀.

Comments