TagWire

TagWire

Data에 꼬리표를 붙이다.

TagWire란?

웹서비스 등을 개발할 때, 완성된 결과물은 대부분이 HTML 태그에 Javascript 처리를 위한 코드, Server-side 코드가 혼합되어있는 형태입니다.

이는 최초 HTML -> Javascript -> Server-side 형태로 업무가 진행될 때는 큰 문제가 없지만, 한번 개발된 페이지의 디자인 변경 같은 수정이 발생하는 경우, HTML 부터 시작되는 변경사항들이 Javascript, Server-side 영역까지 영향을 주게 됩니다.

이런 상황이 되면, 서버 개발자는 HTML 구조가 어떻게 변했는지, class는 어디에 어떤게 추가되고 삭제되었는지 매번 확인해서 적용해야 되고, UI 개발자 입장에서는 마크업 구조나 class를 좀 더 효율적으로 관리할 수 있도록 개선하고 싶어도, 이미 개발된 페이지를 건드리는 것이 부담스러워 포기하기도 합니다.

"서로에게 영향을 최소화 할 수 있다면, 좀 더 나아지지 않을까?"

이렇게 시작된 고민은, 서버 개발자가 HTML 수정에 영향을 덜받고, UI 개발자는 개발이 된 페이지를 좀 더 자유롭게 코딩을 하고, 수정할 수 있도록, view영역에는 순수한 HTML 태그만 존재해야 한다는 결론에 도달했습니다.

그래서 데이터를 HTML에 쉽게 적용할 수 있는 도구가 필요했고, 그렇게 만들어진 것이 입니다.

Javascript를 잘 모르더라도 HTML에 데이터를 binding 하기 쉽게 도와줍니다.

를 개발하는 과정에서 실무에 도입해 직접 사용해보고 개선하는데 도움을 주신 서상식님께 감사드립니다.
그리고 장인혁, 조기승, 윤현승, 유주아, 김대경님께도 감사드립니다.

저장소

어떻게 사용하나요?

다운로드 페이지에서 cox.tagwire.js를 다운로드 하거나, 아래 경로를 페이지에 삽입하세요.

<script type="text/javascript" src="https://cdn.rawgit.com/coxcore/cox-tagwire/1.0.5/js/cox.tagwire.min.js"></script>

Element의 class 속성에 아래와 같은 형식의 TagWire class를 추가해서 사용합니다.

class="_{Data}-{Function}"

각 부분의 용도입니다.

예를 들어 아래와 같이 정의된 dataset이 있다고 한다면,

{
	aaa : '제목',
	bbb : '이미지 경로',
	ccc : '링크'
}

aaa의 값을 h1에 텍스트로 입력할 때, 해당 변수명에 -text를 붙입니다.

<h1 class="_aaa-text"></h1>

bbb의 값을 img 태그의 src 속성에 대입할 때, 해당 변수명에 -src를 붙입니다.

<img src="" class="_bbb-src" />

ccc의 값을 a 태그의 href 속성에 대입할 때, 해당 변수명에 -href를 붙입니다.

<a href="#" class="_ccc-href">href 설정</a>

위와 같은 형태로 class 속성에 필요한 TagWire를 추가합니다.

<div>
	<h1 class="_title-text"></h1>
	<p>
		<a href="#" class="_link-href"><img src="noimg.jpg" class="_thumb-src _title-alt"></a>
	<p>
</div>

TagWire를 추가하고 나서 datasetrender합니다.

// 처리할 dataset
var data = {
	title : '제목',
	thumb : '이미지 경로',
	link : '링크'
};

// 기본 처리
TagWire.render( document.body, data );

// 혹은 jQuery 사용
jQuery( 'body' ).render( data );

그러면 다음과 같이 반영됩니다.

<div>
	<h1 class="_title-text">제목</h1>
	<p>
		<a href="링크" class="_link-href"><img src="이미지 경로" class="_thumb-src _title-alt" alt="제목></a>
	<p>
</div>