Skip to content

Custom Element

Jeongeun-Choi edited this page Dec 13, 2020 · 1 revision

Custom Element

Custom Element๋Š” ์›น ์ปดํฌ๋„ŒํŠธ์˜ 4๊ฐ€์ง€ ํ‘œ์ค€ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Web Component

Web Component๋Š” JavaScript, CSS, HTML๋“ค์„ ์ปดํฌ๋„ŒํŠธํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ 4๊ฐœ์˜ ํ‘œ์ค€์„ ๋ฌถ์–ด์„œ ๋ถ€๋ฅด๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์ผ๋ฐ˜์ ์ธ ๋งˆํฌ์—… ๊ตฌ์กฐ์—์„  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž Custom Element๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML Element์™€ JavaScript Class๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค์–ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์บก์Šํ™”ํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์˜๋ฏธ ์—†๋Š” div ํƒœ๊ทธ ๋‚จ์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ•ด๋‹น ํƒœ๊ทธ๊ฐ€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŠน์ • ์ง€์ ์—์„œ ์‹คํ–‰๋˜๋Š” ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • connectedCallback: ์ปค์Šคํ…€ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ document์˜ DOM์— ์—ฐ๊ฒฐ๋  ๋•Œ ๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.
    • attributeChangedCallback: ์ปค์Šคํ…€ ์—˜๋ฆฌ๋จผํŠธ์˜ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ์ถ”๊ฐ€, ์ƒ์„ฑ, ์‚ญ์ œ๊ฐ€ ๋  ๋•Œ ํ˜ธ์ถœ์ด ๋œ๋‹ค.
    • disconnectedCallback: ์ปค์Šคํ…€ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ document์˜ DOM์— ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.
    • adoptedCallback: ์ปค์Šคํ…€ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ƒˆ๋กœ์šด document๋กœ ์ด๋™๋  ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.

์™œ ์ปค์Šคํ…€ ์—˜๋ฆฌ๋จผํŠธ๋Š” -๋ฅผ ์ด์šฉํ•ด์„œ ํƒœ๊ทธ ์ด๋ฆ„์„ ์ •ํ•ด์•ผํ• ๊นŒ?

  • HTMLํŒŒ์„œ๊ฐ€ JS์—์„œ ์„ ์–ธ๋œ Custom Elements๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ์—์„œ๋„ Custom Elements๊ฐ€ ๋ ์ง€๋„ ๋ชจ๋ฅด๋Š” ํƒœ๊ทธ๋“ค์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
  • HTML ํ‘œ์ค€์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด์„œ Custom Elements๋กœ ์ •์˜๋˜์ง€ ์•Š๋Š” ํƒœ๊ทธ๋“ค์€ HTMLUnknownElement ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ Custom Elements๋“ค์€ HTMLElement๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์ƒ์†๋˜์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— HTMLUnknownElement ์ƒ์†์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

connectedCallback & disconnectedCallback

Custom Element๊ฐ€ DOM์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ ์‹คํ–‰๋œ๋‹ค. ์ด๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๊ฐ€ ์ถ”๊ฐ€, ์‚ญ์ œ๋˜๋Š”๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•ด๋„๋œ๋‹ค. ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ์ž๋™์œผ๋กœ ํŒŒ๊ดด๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ํ•ด์ค„ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

attributeChangedCallback & observedAttributes

observedAttributes : ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ ์‹ถ์€ ์†์„ฑ๋“ค์˜ ์ด๋ฆ„์„ ๋‚˜์—ด ํ•ด์•ผํ•œ๋‹ค.

static get observedAttributes(){
	return ['type'];
}

๐Ÿ“„ Documents

๐Ÿ“Œ Rules

๐Ÿ“ Agile Process

๐Ÿ“† Week1 Meeting Log
๐Ÿ“† Week2 Meeting Log
๐Ÿ“† Week3 Meeting Log
๐Ÿ“† Week4 Meeting Log
๐Ÿ“† Week5 Meeting Log

๐Ÿ“Ž Research

๐Ÿ” References

๐Ÿ‘ซํ”ผ์–ด์„ธ์…˜

๐Ÿ“† Week2 Peer Session
๐Ÿ“† Week3 Peer Session
๐Ÿ“† Week4 Peer Session

๐Ÿค” ํšŒ๊ณ 

๐Ÿ“ข ๊ธฐ์ˆ ๊ณต์œ 

๐Ÿ”‰ Web Audio API

๐Ÿš€Custom Element

๐Ÿ™ˆ Activity

๐Ÿ—‘๏ธ ํœด์ง€ํ†ต

Clone this wiki locally