https://kimmsoll.github.io/minishop-js/
// button들의 부모인 nav에 eventListener를 등록한다.
const buttons = document.querySelector("nav");
const setEventListener = (items) => {
// 로고 누르면 모든 옷 출력
logo.addEventListener("click", (event) => {displayItems(items)});
// 버튼에 맞게 필터링 되어 출력
buttons.addEventListener("click", (event) => {
displayItems(items.filter((item) => item[event.target.dataset.key] === event.target.dataset.value));
})
};
const onClick = (event, items) => {
const dataset = event.target.dataset;
const key = dataset.key;
const value = dataset.value;
if(key === undefined || value === undefined){
event.preventDefault();
} else {
displayItems(items.filter((item) => item[key] === value));
}
}
const setEventListener = (items) => {
logo.addEventListener("click", () => displayItems(items));
buttons.addEventListener("click", (event) => onClick(event, items));
};
// item 전달 예시
const onClick = (item) => console.log(item);
buttons.addEventListener("click", () => onClick(item));
// item, event 전달 예시
const onClick = (event, item) => console.log(item[event.target.dataset.key]);
buttons.addEventListener("click", (event) => onClick(event, item));
참고) https://developer.mozilla.org/ko/docs/Web/Performance/Critical_rendering_path
DOM -> CSSOM -> RenderTree -> layout
1. DOM 트리로 변환
html 파일을 분석하여 만들어짐. js에 의해 DOM이 변경될 수 있다.
2. CSSOM 구축
DOM을 스타일링하기 위한 모든 CSS 정보 포함시킴.
3. RenderTree 생성
DOM과 CSS를 결합하여 사용자에게 보여지는 콘텐츠를 RenderTree로 만듦.
4. layout : 크기 계산하여 레이아웃 짜는 단계
5. paint : 포토샵으로 생각하면, 레이어를 나누는 단계
6. composition : 레이어 순서대로 브라우저 위에 표시하는 단계
참고) https://www.youtube.com/watch?v=FEBkne7Nyu4
https://github.com/pwa-builder/pwabuilder-web/blob/V2/src/assets/next-steps.md
~/Downloads/ngrok http 포트번호
명령하면 https 로 된 url 받을 수 있음.<link rel="manifest" href="manifest.json" />
// head 마지막에 삽입
<script type="module">
import 'https://cdn.jsdelivr.net/npm/@pwabuilder/pwaupdate';
const el = document.createElement('pwa-update');
document.body.appendChild(el);
</script>
기본적으로 넣어야 할 것을 넣었고, 일정 점수를 받아서 생성에는 성공했지만, 정말 유저들에게 필요한 것이 무엇인지, 어떻게 UI를 구현해야 할 지, 본질을 놓치면 안된다는 것을 잊지 말자!