ArtTemplate 의 간단 한 소개

8647 단어 artTemplate
특성
  • 성능 이 뛰 어 나 고 실행 속 도 는 보통 Mustache tmpl 과 의 20 배 이상 (성능 테스트)
  • 실행 시 디 버 깅 을 지원 하고 이상 템 플 릿 이 있 는 문 구 를 정확하게 찾 을 수 있 습 니 다 (데모)
  • NodeJS Express 에 대한 우호 적 인 지지
  • 안전 합 니 다. 기본적으로 출력 을 전의 하고 샌 드 박스 에서 컴 파일 된 코드 를 실행 합 니 다 (Node 버 전 은 사용자 가 업로드 한 템 플 릿 을 안전하게 실행 할 수 있 습 니 다)
  • 지원 include 문 구 는 브 라 우 저 에서 경로 에 따라 템 플 릿 을 불 러 올 수 있 습 니 다
  • 사전 컴 파일 을 지원 하고 템 플 릿 을 매우 간단 한 js 파일 로 변환 할 수 있 습 니 다
  • 템 플 릿 문 구 는 간결 하고 접두사 참조 데이터 가 필요 없습니다
  • 모든 유행 하 는 브 라 우 저 지원
  • 빠 른 속도 로 착수 하 다.
    템 플 릿 작성
    템 플 릿 을 저장 하기 위해 type="text/html" 탭 을 사용 하 십시오:
    <script id="test" type="text/html">
    <h1>{{title}}</h1>
    <ul>
        {{each list as value i}}
            <li>   {{i + 1}} :{{value}}</li>
        {{/each}}
    </ul>
    </script>
    

    렌 더 링 템 플 릿
    var data = {
        title: '  ',
        list: ['  ', '  ', '  ', '  ', '  ', '  ', '  ']
    };
    var html = template('test', data);
    document.getElementById('content').innerHTML = html;
    

    시범 을 보이다
    템 플 릿 문법
    두 가지 버 전의 템 플 릿 문법 을 선택 할 수 있 습 니 다.
    간결 문법
    추천 사용, 문법 은 간단 하고 실 용적 이 며 읽 기와 쓰기 에 유리 합 니 다.
    {{if admin}}
        {{include 'admin_content'}}
    
        {{each list}}
            <div>{{$index}}. {{$value.user}}</div>
        {{/each}}
    {{/if}}
    

    문법 과 프레젠테이션 보기
    원생 문법
    <%if (admin){%>
        <%include('admin_content')%>
    
        <%for (var i=0;i<list.length;i++) {%>
            <div><%=i%>. <%=list[i].user%></div>
        <%}%>
    <%}%>
    

    문법 과 프레젠테이션 보기
    다운로드 하 다.
  • template.js (간결 문법 판, 2.7kb)
  • template-native.js (원생 문법 판, 2.3kb)
  • 방법.
    template(id, data)
    id 렌 더 링 템 플 릿 에 따라.내 부 는 script 에 따라 템 플 릿 을 찾 습 니 다.
    data 인자 가 없 으 면 렌 더 링 함 수 를 되 돌려 줍 니 다.
    template. document.getElementById(id) (source, options)
    렌 더 링 함 수 를 되 돌려 줍 니 다.시범 을 보이다
    template. compile (source, options)
    렌 더 링 결 과 를 되 돌려 줍 니 다.
    template. render (name, callback)
    보조 방법 을 첨가 하 다.
    예 를 들 어 시간 형식 기: 프레젠테이션
    template. helper (name, value)
    엔진 의 기본 설정 을 변경 합 니 다.
    필드
    유형
    기본 값
    설명 하 다.
    openTag
    String config
    논리 문법 시작 탭
    closeTag
    String '{{'
    논리 문법 끝 탭
    escape
    Boolean "}}"
    출력 HTML 문자 인 코딩 할 지 여부
    cache
    Boolean true
    캐 시 를 열 지 여부 (options 에 의존 하 는 filename 필드)
    compress
    Boolean true
    HTML 여분의 공백 문 자 를 압축 할 지 여부
    사전 컴 파일 사용
    브 라 우 저 제한 을 돌파 하여 전단 템 플 릿 이 백 엔 드 템 플 릿 과 같은 동기 화 '파일' 로 딩 능력 을 가지 도록 합 니 다.
    1. 파일 과 디 렉 터 리 에 따라 템 플 릿 을 구성 합 니 다.
    template('tpl/home/main', data)
    

    2. 템 플 릿 지원 도입 서브 템 플 릿
    {{include '../public/header'}}
    

    사전 컴 파일 기반:
  • 템 플 릿 을 매우 간단 한 js 파일 로 변환 할 수 있 습 니 다 (엔진 에 의존 하지 않 음)
  • 동기 템 플 릿 로 딩 인터페이스 사용
  • 다양한 js 모듈 출력 지원: AMD, CMD, CommonJS
  • GruntJS 플러그 인 구축 지원
  • 전단 템 플 릿 은 NodeJS 에 공유 하여 실행 할 수 있 습 니 다
  • 자동 압축 포장 템 플 릿
  • 사전 컴 파일 도구: TmodJS
    NodeJS
    설치 하 다.
    npm install art-template -g
    

    쓰다
    var template = require('art-template');
    var data = {list: ["aui", "test"]};
    
    var html = template(__dirname + '/index/main', data);
    

    배치 하 다.
    NodeJS 버 전 은 다음 과 같은 기본 설정 을 추 가 했 습 니 다.
    필드
    유형
    기본 값
    설명 하 다.
    path
    String false
    템 플 릿 디 렉 터 리 지정
    extname
    String ''
    템 플 릿 접미사 이름 지정
    encoding
    String '.html'
    지정 템 플 릿 인 코딩
    설정 'utf-8' 지정 한 템 플 릿 디 렉 터 리 는 템 플 릿 의 경 로 를 단축 시 킬 수 있 고 path 문 구 는 임의의 경로 에 접근 하여 안전 위험 을 초래 하 는 것 을 피 할 수 있 습 니 다. 예 를 들 어:
    template.config('path', __dirname);
    var html = template('index/main', data)

    확장:
    웹 템 플 릿 엔진 - Mustache
    웹 템 플 릿 엔진 은 사용자 인터페이스 와 업무 데이터 (내용) 를 분리 하기 위해 만들어 진 것 으로 특정한 형식의 문 서 를 생 성 할 수 있 으 며 보통 표준 HTML 문서 입 니 다.물론 서로 다른 개발 언어 는 서로 다른 템 플 릿 엔진 이 있 습 니 다. 예 를 들 어 Javascript 의 Hogan, ASP 의 aspTemplate, 그리고 PHP 의 Smarty 등 이 있 습 니 다. 여 기 는 주로 Javascript 언어 를 바탕 으로 하 는 템 플 릿 엔진 을 소개 합 니 다. 현재 Mustache, Hogan, doT. js, JSRender, Kendo UI Templates 등 이 유행 하고 있 습 니 다. jsperf. com 위 에서 그들의 성능 대 비 를 볼 수 있 으 니 먼저 소개 하 겠 습 니 다. Mustache。
    1. Mustache 소개:
    Mustache 는 logic - less (경 논리) 템 플 릿 분석 엔진 으로 자바 script, PHP, Python, Perl 등 다양한 프로 그래 밍 언어 에 사용 할 수 있다 는 장점 이 있다.
    2. Mustache 문법:
    Mustache 의 템 플 릿 문법 은 매우 간단 합 니 다. 그 몇 가지 만 있 습 니 다.
    {{keyName}}
    {{#keyName}} {{/keyName}}
    {{^keyName}} {{/keyName}}
    {{.}}
    {{
    {{{keyName}}}
    {{!comments}}
    자 바스 크 립 트 애플 리 케 이 션 을 예 로 들 어 소개 합 니 다. 데모 부터 보 겠 습 니 다.
    ...
    <script type="text/javascript" src="mustache.js"></script>
    <script type="text/javascript">
    var data = {
        "company": "Apple",
        "address": {
            "street": "1 Infinite Loop Cupertino</br>",
            "city": "California ",
            "state": "CA ",
            "zip": "95014 "
        },
        "product": ["Macbook ","iPhone ","iPod ","iPad "]
    }
    
    var tpl = '<h1>Hello {{company}}</h1>';
    var html = Mustache.render(tpl, data);
    
    console.log( html )
    </script>
    ...
    
    //    Console   :
    
    <h1>Hello Apple</h1>
    

    데모 에서 data 는 데이터 이 고 tpl 은 정 의 된 템 플 릿 입 니 다. include 방법 은 출력 최종 HTML 코드 를 렌 더 링 하 는 데 사 용 됩 니 다.
    Demo 를 통 해 문법 에 대해 간단 한 소 개 를 합 니 다.
    {{keyName}} Mustache.render(tpl, data) 바로 Mustache 의 표시 자 입 니 다. 괄호 안에 있 는 keyName 은 키 이름 을 표시 합 니 다. 이 문장의 역할 은 키 이름과 일치 하 는 키 값 을 직접 출력 하 는 것 입 니 다. 예 를 들 어:
    var tpl = '{{company}}';
    var html = Mustache.render(tpl, data);
    //  :
    Apple

    {{#keyName}} {{/keyName}} {{}} 로 시작 하여 # 로 블록 을 표시 합 니 다. 현재 컨 텍스트 의 키 값 에 따라 블록 을 한 번 또는 여러 번 렌 더 링 합 니 다. 예 를 들 어 Demo 의 tpl 을 바 꿉 니 다.
    var tpl = '{{#address}} <p>{{street}},{{city}},{{state}}</p> {{/address}}';
    var html = Mustache.render(tpl, data);
    
    //  :
    <p>1 Infinite Loop Cupertino&lt;/br&gt;,California,CA</p>
    

    메모: / 의 key Name 값 이 null, undefined, false 이면;출력 내용 을 과장 하지 않 습 니 다.
    {{^keyName}} {{/keyName}}
    이 문법 은 {{#keyName}} {{/keyName}} 과 유사 합 니 다. 키 Name 값 이 null, undefined, false 일 때 만 이 블록 내용 을 렌 더 링 합 니 다.
    var tpl = {{^nothing}}    nothing         {{/nothing}};
    var html = Mustache.render(tpl, data);
    //  :
        nothing         

    {{.}} {{#keyName}} {{/keyName}} 매 거 진 것 을 표시 하고 전체 배열 을 순환 적 으로 출력 할 수 있 습 니 다. 예 를 들 어:
    var tpl = '{{#product}} <p>{{.}}</p> {{/product}}';
    var html = Mustache.render(tpl, data);
    //  :
    <p>Macbook </p> <p>iPhone </p> <p>iPod </p> <p>iPad </p>

    {{>partials}}
    {{> address} 과 같은 하위 모듈 을 {{.}} 로 표시 합 니 다.구조 가 비교적 복잡 할 때 우 리 는 이 문법 을 사용 하여 복잡 한 구 조 를 몇 개의 작은 서브 모듈 로 나 눌 수 있다. 예 를 들 어:
    var tpl = "<h1>{{company}}</h1> <ul>{{>address}}</ul>"
    var partials = {address: "{{#address}}<li>{{street}}</li><li>{{city}}</li><li>{{state}}</li><li>{{zip}}</li>{{/address}}"}
    var html = Mustache.render(tpl, data, partials);
    //  :
    <h1>Apple</h1>
    <ul><li>1 Infinite Loop Cupertino&lt;/br&gt;</li><li>California</li><li>CA</li><li>95014</li></ul>

    {{{keyName}}} > 출력 은 등 특수 문 자 를 번역 합 니 다. 내용 을 그대로 출력 하려 면 사용 할 수 있 습 니 다 {{keyName}}. 예 를 들 어:
    var tpl = '{{#address}} <p>{{{street}}}</p> {{/address}}'
    //  :
    <p>1 Infinite Loop Cupertino</br></p>

    {{!comments}} {{{}}} 주석 을 표시 하고 주석 후 출력 내용 을 과장 하지 않 습 니 다.
    {{!     }}
    //  :

    좋은 웹페이지 즐겨찾기