問題タブ [templating-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavaScript テンプレート エンジン - 左手 3 項 (代入なし) を条件ステートメントに変換する
Krasimir によって構築された完璧なJavaScript テンプレート エンジンを見つけました。まさに私が必要としていたものです。
テンプレート エンジンはうまく機能しますが、当然のことながら、それを少しハッキングして、いくつかの機能を追加したいという衝動を抑えることができませんでした。
残念ながら、一部のコードを理解するのに問題があります。
コードは次のとおりです。
ここに私が理解できない行があります:
私はJavaScriptを初めて使用するわけではありませんが、これは奇妙に見えるコードであり、私が知っていることから、左手代入のない三項演算子です(間違っている場合は修正してください)。三項演算子を条件文に変換しようとしました。
これは私がこれまでに持っているものです:
これは失敗し、「Uncaught SyntaxError: Unexpected token if」というエラーがスローされました
このコードを条件付きステートメントに変換するのを手伝ってくれる人はいますか? また、コードが何をするかについて説明してくれますか?
また、好奇心から、IE8 がこのコードをサポートしているかどうか教えてもらえますか?
注: IE8 のサポートは気にしません。このテンプレート エンジンが IE8 をサポートしているかどうかを知りたいだけです。
Krasimir のWeb サイトまたは Krasimir のGithubでテンプレート エンジンを見つけることができます。
java - Rythm は @i18n タグでトランスフォーマーとネストされたタグを使用します
まず第一に、私はリズムにとても満足しています! 無料の素晴らしい作品。
最近、Rythm を使用してテンプレートの国際化を開始しましたが、必要以上に面倒に思えるものもあります。私がやろうとしていることを行うためのより良い方法があるかどうか疑問に思っています。
1. @i18n() にタグをチェーンします。
これは動作しません:
@i18n("about.text").nl2br()
@i18n("about.text").mytransformer()
これに対する回避策は次のとおりです。
これは機能しますが、きれいではありません。
2. JavaScript でエスケープされた @i18n()
セクションがある場合
その場合、Rythm はその説明の ' または " を適切にエスケープします。ただし、次を使用すると:
エスケープは行われません。私もやってみました:
と
ただし、どちらも機能しません (上記を参照)。再び機能するのは
3. @i18n() 内のタグを引数として使用
次のように、翻訳された文字列内にリンクが必要な場合があります。
これをテンプレートで次のように使用したいと思います。
注:person
これは type のテンプレート引数ですPerson
。@genlink
ルックアップを使用してリンクを生成するための便利なテンプレート (またはタグ) です。私が現在使用しているソリューションは次のとおりです。
言語リソースが次のように変更されていることに注意してください:about.text=See my profile here {0}
これはおそらくリソース文字列を記述するためのより良い方法ですが、どうにかして を取り除き、次のように記述できればよいでしょう@assign()
:
編集:
私はあなたの提案を試みましたが、部分的にしか成功しませんでした.
- チェーンタグに
@i18n()
@("about.text".i18n())
動作しますが、@("about.text".i18n().nl2br())
動作しません のパラメーターが欠落していると不平を言います@i18n()
。不足しているパラメーターを次のように追加すると、定義されていない@("about.txt".i18n("").nl2br())
と文句を言いますnl2br()
String
私にとってうまくいったのは:@s().i18n("about.txt").nl2br()
さらに奇妙なことに、あなたのフィドルを Chrome で実行すると、完全に動作します。Mac/Safari で実行すると、先ほど説明したのと同じエラーが表示されます: スクリーンショットを参照してください:
@i18n()
JavaScriptでエスケープ
あなたが説明したように動作します!
- 内部のタグ
@i18n()
を引数として使用
了解した。を使用した現在のソリューション@assign()
は、1 回限りの場合に適しています。Using@def()
は、より優れた一般的なソリューションです。
jquery - レンダリングされたテンプレートを ajax で更新する
ajaxを使用してmysql dbから取得したデータからテンプレートをレンダリングするためのこのコードがあります。
テンプレートのデータを取得するコード:
Web ページにテンプレートを表示する:
問題は、このようにテンプレート エンジンが古いテンプレートのデータを毎回更新する代わりに、新しいテンプレートをレンダリングすることです。
新しいテンプレートをレンダリングする代わりに、既にレンダリングされたテンプレートを更新する方法について何か提案はありますか?
freemarker - フリーマーカー改ページ
私は Apache freemarker を使用して PDF ドキュメント レポートを作成しています。ページの半分がテキストでいっぱいで、その下にテーブルを追加する必要がある状況があります。テーブルのサイズは動的で、テキストと同じページに収まる場合もあれば、収まらない場合もあります。収まらない場合は、次のページにテーブルのコンテンツの一部が表示されます。表が同じページに収まるかどうかを測定し、収まらない場合は別のページに印刷したいと考えています。それを達成する方法はありますか?
私の場合、表が収まる場合は、同じページに表を印刷することが重要です。
loops - MailJet のネストされたループ
これまでのところ正常に動作するmailJetを使用して電子メールを作成しています。私たちの現在の問題は、ループ内のループ内にループを持ちたい (つまり、ネストされたループ) ということです。
これはテンプレートにあります。ブレークで内側のループを削除すると、すべて問題ありません。
テンプレート エラー レポートを有効にすると、次のメッセージが表示されます。
しかし、{{tripSegment.breaks}} で印刷しようとすると、次のメッセージが表示されます。
フィールドは、trips や tripSegments のように明らかに配列であるため、基本的には機能するはずです。
MailJet のネストされたループで間違っていることは何ですか?
編集:
私のオブジェクト構造は、Mailjet に送信すると次のようになります。