高性能JavaScriptテンプレートエンジンartTemplateの紹介

4051 ワード

artTemplate-3.0
次世代javascriptテンプレートエンジン
目次
  • 特性
  • 快速上手
  • テンプレート文法
  • メソッド
  • NodeJS
  • プリコンパイルを使用する
  • 更新ログ
  • ライセンスプロトコル
  • 特性
  • は性能が優れており、実行速度は通常Mustacheとtmplの20倍以上(性能試験)
  • である.
  • は運転時のデバッグをサポートしています.異常テンプレートのあるステートメントを正確に位置決めできます.
  • 対NodeJS Express友好サポート
  • 安全で、デフォルトでは出力を転送し、サンドボックスでコンパイルされたコードを実行します.(Nodeバージョンはユーザアップロードのテンプレートを安全に実行できます.)
  • サポートinclude文
  • は、ブラウザ側で経路別にテンプレート(詳細)をロードすることを実現することができる
  • .
  • はプリコンパイルをサポートし、テンプレートを非常にシンプルなjsファイル
  • に変換することができます.
  • テンプレート文は簡潔で、プレフィックス参照データを必要とせず、簡潔なバージョンと元の構文バージョンがある場合はオプション
  • である.
  • は、すべての流行のブラウザ
  • をサポートします.
    手っ取り早い
    テンプレートを作成
    type="text/html"のscriptタグを使ってテンプレートを保存します.
    
    <h1>{{title}}</h1>
    <ul>
        {{each list as value i}}
            <li>   {{i + 1}} :{{value}}</li>
        {{/each}}
    </ul>
    
    レンダリングテンプレート
    var data = {
        title: '  ',
        list: ['  ', '  ', '  ', '  ', '  ', '  ', '  ']
    };
    var html = template('test', data);
    document.getElementById('content').innerHTML = html;
    プレゼンテーション
    テンプレート文法
    二つのバージョンのテンプレート文法が選択できます.
    簡潔な文法
    使うことを勧めて、文法は簡単で実用的で、読み書きに有利です.
    {{if admin}}
        {{include 'admin_content'}}
    
        {{each list}}
            
    {{$index}}. {{$value.user}}
        {{/each}} {{/if}}
    文法とプレゼンテーションを表示
    げんせい文法
    
        
    
        
            
        
    文法とプレゼンテーションを表示
    ダウンロード
  • template.js (簡潔な文法版、2.7 kb)
  • template-native.js (原生文法版、2.3 kb)
  • 方法
    template(id,data)
    IDに基づいてテンプレートを描画します.内部はdocument.getElemenntById(id)によってテンプレートを検索します.
    dataパラメータがない場合、レンダリング関数を返します.
    template.com mpile(source,options)
    レンダリング関数を返します.プレゼンテーション
    template.render(source,options)
    レンダリングの結果を返します.
    template.helper(name,calback)
    補助方法を追加します.
    時間フォーマット:プレゼンテーション
    template.co nfig(name,value)
    エンジンのデフォルトの設定を変更します.
    openTag
    String
    '{{}
    論理文法開始フラグ
    closeTag
    String
    「}」
    論理文法終了フラグ
    エスケープ
    ボロア
    true
    出力HTML文字をエンコードしますか?
    cache
    ボロア
    true
    キャッシュを開くかどうか(Ooptionsのfilenameフィールドに依存)
    compless
    ボロア
    false
    HTMLの空き文字を圧縮しますか?
    プリコンパイルを使う
    ブラウザの制限を突破して、フロントエンドのテンプレートにバックエンドのテンプレートと同じ同期の「ファイル」ローディング能力を持たせることができます.
    一、ファイルとディレクトリでテンプレートを組織する
    template('tpl/home/main', data)
    二、テンプレートサポートのサブテンプレートの導入
    {{include '../public/header'}}
    プリコンパイルに基づいて:
  • は、テンプレートを非常にシンプルなjsファイルに変換することができる(エンジンに依存しない)
  • .
  • 同期テンプレートローディングインターフェース
  • を使用する.
  • は様々なjsモジュールの出力をサポートします.AMD、CMD、Common JS
  • は、GuntJSプラグインとして
  • を構築することをサポートしています.
  • フロントエンドテンプレートは、NodeJS実行
  • に共有できます.
  • 自動圧縮パッキン
  • プリコンパイルツール:TmodJS
    NodeJS
    インストール
    npm install art-template
    使用
    var template = require('art-template');
    var data = {list: ["aui", "test"]};
    
    var html = template(__dirname + '/index/main', data);
    設定
    NodeJSバージョンは下記のデフォルト設定を追加しました.
    ベース
    String
    ''
    テンプレートディレクトリを指定
    extname
    String
    '.
    テンプレートの拡張子を指定します.
    encoding
    String
    'utf-8'
    テンプレートのエンコーディングを指定します
    ベース指定テンプレートディレクトリを設定することは、テンプレートのパスを短縮することができ、include文のレベルオーバーアクセスを回避することができます.例えば、
    template.config('base', __dirname);
    var html = template('index/main', data)
    NodeJS+Express
    var template = require('art-template');
    template.config('base', '');
    template.config('extname', '.html');
    app.engine('.html', template.__express);
    app.set('view engine', 'html');
    //app.set('views', __dirname + '/views');
    運行デモ:
    node demo/node-template-express.js
    js原生文法をテンプレート文法として使うなら、それを使ってください. require('art-template/node/template-native.js')