본문 바로가기
개발/FRONT

data attribute와 dataset

by 잠킴98 2024. 1. 7.
반응형


노드를 웹 서버로 사용하는 경우, 클라이언트(프런트엔드)와 빈번하게 데이터를 주고받게 됩니다. 

이때 서버에서 보내준 데이터를 프런트엔드 어디에 넣어야 할지 고민이 됩니다.

프런트엔드에 데이터를 내려보낼 때 첫 번째로 고려해야 할 점은 보안입니다. 

클라이언트를 믿지 말라는 말이 있을 정도로 프런트엔드에 민감한 데이터를 내려보내는 것은 실수입니다. 

비밀번호 같은 건 절대 내려보내지 않도록 합시다.

보안과 관련이 없는 데이터들은 자유롭게 프런트엔드로 보내도 됩니다.

자바스크립트 변수에 저장해도 되지만 HTML5에도 HTML과 관련된 데이터를 저장하는 공식적인 방법이 있습니다. 

 

바로 data attribute입니다.


<ul>
<li data-id="1" data-user-job="programmer">Zero</li>
<li data-id="2" data-user-job="designer">Nero</li>
<li data-id="3" data-user-job="programmer">Hero</li>
<li data-id="4" data-user-job="ceo">Kero</li>
</ul>

 

<script>
console.log(document.querySelector('li').dataset);
// { id:'1', userJob:'programmer' }
</script>


위와 같이 HTML 태그의 속성으로, data-로 시작하는 것들을 넣어줍니다.


이들이 data attribute입니다. data-id와 data-user-job을 주었습니다.

화면에 나타나지는 않지만 웹 애플리케이션 구동에 필요한 데이터들입니다. 나중에 이 데이터들을 사용해 서버에 요청을 보내게 됩니다.


data attribute의 장점은 자바스크립트로 쉽게 접근할 수 있다는 점입니다. 

script 태그를 보면 dataset 속성을 통해 첫 번째 li 태그의 data attribute에 접근하고 있습니다. 

단, data attribute 이름이 조금씩 변형되었습니다. 

 

앞의 data- 접두어는 사라지고 - 뒤에 위치한 글자는 대문자가 됩니다.

 

data-id는 id, data-user-job은 userJob이 되는 것입니다.

반대로 dataset에 데이터를 넣어도 HTML 태그에 반영됩니다.

dataset.monthSalary = 10000;을 넣으면 data-month-salary="10000"이라는 속성이 생깁니다.

 

반응형

'개발 > FRONT' 카테고리의 다른 글

NPM이란?  (0) 2024.01.13
jquery json을 form으로, form을 json으로  (0) 2024.01.13
ES2015+(async, await)  (0) 2024.01.07
ES2015+(Promise)  (0) 2024.01.07
ES2015+(화살표 함수, 비구조화 할당)  (0) 2024.01.07