5

HTML ページのソースを確認すると、HTML タグとテキスト コンテンツが圧縮されており、空白や行はなく、インライン JavaScript になっています。

4

3 に答える 3

5

Jade v0.30.0で私にとってうまくいくものを発見しました:

  1. .js ファイルの名前を .uglify 拡張子に変更します
  2. Jade テンプレートで、以下を使用します。

    include name-of-javascript-file.uglify
    

動作する理由: Jade のソース コードを調べていると、filters.js. そこには、への依存関係が表示されtransformersます。( lib/transformers.jsTransformers モジュールの) には、 を含むさまざまな変換ユーティリティが表示されますuglifyincludeどうやら、Jade は、宣言内の正しいファイル拡張子と一致する場合、これらのトランスフォーマーのいずれかを呼び出します。

于 2013-05-01T20:07:34.773 に答える
4

私はそれについて確信が持てず、まだテストしていませんが、おそらくフィルターを追加して UglifyJS を利用できます。例えば

var uglyParser = require("uglify-js").parser;
var uglyUgly   = require("uglify-js").uglify;

var uglify = function(str) {
  var ast = uglyParser.parse(str);
  ast = uglyUgly.ast_mangle(ast);
  ast = uglyUgly.ast_squeeze(ast);
  return uglyUgly.gen_code(ast);
}

正直、それを翡翠のどこに入れたらいいのかわからないので、フィルターとして扱っています。今のところ、https://github.com/visionmedia/jade/blob/master/lib/filters.jsに貼り付けてください。

翡翠での使用法は次のようになります。

script(type="text/javascript")
  :uglify
    <Your JavaScript Code>

繰り返しますが、私はそれをテストしていません。しかし、私はそれがうまくいくと思います。今日は後でテストします。

于 2011-08-12T13:42:33.620 に答える
2

docsによると、任意の JSTransformer を jade フィルターとして使用できます。したがって、インライン JS に対して通常これを行う場所は次のとおりです。

script.
  (function doSomething () { … })();

次のようにする必要があります。

script
  :uglify-js
    (function doSomething () { … })();
于 2016-04-18T00:14:05.413 に答える