ハンドルバーベースのウィジェットのパッケージ化:javascriptとhtml

ゲームママニ

私はこれに比較的慣れていないので、いくつかの明白な点を見逃している場合は失礼します...

ハンドルバーを使用して再利用可能なウィジェットを作成したいと思います。簡単にするために、Usersテーブルについて考えてみましょう。

<script type="text/x-handlebars-template" id="temp1">
       <table>
         {{#users}} 
            <tr><td>{{name}}</td><td>{{email}}</td></tr> 
         {{/users}} 
       </table>
</script>

<script>
   var template=Handlebars.compile($("#temp1").html());    
   function renderUsersTable(users, divId){
       $("#"+divId).html(template(users:users));
   }
<script>

これは機能しますが、ビジネスページに埋め込まれたテンプレートスクリプト(text / x-handlebars-template)でしか機能しません再利用できません。別のページで必要な場合は、コピーして貼り付ける必要があります。テンプレートをjavascript文字列変数に引用することを検討しましたが、実際のhtmlがかなり大きいため、これは特に醜いです。

ハンドルバーテンプレートを専用ファイルに分割して、必要に応じて別のページに含めることができる、より良い方法はありますか?

どうもありがとう

フィルC

はい。1つの方法は、gulpタスクを使用してすべてのテンプレートをコンパイルすることです。以下の例では、ディレクトリからすべての個々のハンドルバーファイルを取得し、それらを1つのjavascriptファイルhb_templates.jsにテンプレートとして配置します各テンプレートには、元のファイルの名前が付けられています。あなたの例では、テンプレートをに入れることができますusers.handlebars次に、生成されたhb_templates.jsafterHandlebars.jsを本番Webページに含めます。

gulp.task('handlebars', function() {
  gulp.src('./app/views/*.handlebars')
  .pipe(htmlmin({
    collapseWhitespace: true
  }))
  .pipe(handlebars())
  .pipe(wrap(function(data) {
    var filename = data.file.history[0].split('\\').pop().split('.')[0];
    return "Handlebars.templates." + filename + "=Handlebars.template(<%= contents %>)";
  }))
  .pipe(concat('hb_templates.js'))
  .pipe(gulp.dest('./app/scripts/'));
});

このようなテンプレートを使用します。

$("#"+divId).html(Handlebars.templates.user(users:users));

のパーシャルHandlebarsは単なるテンプレートであるため、これらのテンプレートを他のテンプレートファイル内で使用できます。

<div>
{{> user}}
</div>

hb_templates.jsこのようにロードしたら、パーシャルとして登録するだけです。

handlebars.registerPartial('user', handlebars.templates.user);

この例では、次の依存関係nodejsgulp

{
    "gulp": "3.9.0",
    "gulp-concat": "2.6.0",
    "gulp-handlebars": "4.0.0",
    "gulp-htmlmin": "1.1.3",
    "gulp-wrap": "0.11.0",
    "handlebars": "3.0.3",
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

剣道UIツールバーウィジェットと空のドロップダウンリスト

分類Dev

Android WearWatchfaceのパッケージ化とインストール

分類Dev

WPFツールキットパッケージのウィザードのOnNextイベント

分類Dev

パッケージソースからのソフトウェアのインストールとダウンロード可能な.debファイル

分類Dev

パスワード検証のためのエントリーウィジェットのTkinterイベントバインディング

分類Dev

ウェブサイトとパッケージマネージャーの異なるバージョン

分類Dev

osgiバンドルからの同じパッケージのエクスポートとインポート

分類Dev

特定のルートのグローバル メッセージ ハンドラーのバイパス

分類Dev

サードパーティリポジトリからのパッケージのインストール

分類Dev

OpenBSD:phpパッケージのダウンロードとインストール

分類Dev

オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

分類Dev

ノードパッケージのインストール

分類Dev

ワードプレスのウィジェットのJavascript

分類Dev

PyQt5-CSVのインポート、表示、スクロールのアドバイス-ビューとウィジェット、QTreeViewとその他

分類Dev

ワイルドカードバージョンのNugetインストールパッケージ

分類Dev

ソフトウェアの再配布-パッケージの依存関係とスタンドアロン

分類Dev

特定のパッケージのインストール(新バージョン)

分類Dev

特定のパッケージのインストール(新バージョン)

分類Dev

プロバイダーパッケージを使用してFlutterでオブジェクトとウィジェットをバインドする

分類Dev

クラウドサービスプロジェクトをMSBuildでパッケージ化する際のCSPackRemotingException

分類Dev

シンプルなNPMパッケージのバンドル/ベンダー?

分類Dev

GITアップロード用のMavenプロジェクトと外部jarおよびプロパティファイルのパッケージ化

分類Dev

PPAとパッケージング:複数のディストリビューション用のパッケージのバージョンを用意する

分類Dev

PPAとパッケージング:複数のディストリビューション用のパッケージのバージョンを用意する

分類Dev

Debianバックポートからのカーネルファームウェアパッケージのインストールを拒否するApt

分類Dev

androidスレッドとハンドラー-バックグラウンドスレッドからのUIオブジェクトの変更

分類Dev

tkinterスケールウィジェットの不明なオプション

分類Dev

他のウィジェットからのフラッターハンドル入力テキストフィールド

分類Dev

Pythonのバージョンとパッケージのインストールの問題

Related 関連記事

  1. 1

    剣道UIツールバーウィジェットと空のドロップダウンリスト

  2. 2

    Android WearWatchfaceのパッケージ化とインストール

  3. 3

    WPFツールキットパッケージのウィザードのOnNextイベント

  4. 4

    パッケージソースからのソフトウェアのインストールとダウンロード可能な.debファイル

  5. 5

    パスワード検証のためのエントリーウィジェットのTkinterイベントバインディング

  6. 6

    ウェブサイトとパッケージマネージャーの異なるバージョン

  7. 7

    osgiバンドルからの同じパッケージのエクスポートとインポート

  8. 8

    特定のルートのグローバル メッセージ ハンドラーのバイパス

  9. 9

    サードパーティリポジトリからのパッケージのインストール

  10. 10

    OpenBSD:phpパッケージのダウンロードとインストール

  11. 11

    オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

  12. 12

    ノードパッケージのインストール

  13. 13

    ワードプレスのウィジェットのJavascript

  14. 14

    PyQt5-CSVのインポート、表示、スクロールのアドバイス-ビューとウィジェット、QTreeViewとその他

  15. 15

    ワイルドカードバージョンのNugetインストールパッケージ

  16. 16

    ソフトウェアの再配布-パッケージの依存関係とスタンドアロン

  17. 17

    特定のパッケージのインストール(新バージョン)

  18. 18

    特定のパッケージのインストール(新バージョン)

  19. 19

    プロバイダーパッケージを使用してFlutterでオブジェクトとウィジェットをバインドする

  20. 20

    クラウドサービスプロジェクトをMSBuildでパッケージ化する際のCSPackRemotingException

  21. 21

    シンプルなNPMパッケージのバンドル/ベンダー?

  22. 22

    GITアップロード用のMavenプロジェクトと外部jarおよびプロパティファイルのパッケージ化

  23. 23

    PPAとパッケージング:複数のディストリビューション用のパッケージのバージョンを用意する

  24. 24

    PPAとパッケージング:複数のディストリビューション用のパッケージのバージョンを用意する

  25. 25

    Debianバックポートからのカーネルファームウェアパッケージのインストールを拒否するApt

  26. 26

    androidスレッドとハンドラー-バックグラウンドスレッドからのUIオブジェクトの変更

  27. 27

    tkinterスケールウィジェットの不明なオプション

  28. 28

    他のウィジェットからのフラッターハンドル入力テキストフィールド

  29. 29

    Pythonのバージョンとパッケージのインストールの問題

ホットタグ

アーカイブ