Express ベースの構造とビュー用の Jade モジュールを備えた NodeJS アプリケーションがあります。開発者のマシンではフル バージョンのアセットを使用し、運用マシンでは最小バージョンを使用する必要があります。
どのように適切に行うべきかのベストプラクティスを説明できますか?
編集:マイナスを付ける場合は、その理由を説明してください.
これを行う「公式の」方法がない理由がわかりません(Ruby on Railsが行う方法と比較して)。
ここにいくつかの提案があります:
これが私がこれまでやってきたことです:
サーバーの起動時に、すべてのjsファイル(... / jsの下でuglify-jsを実行し、... / minの下で縮小バージョンを作成します)を次のように実行します(ファイルの読み取り/書き込みを省略します)。
var jsp = require('uglify-js').parser;
var pro = require('uglify-js').uglify;
var ast = jsp.parse(code.toString('utf8')); // parse code and get the initial AST
ast = pro.ast_mangle(ast); // get a new AST with mangled names
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
var final_code = pro.gen_code(ast); // compressed code here
次に、HTMLテンプレートで、実稼働環境をトリガーするいくつかの環境変数に基づいて、<script>
.../jsまたは.../minを指すタグのパスを生成します。
これにより、かなり多くのことが省略されます(ここでは、すべてのjsファイルを1つの最小化されたファイルにグループ化して、ブラウザークエリなどの数を減らします)が、これが独自の戦略の作成に役立つことを願っています。
そうは言っても、私はpyler(https://github.com/epeli/piler)を試すつもりでした。これは、DYIの方法よりも優れた代替手段のようです。
Grunt.js(http://gruntjs.com/)は、ファイル(html、js、css、...)の前処理にも非常に適しています。
ここにいくつかのポインタがあります:
私はミニフィケーションをビルドステップと見なしており、実行時にアプリケーションに負担をかけたくない. したがって、ビルド ツールから生成されたファイル パスを参照するように HTML ファイルをセットアップし、ビルド ツールを使用して縮小するかどうかを判断します。
ブラウザに未圧縮のコードを入れる必要がなかったので、実際には自分で条件付きにする必要はありませんでした。ソース ファイルを監視して自動的に再コンパイルする簡単なセットアップを使用すると、JavaScript ソース ファイルを編集でき、自動的に再構築され、適切なランタイムの場所に配置されます。ただし、これはコードのステップ実行に役立つことがわかりました。IE 9 の開発コンソールには、圧縮されたコードのデバッグに役立つフォーマッターがありますが、それがブラウザー間でどれほど一般的かはわかりません。
開発中に縮小化をスキップする場合は、まず、grunt uglify タスクで環境変数や npm 設定などの構成設定を使用して、実際に uglify するかどうかを決定できるかどうかを確認します。それが不可能な場合は、uglify 以外のすべてを実行する「devBuild」という別の単調なタスクを作成します。