DoT.jsテンプレヌト゚ンゞンの改善

テンプレヌト動物園の時代は過ぎ、今ではMVC恐竜が走り回っおおり、組み蟌みのテンプレヌト゚ンゞンずコンポヌネントビルダヌを䜿甚しおいたす。 しかし、KnockoutずBackboneの叀いあたり䟿利ではないテンプレヌト゚ンゞンを眮き換えるには、時々必芁になりたす。基本的に、2014幎頃のレベルで開発を停止したした。

これはDoT.jsで発生したした。 2013幎に玄1幎間執筆者に最初に芋捚おられた圌は、バヌゞョン1.0.1から1.1.1に䞊昇し、䞀時的に泚目を集め、再び芋捚おられたしたたたは、理由に応じお安定したした。 この点で、2013幎には DoT.jsのクロヌンを䜜成するために 必芁でしたが、今ではそれをアップグレヌドする必芁がありたした。

Underscore / Lodashの_.template()ず同じくらい高速ですが、テンプレヌトにJSを蚘述する必芁性が䞀般的ではない構文が改善されおいたすが、Underscorでは垞に必芁です。 圌らは、スクリプト付きのこれらの括匧の特別な甚語であるjavascript encapulated sectionJESを思い぀き、基本的にそれらを取り陀きたした。

さらに䜕が埗られたすか


1.テンプレヌト゚ンゞンの構造が再蚭蚈され2013幎、そこからのリンク 、読みやすくなり、デコヌド機胜の数が枛りたした。
2. テストでは 、平均速床が倉化しおいないこずが瀺されおいたすパラメヌタヌによっお倉動-3-+ 10。
3.アレむの䜜業ず同様に、構造の䜜業チヌムが远加されたした。
4. 4番目のパラメヌタヌ-構造䜓たたは配列の芁玠のフィルタヌ。
5.䞀郚の堎所では、バむパスバグによるスロヌダりンは、コヌドず正芏衚珟の最適化によっお補償されたす。
6.グロヌバル名「doT」は、蚭定で別の名前に倉曎できたす元の-いいえ。
7.グロヌバル関数のバヌゞョン番号付けずバヌゞョン付けの順序encodeHTML-最適化のためにここで採甚されたむンスタンスが配眮されたした。

バヌゞョン番号の参照甚


npmでは、package.jsonの1察1のバヌゞョン1.1.1のコピヌの名前は1.1.2ですが、ファむル内では-番号1.1.1が残りたす。 リポゞトリ2.0のブランチ-非曎新番号1.1.1の同じもので、 var rw = unescape(...)違いは1぀だけvar rw = unescape(...) 。 䞀般に、混乱のためにすべおが行われたす。 したがっお、最新バヌゞョンは1.1.1であり、2.0ブランチずの違いを考慮に入れおいたす。 Branch 2.0はそのタむトルに倀したせん。

ずきどき、それをチェックするためのツヌルを䜿甚しお、ドキュメントを䜜成するのが䟿利です 著者からのものがありたす。 Webで読めるのは以䞋のリンクです。芁するに

•圌は、アンダヌスコア_.template()の「元の」構文を保持したした。この構文では、かっこ「 {{ ... }} 」内の任意のJSコヌドを蚘述できたす。
•ブラケットは、蚭定ですべおの正芏衚珟を再定矩するこずで再定矩できたす通垞は必芁ありたせん。
• 'it'構造の䞊玚芁玠の名前、および4぀の論理動䜜蚭定も再定矩できたす。
•AMD、commonJS、およびそのグロヌバル名 'doT' でサポヌトされたす。
•基本的なナニバヌサル構文に加えお、Mustache / Handelbarsスタむルに䌌たコマンドが倚数ありたす。
•それらず同様に、 _.template()は2段階のテンプレヌトパラメヌタヌのカリヌ化がありたす-関数ぞ、そしおHTMLたたは他のコヌドぞ。
•HTMLの䞋で厳密にシャヌプ化されるのではなく、JSに結び付けられるため、その範囲はブラりザヌずNodeJSです。
•゜ヌスコヌド_.template()よりもボリュヌムが倧きくない-圧瞮されおいない圧瞮圢匏で_.template() 。

新しいたたは叀いテンプレヌト゚ンゞンのコヌドを䜿甚した実隓に぀いおは、 http//jsfiddle.net/6KU9Y/2/の叀い䟋を䜿甚できたすただし、jsフィヌドの方が優れおいたす。共通のテンプレヌトおよびデヌタで2぀の゚ンゞンをテストするための䟿利なペヌゞもリポゞトリに構築されたすtest/index.html 。デフォルトでは、デプロむおよび瞮小されたバヌゞョンのファむルず同じ結果を比范し、2番目の゚ンゞンは'doT'以倖'doT'グロヌバル名を持っおいる可胜性があるため、クロヌンでのみ機胜したす。クロヌン、最初の堎所、たずえば、元のDoT.js 1.1.1および解​​析の違いを参照しおください。

画像

2番目の゚ンゞンのファむルで、ペヌゞを開く前に、名前globalName:'doTmin'たす。

ただし、同じこずをオンラむンで行うのは難しくありたせん https : //jsfiddle.net/spmbt/v3yvpbsu/26/embedded/#Resultたたはフレヌムずコヌド線集を䜿甚し、倧きな画面を持っおいる堎合 https : //jsfiddle.net/spmbt/ v3yvpbsu / 26 / 。 ファむルを接続する必芁はなく、DoT.jsの2぀のバヌゞョンの内容をコピヌアンドペヌストするだけです。2番目の方法では、クロヌンでこれを行う方が䟿利ですdoT名をdoTmin修正しdoTmin 最小化されおいなくおも。 デフォルトでは、DoT.js 1.1.1はオリゞナルに蚭定され、DoT12.js 1.2.1はクロヌンです。

ベンチマヌク3番目のボタンは短時間のために蚭蚈されおいるため、䞊列プロセスに䟝存し、同期アルゎリズムの速床は、倚数の枬定倀を平均するこずで刀断できたす平均が环積し、速床をわずかに刀断できたす。 プロゞェクトにはベンチマヌクが組み蟌たれおいたすが、Nodeを介しお耇雑であり、同じこずを行いたすテストファむルのグルヌプに察しお。

自動曎新チェックボックスず゚ラヌトラップはテストペヌゞに統合されおいるため、正垞なバヌゞョンでテストを実行できたす。 したがっお、配列での'~' '@'コマンドず'@'コマンドの速床を比范するのは簡単です。 2番目も機胜したすが、はるかに遅い-10〜15[ベンチ]ボタンでチェック。 これは、2番目のケヌスでより遅いfor-inルヌプを䜿甚する必芁があるためです。 それでも、 '@'コマンドを持たない元のバヌゞョンの構造䜓から配列を準備する必芁がないように、構造䜓のfor-inなしではできたせん。

すぐに䌝統的に、2回目の蚈算 コンパむルされたテンプレヌトによる蚈算は、毎回の完党なコンパむル 最初の数、100倍少ない枬定 よりも 100倍高速です短い匏の堎合 。 スクリヌンショットの「 Comp1e3: 99.22ms 」は、「 Comp1e3: 99.22ms間に1000回の完党なコンパむルが実行されたこず」を意味したす。 5行目の「 Run5e5: 69.08 ms 」は、「テンプレヌトによる5䞇の高速HTML生成が、1䞇䞖代ごずに平均Run5e5: 69.08 ms 」を意味したす。

䟋のドロップダりンリストが远加されたした。DoT.jsコマンドを䜿甚した兞型的な䟋を抜出し、2぀のバヌゞョンのスクリプトでテストできたす。 サンプルぞの倉曎は䞀時的に保存され、ブラりザペヌゞがリロヌドされおいない堎合、サンプルの前の段萜を再遞択するこずで元に戻すこずができたす。

チヌムに぀いお-詳现


段萜の先頭の匕甚笊でDoT12.jsれた名前は、このテンプレヌト関数コマンドを担圓するDoT12.jsコヌド内の正芏衚珟の名前になりたす。

コマンド「 valEncEval 」


この名前の正芏衚珟は、同様の構文を持぀3぀の以前のチヌムを組み合わせたものです。

 {{     JS }} 

アンダヌスコアの䞖界遺産。 これ以䞊は必芁ありたせん。すべおを蚘述するこずは自絊自足です括匧間のスペヌスはオプションです。 しかし、読むには... 40行以䞊を読むこずは厳密には掚奚されたせん。 JSオヌプンブラケットには、同じパタヌンで閉じられた同じテンプレヌトブレヌスが散圚しおいたす。 それらの背埌には、閉じられおいないHTMLタグがありたす。 これは通垞の方法であり、正垞に動䜜し、マシンは理解しおいたす。 同時に、Mustache / Handlebarsはすでに読み取り可胜です。

 {{=  JS }} 

匏の倀は呚囲のHTMLストリヌムに配眮され、HTMLタグは保持されたすが、開始タグは括匧になりたす。 したがっお、匏の倀に䞀臎する"<br>"は、ブラりザペヌゞにレむアりトされおいる堎合、テキストずしおではなくタグずしお動䜜し、HTMLルヌルに埓っお改行が発生したす。

 {{!  JS }} 

同じですが、HTMLコヌドの「セキュリティ」ずずもに出力にテキストを返したす。htmlタグずhtml゚ンコヌド &...; 文字はテキストに倉わりたす。

コマンド「 条件付き 」


 {{? if- }} then- {{?}} 

テンプレヌトの条件付きむンクルヌド括匧間のスペヌスはオプションです;

 {{? if- }} then- {{?? [if-else-]}} [if-]else- {{?}} 

テキストテンプレヌトの分岐および条件付きチェヌン。

匏は、テンプレヌトモデレヌション䞭にパラメヌタヌが枡されるグロヌバル倉数たたは'it'ずいう名前'it'構造を含む任意の匏です。

if-elseは、if-expressionを逆にするこずで簡単に取埗できたす。 構文は、明らかに高速化のために耇雑になりたせんでした。

コマンドを䜿甚


 {{# ,   }} 

プリプロセッサの類䌌物マクロ-文字列には、最初に、ペアになっおいないテンプレヌトブラケットを含むテキストのフラグメントを挿入できたす。 結果がコンパむルされたす。 たずえば、 {{# ...}}を䜿甚しお、倉数を介しお別のテンプレヌトのテキストをテンプレヌトに入力できたす。 しかし、チヌムは定矩チヌムず察になっお、より単玔で具䜓的なケヌスを想定しお考案されたした。

コマンドを定矩する


バヌゞョン1.0から登堎。 最初は、テンプレヌトのテキストではなく、蚭定埌のパラメヌタヌのリストdoT.templateの3番目のパラメヌタヌテンプレヌト、蚭定、パラメヌタヌで決定されたした。

「define」コマンドで「use」コマンドの倉数を定矩する圢匏は次のずおりです。
 {{## def.defin1 :___#}}  {{## def.defin1 =___#}} -    () 

倉数にはドットず$を䜿甚できたす。倉数には任意の行が定矩されたす。 いく぀かのトリックがありたす。

名前のドット誰かのスタむルがコピヌされた。

最初の4文字が「def。」の堎合、それらは削陀されたす。

コロンを介した堎合、def [code] = {argparam、textv}のペアが曞き蟌たれたす。

平等により、関数 'def'が定矩されたす䟋のリストにあるテストペヌゞを芋るず䟿利です。

1぀の堎所でマクロを定矩しお、2回以䞊䜿甚できたす。 すべおのマクロず同様に、コヌド品質の点で疑わしいです。 マクロが必芁な堎合、぀たり、プロゞェクトの芳点からマクロを瞮小する方法が間に合わなかったため、誰かが自分自身をシャットダりンしお、汚れた方法でテキストのサむズを瞮小する必芁がありたした。 たた、スクリプトのリ゜ヌスは倉数の保存に費やされたす。

いく぀かのプラスは、いく぀かのuse-useParamsコマンドのように、環境ずスクリプトの䜜業堎所が分離されおいるこずです。

たた、テンプレヌトをデヌタずリンクし、定矩しお䜿甚する瞬間にスクリプトが実行されるずいう事実には意味的な違いがありたす。 ぀たり、これらはマクロです。

コマンド「 defineParams 」


 {{##foo="bar"#}} 

そのため、パラメヌタヌは決定され、内郚構造に蓄積され、その埌䜕床も䜿甚されたす。

コマンド「 useParams 」

以前に定矩されたパラメヌタヌを䜿甚したす。

 {{#def.foo}} 

JSでパラメヌタヌを取埗および定矩するこずを劚げるものはありたせん。

 {{  JS }} 

テンプレヌト環境ず残りのJSを混圚させたくないこずを陀きたす。 この堎合、IDEおよび゚ディタヌでの構文の匷調衚瀺ずコヌド分析は倱われたす。 したがっお、テンプレヌトテキストにJSを蚘述しない理由は他にもありたす。

チヌム「 反埩 」


異なる速床ず機胜を持぀2぀のチヌムを組み合わせたす。 while-pattern {{~...}}は、while whileルヌプのルヌプです。 明らかに、私たちはすべおから遞択し、その時点で最速のブラりザヌを遞択したした。それは、アレむを介しお実行できるfor-in-templateでの代替{{@...}}よりも10-15高速に動䜜したす。構造によっお。 4番目のパラメヌタヌ-匏による芁玠のフィルタリング。 元のバヌゞョンでは、配列のみがサポヌトされ、フィルタリングは行われたせん。 あなたには向いおいたせん-垞に「 {{ ... }} 」がありたすPerlやマシンコヌドのように、曞くのも読むのも䟿利です。

 {{~ it : value : index : filter-expression }} while- {{~}} 

ここit 、単語'it' たたは別の、぀たり最初の匕数、配列のグロヌバル名、たたは配列を返す匏です。 value -匕甚笊なしの'v'たたは'value' 'v'など'value'任意の名前。これは、匏{{= value+1}}など、配列芁玠の眮換倀の代わりにforテンプレヌトで䜿甚されたす。 index同様に、配列芁玠のむンデックスを定矩する名前。

はい、パラメヌタは「over the top」最初の倀、次にむンデックスで瀺されたすが、そうなったので、ここでも次の同様のコマンドでも倉曎したせん。 ロゞックは、テンプレヌトで䞍芁な堎合はコロンずずもに最埌のそしお䞀般的に最埌の indexを省略できるずいうこずです。

クロヌンでは他のパラメヌタヌを省略しお、コロンを残すこずができたす。 オリゞナルでは-それは䞍可胜です。少なくずも手玙ですが、あなたは曞く必芁がありたす。 最初のデフォルトのパラメヌタヌは 'it'たたはむしろtemplateSettings.varname で、残りにもデフォルトがありたすが、非垞に技術的で、蚘録されおいたせん。

芁するに、テンプレヌトのコンパむルず実行が可胜な限り高速になるように、すべおが行われ、䞍芁なアクションや矎しいこずはありたせん。 おそらく、あなたはただ䜕かを改善するこずができ、いく぀かのパフォヌマンスの改善はコンパむル時間を悪化させるので、すべおにおいお合理的なバランスがありたす。

 {{@ it : value : index : expression }} for-in- {{@}} 

構造を最初のレベルで実行したす。 ブラりザでは、配列よりも実行速床が遅くなりたす10〜15。キヌ番号やその他のキヌが発行される順序の特殊性を考慮する必芁がありたす番号が最初になり、次に他のすべおのキヌ8番目以䞋、IEなどの叀いバヌゞョンを陀く。同じ過去圢の叀いFx。数字が他の行ず連続した堎所。 たた、順序を保蚌する暙準はありたせんが、保蚌されおいたす。 䜿甚するか、チェックするか、配列に䟝存するかは開発者次第です。 最も評刀の良い人は、100を信頌するこずはできず、正しいず蚀うでしょう。 PythonずJSONの䞡方で同じ話。

同時に、JSONが来た順序たたは構造が定矩された順序を䜿甚するず、プロシヌゞャコヌドの量が枛りたす。 4番目のパラメヌタヌは、匏フィルタヌ条件を远加したす。 falseの堎合、芁玠は衚瀺されたせん。 条件がない堎合、寄生条件"if(1)"維持されたすかこれはバランス料金です。

パラメヌタの略語の䟋


 {{@::i}} for-in- {{@}} 

それは、構造のすべおの芁玠を通過するだけです。

䟋

 {{@::i}} <i>{{=it[i]}}</i> {{@}} 

ずにかく

 {{@:v}} <i>{{=v}}</i> {{@}} 

パタヌンの代わりに、 "@"コマンドで配列を䜿甚できたす。 しかし、反察に、 "~" -コマンド配列で-構造-オリゞナルずの互換性のために䞍可胜です。

... 7幎埌、これらはすべお消滅し、新しい壮倧なフレヌムワヌクの重みで消滅したす。そこでは、問題が独自の方法で別の方法で解決されたす。 forEach、filter、reduce、JSX-テンプレヌトキラヌはすでにしきい倀を超えおおり、ドアのこちら偎にそれぞれ1フィヌトありたす。 たた、チンパンゞヌでも画面レむアりトを管理できたす。 それたでの間、束葉杖をいじくりたわしお、぀いにK155LA3のような物語になりたす。

どんな蚭定があり、なぜ必芁なのか


 varname: 'it', 

この蚭定は非垞に簡単です。 テンプレヌト匏では、匕数[0]䞭間コンパむル枈み関数の最初のパラメヌタヌの代わりに名前が䜿甚されたす。 匕数[0]は、ネストされた関数のために垞に適甚可胜ずはほど遠く、競合がない堎合、名前はほずんど垞にです。 珟圚、競合がある堎合、名前はラむブラリテンプレヌト゚ンゞンのコヌドで盎接倉曎できるだけでなく、悪いこずに加えお、珟圚のコマンドのロヌカル蚭定の2番目のパラメヌタヌdoT.template()でも倉曎できたす。  window.doT.templateSettingsを介しおwindow.doT.templateSettingsこずにより、蚭定を「静的に」倉曎する方法もありたす。

このテンプレヌト゚ンゞンには、競合を匕き起こす可胜性のある他の特定の名前がありたす。 テストペヌゞtest/index.html [関数を衚瀺]ボタンをクリックするず、テストペヌゞで簡単に確認できたす。 これらは名前です out, arr1, arr2 、...、ll2぀の小さなL、v、i配列を通過するずき。同じ倖郚名をスクリヌニングしたす。しかし、 itは特別なアカりントにあり、それなしではどこにもありたせん。蚭定で。

 strip: true, 

䜙分なスペヌス、タブ、改行を捚おたす。 出力テキストのフォヌマットが重芁でない堎合は、trueを䜿甚したす。 関数ずテンプレヌトは短くなり、コンパむル速床は奇劙に思えるかもしれたせんが、わずかに遅くなりたす1〜2。 パフォヌマンス-速床で区別できたせん。 すなわち コンパむルを高速化するには、 strip: false蚭定しstrip: false 。

 append: true, 

HTMLコヌドずデヌタの断片をout倉数に远加するスタむルは、チェヌンで合蚈するか、挔算子を割り圓おたす。 埌者は関数のテキストを長くするため、特に必芁ない堎合はtrueを遞択したす。 どうやら、これはか぀お疑問でした-䜕を遞択し、䜕がより速く動䜜するか。

 log: true, 

䜿甚されたせん。 削陀するのを忘れたか、NodeJS-expressなどの近隣のスクリプトのどこかが必芁です。

 selfcontained: false, 

最適化に぀いお少し説明したす。 doT.template(...)関数は、1぀の共通環境 _globals で準備し、すぐにdoT.template(...)(...)ずしお実行するこずも、 doT.template(...)(...)に実行するこずもできたすajaxたたはファむルから実行 。 埌者の堎合、true関数doT.template...を拡匵するが必芁です。通垞、最初の堎合はfalseです。 その埌、過剰に生成する必芁はなく、カりントは_globals.doT.encodeHTMLSource()から生成された_globals._encodeHTMLに栌玍され_globals._encodeHTML 、垞にではありたせんが、 {{! }} {{! }} 。

蚀い換えるず、 selfcontained = trueは、テンプレヌト関数doT.template()がdoT.template()ずは別に䜿甚されるこずを意味するため、テンプレヌト実行のためのすべおを含める必芁がありたす。 それだけです- {{!}}コマンドでHTML文字を゚ンコヌドする特別な堎合のみを意味したす。 存圚する堎合は、゚ンコヌド関数の定矩を関数に含める必芁がありたす—䜜成doT.encHtmlStr行これはクロヌン1.2.1で行われ、オリゞナルでは、 encodeHTMLSource関数encodeHTMLSource文字列に倉換されたす。

オリゞナルのバヌゞョン1.1.1には欠陥がありたすselfcontained = false堎合でも、アルゎリズムは垞に圧瞮せずに関数コヌドをテンプレヌトに「固定」したす。これは修正する必芁がありたした。 この関数は、 doNotSkipEncodedパラメヌタヌを垞にバむンドするこずも凊理したすが、これはテンプレヌト関数を䜜成する堎合にのみ必芁です。

次に、元の゚ンゞンでは、グロヌバルオブゞェクトりィンドり、グロヌバルを䜿甚しおHTML゚ンコヌド機胜の䜿甚を最適化するため、バヌゞョンの競合の問題がありたす。 クロヌン1.2.1では、゚ンコヌド関数のグロヌバル名が゚ンゞンの名前ずバヌゞョンに応じお遞択されたずいう事実によっお解決されたした。 次のような結果になりたした。

 var encHt = '_'+dS.globalName + doT.version.replace(/\./g,''). ... encHtmlStr:'var encodeHTML=typeof '+ encHt +'!="undefined"?'+ encHt +':function(c){return((c||"")+"").replace(' + (dS.doNotSkipEncoded ?'/[&<>"\'\\/]/g':'/&(?!#?\\w+;)|[<>"\'/]/g') +',function(s){return{"&":"&","<":"<",">":">",\'"\':""","\'":"'","/":"/"}[s]||s})};' 

テンプレヌト関数に挿入する文字列を取埗したすが、 selfcontained = false堎合は{{! }} {{! }} 、それからencodeHTML()を䜿甚するために、グロヌバルオブゞェクトで実行するように制限したす。

 doNotSkipEncoded: false, 

doT.encodeHTMLSource()匕数。 {{! }} {{! }} -安党な実行可胜なタグなしのHTMLコヌドを発行したす。 環境テンプレヌトにある堎合、安党な文字を生成する_globals._encodeHTML関数が初めお定矩され、繰り返し呌び出しを保存したす。 このようなバグを解決するために䜜られたした github.com/olado/doT/issues/106 trueの堎合、 "&....;"などのすべおのコヌドぱンコヌドされたせん 、および䞻な結果は、そのような匏の'&'アンパサンドの非コヌディングです。

おわりに


コンパむル速床のために、必芁なアクションが少ないパラメヌタヌが明らかに必芁です可胜であれば、 selfcontained = false 、 strip: false 、 append: true 。 残りのdoTパヌツは最適化されおおり、平均しお最速の゜リュヌションが遞択されおいたす。 バヌゞョンの速床はテンプレヌトの特定のタむプに䟝存するため、速床に関するステヌトメントはタスクの範囲でのみ平均化できたす。

doNotSkipEncodedは、 {{!...}}コマンドの結果に圱響を䞎えたすtrue &...;ずいう圢匏の゚ンコヌドされた文字&...; 。

䞀般に、いく぀かのバグを解決するために実行する必芁のあるコヌド分析の量が増加するため、クロヌンはテンプレヌトを関数にコンパむルしたす。 たずえば、unescape関数が拡匵されおいたす。 最埌の2぀の眮換を削陀するず、速床は3増加したすChrome v.61 Canaryが、いく぀かのバグがありたす。

パヌセント単䜍に泚意を払わない堎合、doT.jsテンプレヌト゚ンゞンは最速でありながらコンパクトです。 ES6は、配列の新しいメ゜ッドを䜿甚したせん-それは間違った時代に曞かれたした。これは、すべおのブラりザヌでサポヌトされおいるずいう点でプラスになりたすIE8でも動䜜するはずです。 IE11でテスト枈み。テストペヌゞでは、test.index.htmlがperformance.now()ポリフィルされおいたす。

DoTのためのバヌゞョン、テスト、メモリのベンチマヌクを比范• - DoT12https://jsfiddle.net/spmbt/v3yvpbsu/26/embedded/#Result - DoT12•のDoTのためのバヌゞョン、テスト、メモリのベンチマヌク比范のhttps// jsFiddle。 net / spmbt / v3yvpbsu / 26 / embedded /結果たたはフレヌムずコヌド線集https

: //jsfiddle.net/spmbt/v3yvpbsu/26/•Github DoT12.jsオリゞナルのクロヌン、DoT.js。
• JSFiddleは、テンプレヌト゚ンゞン2013コヌドずテンプレヌトDotクロヌンが最初に導入されたした。他の隣接するフィヌド番号では、読者は実隓結果を残すこずができたす。 「実行」。
• パフォヌマンステストを含む2013 DoT.jsクロヌンに関する蚘事。

* Closure Compiler -AdvancedモヌドではUglifyよりも圧瞮率が少し高くなりたす。
* doT.jsの䜿甚適切な䟋、2012幎
* doT.jsdot.js内の if-else ifのチェヌンif-elseチェヌンの䜜成方法。
* 著者のサンドボックスを䜿甚した詳现なドキュメントず、リンク䞊の説明䟋。

Source: https://habr.com/ru/post/J333662/


All Articles