simple-shadow-dom(ssd)
What is ssd?
web api
에 이미 구현되어 있는 shadow dom에 추가적인 메소드를 제공해서 보다 간편하게 shadow dom을 사용할수 있는 모듈입니다.
Install
npm i simple-shadow-dom
Basic usage
import simpleShadowDom from 'simple-shadow-dom'
class Component extends simpleShadowDom {
constructor() {
super()
...
}
}
Methods
✅ simple-shadow-dom
은 기본web-api
를 확장했기 때문에 기존 메소드를 모두 활용할수 있습니다. https://developer.mozilla.org/ko/docs/Web/Web_Components/Using_shadow_DOM
static render
Type: (rootElement, ssdClass, initTagName) => void
import simpleShadowDom from 'simple-shadow-dom'
class Component extends simpleShadowDom {
...
}
const root = document.getElementById('root')
simpleShadowDom.render(root, Component, 'shadow-component')
static setEachStyle
Type: (cssTemplate) => void
const cssTemplate = `
div {
background: red;
h1 {
color: blue;
}
}
`
simpleShadowDom.setEachStyle(cssTemplate)
-
🔸 ssd
로 생성한 모든shadow tree
에 작성한css
가 적용됩니다. -
🔸 nested css
가 지원됩니다. -
🔺 global css
와는 다르게 각각 컴포넌트에css
가 추가됩니다.
setTemplate
Type: (htmlTemplate) => void
import simpleShadowDom from 'simple-shadow-dom'
const template = `
<div>
<h1>Hello World!</h1>
</div>
`
class Component extends simpleShadowDom {
constructor() {
super()
this.setTemplate(template)
...
}
}
-
🔸 현재 컴포넌트에template
을 저장합니다. -
🔸 아래와 같이 변수를 받아 사용할수도 있습니다. 변수를 사용하는 방법은 setState 참조
const template = (state) => `
<div>
<h1>${state}</h1>
</div>
`
setStyle
Type: (cssTemplate) => void
import simpleShadowDom from 'simple-shadow-dom'
const cssTemplate = `
div {
background: red;
h1 {
color: blue;
}
}
`
class Component extends simpleShadowDom {
constructor() {
super()
this.setStyle(cssTemplate)
...
}
}
-
🔸 현재shadow tree
에 작성한css
가 적용됩니다. -
🔸 nested css
가 지원됩니다.
setState
Type: (props) => void
import simpleShadowDom from 'simple-shadow-dom'
const props = { text: 'text' }
class Component extends simpleShadowDom {
constructor() {
super()
this.setState(props)
...
}
}
-
🔸 render메소드가 실행될때props
를 만들어뒀던template
에 주입합니다. -
🔸 default props
는null
입니다.
render
Type: () => void
import simpleShadowDom from 'simple-shadow-dom'
class Component extends simpleShadowDom {
constructor() {
super()
...
this.render()
}
}
-
🔸 저장해놨던template
과css
,props
를 이용해서 실제 돔에rendering
합니다.