> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 경량 템플릿 엔진 주서기 사용 가이드_javascript 기술

JavaScript 경량 템플릿 엔진 주서기 사용 가이드_javascript 기술

WBOY
풀어 주다: 2016-05-16 16:43:34
원래의
2308명이 탐색했습니다.

사용방법

템플릿을 컴파일하고 데이터를 기반으로 즉시 결과를 렌더링합니다

juicer(tpl, data);
로그인 후 복사

템플릿을 렌더링하지 않고 컴파일하고 재사용 가능한 컴파일 함수를 반환합니다

 var compiled_tpl = juicer(tpl);
로그인 후 복사

주어진 데이터를 기반으로 이전에 컴파일된 템플릿을 렌더링합니다

 var complied_tpl = juicer(tpl);
 var html = complied_tpl.render(data);
로그인 후 복사

커스텀 함수(객체) 등록/등록 해제

juicer.register(‘function_name', function);
juicer.unregister(‘function_name');
로그인 후 복사

기본 매개변수 구성

 {
   cache: true [false];
   script: true [false];
   error handling: true [false];
   detection: true [false];
 }
로그인 후 복사

기본 구성을 수정하고 항목별로 수정

 juicer.set('cache', false);
로그인 후 복사

기본 구성 수정 및 일괄 수정

 juicer.set({
      'script': false,
      'cache': false
 })
로그인 후 복사

Juicer는 기본적으로 컴파일된 템플릿을 캐시하므로 동일한 템플릿이 여러 번 렌더링될 때 반복 컴파일에 소요되는 시간을 방지합니다. 특별한 필요가 없는 경우 기본 매개변수에서 캐시를 끄는 것을 강력히 권장하지 않습니다. . 그렇게 하면 Juicer 캐시가 무효화되어 성능이 저하됩니다.

문법

* ${변수} 

- ${}를 사용하여 변수를 출력합니다. 여기서 _는 데이터 소스(${_})에 대한 참조입니다. 사용자 정의 기능 사용을 지원합니다.

${name}
${name|function}
${name|function, arg1, arg2} 
로그인 후 복사
 var = links: [{href: 'http://juicer.name', alt: 'Juicer'},
            {href: 'http://benben.cc', alt: 'Benben'},
            {href: 'http://ued.taobao.com', alt: 'Taobao UED'}  
           ]};
 var tpl = [ '{@each links as item}',
         '${item|links_build} <br />',  
         '{@/each}'].join('');
 var links = function(data) {    
   return '<a href="' + data.href + '" alt="' + data.alt + '" />';
};
juicer.register('links_build', links); //注册自定义函数
juicer(tpl, json);
로그인 후 복사

* 탈출/탈출 회피

- ${Variable}은 출력하기 전에 해당 내용을 이스케이프합니다. 출력 결과가 이스케이프되는 것을 원하지 않으면 $${Variable}을 사용하여 이러한 상황을 피할 수 있습니다.

 var json = {
    value: '<strong>juicer</strong>'
 };
 var escape_tpl='${value}';
 var unescape_tpl='$${value}';
 juicer(escape_tpl, json); //输出 '<strong>juicer</strong>'
 juicer(unescape_tpl, json); //输出 '<strong>juicer</strong>' 
로그인 후 복사

* {@each} 반복 ... {@/each}   

- 배열 순회, ${index}현재 인덱스

 {@each list as item, index}
     ${item.prop}
     ${index} //当前索引
 {@/each}
로그인 후 복사

*판사{@if} ... {@else if} ... {@else} ... {@ /if}

*댓글 {#댓글 내용}

{# 댓글 내용은 이렇습니다}
*보조 루프 {@each i in range(m, n)}

 {@each i in range(5, 10)}
     ${i}; //输出 5;6;7;8;9;
 {@/each}
로그인 후 복사

*하위 템플릿 중첩 {@include tpl, data}

- 데이터에 지정된 하위 템플릿을 도입하는 것 외에도 하위 템플릿 중첩은 `#id` 문자열을 지정하여 `script` 태그에 작성된 템플릿 코드를 사용할 수도 있습니다.

- HTML 코드:

<script type="text/juicer" id="subTpl">
   I'm sub content, ${name}
</script>
로그인 후 복사

- 자바스크립트 코드:

var tpl = 'Hi, {@include "#subTpl", subData}, End.';

juicer(tpl, {
subData: {
name: 'juicer'
}
});

//输出 Hi, I'm sub content, juicer, End.
 //或者通过数据引入子模板,下述代码也将会有相同的渲染结果:
 
 var tpl = 'Hi, {@include subTpl, subData}, End.';
 
 juicer(tpl, {
     subTpl: "I'm sub content, ${name}",
     subData: {
        name: 'juicer'
     }
 });
로그인 후 복사

완전한 예시

HTML 코드:

 <script id="tpl" type="text/template">
   <ul>
     {@each list as it,index}
       <li>${it.name} (index: ${index})</li>
     {@/each}
     {@each blah as it}
       <li>
         num: ${it.num} <br />
         {@if it.num==3}
           {@each it.inner as it2}
             ${it2.time} <br />
           {@/each}
         {@/if}
       </li>
     {@/each}
   </ul>
 </script>
로그인 후 복사

자바스크립트 코드:

 var data = {
   list: [
     {name:' guokai', show: true},
     {name:' benben', show: false},
     {name:' dierbaby', show: true}
   ],
   blah: [
     {num: 1},
     {num: 2},
     {num: 3, inner:[
       {'time': '15:00'},
       {'time': '16:00'},
       {'time': '17:00'},
       {'time': '18:00'}
     ]},
     {num: 4}
   ]
 };
 
 var tpl = document.getElementById('tpl').innerHTML;
 var html = juicer(tpl, data);
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿