웹마스터 팁
javascript template parser for xe (난이도 중급)
2013.10.09 17:48
<!--// 귀찮은 관계로 전 이 방법을 채택. -->
<div id="TPL"><!--{@ echo file_get_contents($tpl_path.'_list.html'); }--></div>
실 서비스에 적용한다면 ajax-html 선호할 듯..
<!--// 이렇게 쓰이겠죠? -->
<script>//<![CDATA[
(function($){$.get('{$tpl_path}_list.html', function(data){ window.some_init_ajax(data); });
})(jQuery);//]]></script>
_list.html
<tr class="no_{$val->no}">
<td class="type_">{$val->type}</td>
<td class="quality_">
<a href="javascript:_Filter({name:'{$val->quality}'});">{$val->quality}</a>
</td>
<td class="name_">
<a href="javascript:_Filter({name:'{$val->name}'});">{$val->name}</a> ({$val->level})
</td>
<td class="regdate_">
<a href="javascript:_Filter({regdate:'{$val->regdate}'});">{$val->regdate}</a>
</td>
<td class="hello_">{$val->hello}</td>
<td class="user_name_">{$val->user_name? 'O':'-'}</td>
<td class="nick_name_">{$val->nick_name? 'O':'-'}</td>
</tr>
그리고 javascript 소스입니다.. 요게 제~~~일 중요한 핵심이죠! (코드 피융신같이 나와서 파일로 첨부)
// xe template regex
var tpl_regex = /{(@[\s\S]+?|(?=\$\w+|_{1,2}[A-Z]+|[!\(+-]|\w+(?:\(|::)|\d+|[\'\"].*?[\'\"]).+?)}/;
var render = function()
{
var _tpl = tpl, matches;
var val = this;
while(matches = _tpl.match(tpl_regex))
{
_tpl = _tpl.replace(matches[0], (function(){
matches[1] = matches[1]
.replace(/->(?=[a-z])/ig, '.')
.replace(/\$([a-z]+)/i, '$1')
;
matches[1] = eval(matches[1]);
return matches[1]==undefined? '' : matches[1];
})());
}
$(tbody).append(_tpl);
// for client memory
matches = undefined;
_tpl = undefined;
}
$.exec_json('some.getSomeList', params, function(p){
if(p.error)
{
alert(p.message);
return;
}
$.each(p.data, render);
});
제목 | 글쓴이 | 날짜 |
---|---|---|
레이아웃 동적 변경하기 | Lansi | 2013.09.27 |
[주옥시리즈]최신글,인기글 위젯에 댓글수 표기하기 [1] | socialskyo | 2013.10.01 |
phpmyadmin [ 일괄변경,부분수정 ] | 오락실주인 | 2013.10.02 |
htaccess 수정 주소이동하기 [펌] [2] | 오락실주인 | 2013.10.02 |
New FAQ Skin 사용 시 DB 에러 수정하기 | 퍼니엑스이 | 2013.10.02 |
썸네일 생성시 crop 이 상단 기준으로 생성되게 하는 방법 [5] | sejin7940 | 2013.10.04 |
[유저용O, 개발자용x]포인트 레벨 아이콘이나 스킨에 사용할 소스가 부족하세요? [1] | socialskyo | 2013.10.05 |
XE 1.7 에서 닉네임 클릭시 홈페이지나 블로그 등이 새창으로 안 뜨는 버그 수정법 [1] | sejin7940 | 2013.10.07 |
1.7 이상 기본레이아웃, ie9에서 1차메뉴 깨짐 현상... [3] | uoou | 2013.10.07 |
제이쿼리 datepicker 옵션 변경 | Lansi | 2013.10.07 |
제이쿼리 최신 버전 사용하기 [8] | Lansi | 2013.10.08 |
javascript template parser for xe (난이도 중급) [1] | 엘카 | 2013.10.09 |
게시판에 다른 테이블 값 직접 가져오기 [1] | 똑디 | 2013.10.11 |
페이북 좋아요 버튼 애드온 [2] | 똑디 | 2013.10.11 |
게시판 하단 검색대상의 순서,노출항목 들 제어하는 방법 [1] | sejin7940 | 2013.10.15 |
XE 로만든 앱 + 푸쉬기능 구현하기 (안드로이드) [53] | Xiso | 2013.10.16 |
모바일 이미지 업로드시 세로사진 자동 회전하기 [8] | Xiso | 2013.10.17 |
추천인 표시 [11] | socialskyo | 2013.10.17 |
포인트 사용시에도 그룹이 안 떨어지도록 하는 방법 [4] | sejin7940 | 2013.10.18 |
[주옥시리즈] 내글 모니터링, 작성글 앞으로 뺴기 [6] | socialskyo | 2013.10.18 |
anizone 구동 방식이 정말 궁금했는데 MVC 방식이었군요!
전 pjax 같은 걸 쓰는 줄 알았습니다. 이 걸 쓰려면 잘 설계해서 써야겠네요.
좋은 팁 감사합니다.