1

handlebars.js を使用して、単一ページ アプリのクライアント側テンプレートを (node.js サーバー側で Jade を使用して) レンダリングしています。

サーバー側でハンドルバー テンプレートをプリコンパイルし、それらを 1 つの JS ファイルとしてバンドルしてクライアントに送信したいと考えています。

現在、私は次handlebarsのようにテンプレートをコンパイルするために使用しています:

$ handlebars template1.handlebars template2.handlebars -f precompiled_templates.js

*.handlebarsディレクトリ内のすべてのファイルを読み取り、ハンドルバー コンパイラで実行できる bash スクリプトを作成したいと考えています。したがって、次のようなディレクトリがあるとします。

templates/
  temp1.handlebars
  temp2.handlebars
  temp3.handlebars
  temp4.handlebars

テンプレート ディレクトリで bash スクリプト (または 1 行のコマンド) を実行すると、基本的に次のhandlebarsコマンドが実行されます。

$ handlebars temp1.handlebars temp2.handlebars temp3.handlebars temp4.handlebars -f precompiled_templates.js

上記のように、ディレクトリ内のすべてのハンドルバーファイルをコマンドラインに取得するbashスクリプトを作成する方法を知っている人はいますか?

4

3 に答える 3

2

あなたは似たようなものが欲しいようです

handlebars templates/*.handlebars -f precompiled_templates.js

ただし、各ファイルの前に「テンプレート」が付けられることになります。私の好みのアプローチには、次の 2 行が必要です。

files=( templates/*.handlebars )
handlebars "${files[@]#templates/}" -f precompiled_templates.js.

最初の行は、必要なすべてのファイルを配列に入れます。2 行目では、配列の内容を展開しますが、展開結果の各要素から "templates/" プレフィックスを削除します。

于 2012-09-25T17:57:17.750 に答える
1

テンプレートディレクトリで次のことを行います。

handlebars `find -name *.handlebars` -f precompiled_templates.js

バックティックは、そのコマンドを実行してから結果を返すことを意味します。したがって、実際には、返される各ファイルに対してハンドルバーを実行します。上記のように、findはファイルの現在のディレクトリとサブディレクトリを検索するので、正しい場所から実行するようにしてください。

于 2012-09-25T21:57:10.723 に答える
0

Bash では、二重引用符で囲まれた文字列を使用してリストを作成できます。

FILES="/etc/hosts /etc/passwd"
for file in $FILES; do cat $file ; done

<cat all files>

find および exec コマンドも使用できます。

詳細については、man [find|exec] を参照してください

于 2012-09-25T17:52:59.280 に答える