Vue: κΈ°λŠ₯: 뢀뢄에 λŒ€ν•œ λŒ€μ²΄ μ½˜ν…μΈ 

에 λ§Œλ“  2016λ…„ 04μ›” 11일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: vuejs/vue

뢀뢄은 슬둯과 λ§ˆμ°¬κ°€μ§€λ‘œ λŒ€μ²΄ μ½˜ν…μΈ λ₯Ό 지원해야 ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ ν…œν”Œλ¦Ώμ„ νŠΉμ • λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•  λ•Œ ν…œν”Œλ¦Ώμ˜ 가독성이 크게 ν–₯μƒλ©λ‹ˆλ‹€.
λ™μΌν•œ 논리 및 (μ™ΈλΆ€) ν…œν”Œλ¦Ώμ„ κ³΅μœ ν•˜λŠ” λ‹€λ₯Έ ꡬ성 μš”μ†Œ(예: PromptDialog)κ°€ νŒŒμƒλ˜μ–΄μ•Ό ν•˜λŠ” 일뢀 논리(예: Dialog)κ°€ μžˆλŠ” κΈ°λ³Έ ꡬ성 μš”μ†Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이것은 슬둯이 μ‚¬μš©λ˜λŠ” 것과 μœ μ‚¬ν•œ 뢀뢄을 μ‚¬μš©ν•˜μ—¬ λ‹¬μ„±λ˜μ§€λ§Œ μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹Œ ꡬ성 μš”μ†Œ κΈ°λ°˜μž…λ‹ˆλ‹€.
μ΄λŸ¬ν•œ ν…œν”Œλ¦Ώμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

<div>
  <div class="header">
    <partial name="header">
      <i class="fa-whatever"></i>
      {{title}}
    </partial>
  </div>
  <div class="body">
    <partial name="body">
      {{{body}}}
    </partial>
  </div>
  <div class="footer">
    <partial name="footer">
      <!-- some stuff for button rendering -->
    </partial>
  </div>
</div>

이 κΈ°λŠ₯이 μ—†μœΌλ©΄ λͺ¨λ“  λΆ€λΆ„ λ…Έλ“œμ˜ λ‚΄μš©μ„ ν…œν”Œλ¦Ώ 외뢀에 λ„£μ–΄μ•Ό ν•˜λ©° 쀑첩 뢀뢄이 있으면 더 λ‚˜λΉ μ§‘λ‹ˆλ‹€.
νŒŒμƒλœ κ²ƒμ˜ ν…œν”Œλ¦Ώμ—μ„œ κΈ°λ³Έ κ΅¬μ„±μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμ œμ— μ ‘κ·Ό - λ”°λΌμ„œ μ€‘μ²©λœ μΈμŠ€ν„΄μŠ€λ₯Ό κ°–λŠ” 것은 μ‹€μš©μ μ΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ 데이터/μ†Œν’ˆ 및 APIλ₯Ό μ™ΈλΆ€(μ˜μ‚¬ νŒŒμƒ)μ—μ„œ λ‚΄λΆ€λ‘œ λ¦¬λ””λ ‰μ…˜ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. (κΈ°λ³Έ) μΈμŠ€ν„΄μŠ€.

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

λ‚˜λŠ” 그것이 뢀뢄적인 것을 λ‚¨μš©ν•˜κ³  μžˆλ‹€κ³  λ§ν•˜κ³  μ‹Άλ‹€. ν•˜μœ„ μŠ€λ‹ˆνŽ«μ΄ ν•˜μœ„ 데이터 μ»¨ν…μŠ€νŠΈλ₯Ό μΈμ‹ν•˜λ©΄μ„œ μƒμœ„ μŠ€λ‹ˆνŽ«μ—μ„œ κ°€μ Έμ˜¨ 것이기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ ν•˜λŠ” 것은 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 κΈ΄λ°€ν•œ λΆ„λ¦¬μž…λ‹ˆλ‹€.

λŒ€ν™” μƒμž ꡬ성 μš”μ†ŒλŠ” μˆœμ „νžˆ ν”„λ¦¬μ  ν…Œμ΄μ…˜μ΄λ―€λ‘œ 자체 μƒνƒœλ₯Ό λ³΄μœ ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. μƒνƒœλ₯Ό μ „λ‹¬ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. μƒνƒœμ™€ ν‘œμ‹œλœ λ‚΄μš©μ€ λͺ¨λ‘ λŒ€ν™” μƒμžλ₯Ό μ‚¬μš©ν•˜λŠ” μƒμœ„ ꡬ성 μš”μ†Œμ— 속해야 ν•©λ‹ˆλ‹€.

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

μ£„μ†‘ν•©λ‹ˆλ‹€. λΆ€λΆ„ λŒ€μ‹  μŠ¬λ‘―μ„ μ‚¬μš©ν•˜λŠ” 것이 μ˜΅μ…˜μ΄ μ•„λ‹Œ 이유λ₯Ό μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.sweat_smile:
μ΄μœ κ°€ μžˆλ‚˜μš”?

μŠ¬λ‘―μ„ μ‚¬μš©ν•  λ•Œ μ˜μ‚¬ νŒŒμƒ _PromptDialog_μ—λŠ” λ‹€μŒ ν…œν”Œλ¦Ώμ΄ μžˆμŠ΅λ‹ˆλ‹€.

<dialog
  :foo.sync="foo"
  >
  <input
    v-model="thePromptedValue"
    slot="body"
    >
</dialog>

μ›λž˜ _Dialog_ ꡬ성 μš”μ†Œμ˜ λͺ¨λ“  속성 _foo_에 λŒ€ν•΄ μ™ΈλΆ€ _PromptDialog_에 λ™μΌν•œ 속성이 μžˆμ–΄μ•Ό ν•˜κ³  내뢀에 전달해야 ν•©λ‹ˆλ‹€. _Dialog_에 μ •μ˜λœ λͺ¨λ“  λ©”μ„œλ“œλ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. λ‚΄λΆ€ ν˜ΈμΆœμ„ μ „λ‹¬ν•˜λŠ” ν”„λ‘μ‹œλ₯Ό μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 μ„±κ°€μ‹  일이며 ꡬ성 μš”μ†Œ ν™•μž₯/클래슀 상속 뒀에 μžˆλŠ” 아이디어λ₯Ό λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 그것이 뢀뢄적인 것을 λ‚¨μš©ν•˜κ³  μžˆλ‹€κ³  λ§ν•˜κ³  μ‹Άλ‹€. ν•˜μœ„ μŠ€λ‹ˆνŽ«μ΄ ν•˜μœ„ 데이터 μ»¨ν…μŠ€νŠΈλ₯Ό μΈμ‹ν•˜λ©΄μ„œ μƒμœ„ μŠ€λ‹ˆνŽ«μ—μ„œ κ°€μ Έμ˜¨ 것이기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ ν•˜λŠ” 것은 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 κΈ΄λ°€ν•œ λΆ„λ¦¬μž…λ‹ˆλ‹€.

λŒ€ν™” μƒμž ꡬ성 μš”μ†ŒλŠ” μˆœμ „νžˆ ν”„λ¦¬μ  ν…Œμ΄μ…˜μ΄λ―€λ‘œ 자체 μƒνƒœλ₯Ό λ³΄μœ ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. μƒνƒœλ₯Ό μ „λ‹¬ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. μƒνƒœμ™€ ν‘œμ‹œλœ λ‚΄μš©μ€ λͺ¨λ‘ λŒ€ν™” μƒμžλ₯Ό μ‚¬μš©ν•˜λŠ” μƒμœ„ ꡬ성 μš”μ†Œμ— 속해야 ν•©λ‹ˆλ‹€.

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