웹마스터 팁

장나코딩을 하던 중 팁을 씁니ㅏㄷ



ajax로 템플릿을 띄우는데 서버가 연산하는 비용이 아깝습니다.

컴파일 이전의 소스 html 파일을 js 변수에 할당 / ajax는 json 데이터만 전달 / 클라이언트가 이를 파싱합니다.

소스 html은 ajax-html로 구하거나, html에 포함시키는 방법이 있지만 거의 차이는 없겠죠.
html 파일 내에 포함할 경우 코딱지만한 속도 잇점이 있지만 php메모리 부담도 코딱지만큼 증가합니다.
<!--// 귀찮은 관계로 전 이 방법을 채택. -->
<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);

});




1. 서버내 변수를 전달할 수 없고 2. 간단한 문법에 국한되지만, 퍼포먼스(속도)와 비용을 생각해볼 때 검토할만한 방법입니다.
이와 같은 원리를 적용한 사이트로는 anizone 이 있습니다.
위 팁과 anizone의 다른점이 있따면, anizone은 xe template 문법을 따르기보담 javascript mvc 라이브러리를 쓴 것 같습니다.

제목 글쓴이 날짜
게시판을 활용한 페이지 생성 및 관리 아이디어...(참고) [5] file 빨간발 2009.03.27
홈페이지 접속 속도에 미치는 에드온. [2] jih449 2009.03.27
1.2 업데이트후, 모듈 업데이트를 클릭해도 계속 업데이트 버튼이 남는 경우 [4] heesang 2009.03.27
특정 도메인의 메일 주소로만 가입 인증 메일 보내기 [3] 박정욱 2009.03.28
특정그룹 멤버 표시 위젯에서 이름 순 정렬하기 [2] file 이재한744 2009.03.30
Firebug와 FirePHP를 통한 XpressEngine의 디버깅 [6] file mooo 2009.04.01
xe 설치시 다음과 같은 오류가 생깁니다. Seung Hur 2009.04.02
팁이라기엔 좀 그렇구요.. 초보자를 위한 파일업로드FTP보다 훨씬좋은.. [2] 레드카라스 2009.04.02
위지윅 테이블 컴포넌트 (테이블 수정 기능) [3] file 개돌 2009.04.02
Cafe 운영시 조그만한 팁... [2] 부푸러 2009.04.03
관리자 아이디로 작성한 비밀글을 특정인이 볼수있도록 해주는 팁 [13] file Dreami 2009.04.03
클릭마다 조회수 올리기 [1.4.0] [12] file 지B 2009.04.04
게시판 스타일이 안바뀌는 경우에 해보실 사항 [4] coolsushi 2009.04.04
호스팅업체에서 rewrite mod를 지원하는데 사용할 수 없는 경우 [1] [1] 엔하늘 2009.04.05
이메일이 2개씩 보내질때 처치방법 [7] 얼터1 2009.04.08
게시판형태를 달력게시판으로 못하나요? [1] file 오늘하루는느느느 2009.04.09
요청하신 모듈을 찾을 수 없습니다 문제해결 방법 [2] 반도체맨 2009.04.09
IIS + PHP + MySQL5 설치 시 버젼 주의 [1] 개돌 2009.04.10
최근 이미지 위젯 noimage 표시.. [6] file 개돌 2009.04.10
주민등록 입력 폼 1.2.0 [55] file 개돌 2009.04.10