1

JSファイルを作成するための非常にシンプルなテンプレートスクリプトを探しています。それはただ一つのことをするべきです:あるファイルを別のファイルに含めることです。

テンプレート(main.js)

/*> script.js */

var style = "/*> style.css */";

script.js

var my_script;

style.css

html, body {margin:0; padding:0}
.my-style {background: #fffacc}

出力

var my_script;

var style = "html, body {margin:0; padding:0}\
.my-style {background: #fffacc}";

私が作ったcat main.js | sed -e 's!/\*> \(.*\) \*/!cat \1!g'。それからの出力:

cat script.js

var style = "cat style.css";

どのようcat \1に実際に機能しますか?

UserJS(Greasemonkeyスクリプト)の構築に使用します。リポジトリにJSファイルとCSSファイルがほとんどありません。私はそれらを互いに分離したいと思います。ただし、結果スクリプトは1つだけである必要があるため、すべてのJSファイルとCSSファイルをマージする必要があります。

sed、awk、perl、rubyを使用できます。


最後に、js-preprocessorを作成しました。みんなありがとう!

4

3 に答える 3

4

3つの明白な解決策があります:

  1. いかなる種類のincludeディレクティブも使用せず、ファイルの順序を指定するだけです。これにより、簡単なcat file1 file2 file3 > outputステートメントを使用して最終結果を取得できます。
  2. Cプリプロセッサ()などの既存のプリプロセッサを使用しますcppが、JSとの相互作用に注意してください。ただし、Cですでに行っているように、「ヘッダー」でマクロを定義し、独自のライブラリを作成することで、これを有利に使用することもできます。
  3. 必要なことを正確に実行できる単純なプリプロセッサを作成します。#includeのようなディレクティブをサポートしたいだけなら、これは難しいことではありません。

自明ではないソリューションでは、特定のJavaScriptエンジンを使用して、ファイルインクルードをサポートするフックやプラグインを追加したり、結果のコードを出力したり、あるいはまったく別のものを使用したりできます。

于 2009-12-29T17:46:42.077 に答える
1

これの使用目的は何ですか?JavaScriptは複数行の文字列をサポートしていないため、style変数の定義により、テンプレートの展開後に構文エラーが発生します。

編集:私の間違い–あなたの例の拡張に\継続が含まれていることを見逃しました。ただし、これにより拡張プロセスが複雑になります。これを使用する予定の場所、使用可能なツールなどについて、もう少し詳しく説明していただければ幸いです。

Rubyの例:

ruby <main.js -pe'$_.gsub!(%r{/\*>\s*(.+?)\s*\*/}) { File.read($1) }'
于 2009-12-29T17:16:14.290 に答える
0

私はrubyも使用しますが、 rubystdlibに含まれているerbに依存することをお勧めします。より複雑な機能を追加したい場合は、拡張性があります。

あなたの場合、あなたは次の方法を書くことができます:

def include_file(filename)
  File.open( filename, "r" ) { |f| f.read }
end

そして、あなたのテンプレートからそれを使用します:

<% include_file "script.js"  %>
var style = "<% include_file "style.css"  %>";

それはうまくいきます...

于 2009-12-30T13:19:53.523 に答える