ホームページ > ウェブフロントエンド > 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>
ログイン後にコピー

- JavaScript コード:

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>
ログイン後にコピー

JavaScript コード:

 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート