RequireJS オプティマイザーは、定義された依存関係を調べて、アプリケーション内の参照されているすべての js ファイルを収集し、それらを 1 つの大きな js ファイルにバンドルするという印象を受けました。
その後、html スクリプト インクルードでその単一のファイルを参照できます。
しかし、そうではないようです。これを実行すると、大きなファイルが得られますが、ディレクトリ構造内のファイルへのパスを含む元の main.js ファイルが含まれています。
そのポイントは何ですか?必要なものがすべて内部に含まれているのに、新しい大きなファイルに外部のパスが含まれているのはなぜですか? オプティマイザーが「./」などを指すようにパスを書き換えるようです。
アプリ全体をまとめてページで参照すると、大きな js ファイルに含まれているファイルが見つからないというエラーが表示されます。
Uncaught object require.js:70
GET http://localhost/ui/js/modules/mod_limeLight.js 404 (Not Found) require.js:729
Uncaught Error: Script error for: mod_limelight
http://requirejs.org/docs/errors.html#scripterror
build.js:
({
baseUrl: "./src/ui/scripts",
name: "main",
mainConfigFile : "src/ui/scripts/main.js",
out: "dist/ui/scripts/main-built.js"
})
main.js
'use strict';
require.config({
"paths": {
"jquery": "libs/jquery-1.11.0.min",
"twitter_bootstrap": "../bower_components/bootstrap/dist/js/bootstrap.min",
"respondjs": "../bower_components/respond/dest/respond.min",
"debouncejs": "libs/dw-debounce",
"carousel": "libs/jquery.carouFredSel-6.2.1-packed",
"swipe": "libs/jquery.touchSwipe.min",
"app": "app",
"OOo_config": 'libs/oo_conf_entry-ck', // Opinion Lab pop-up
//modules
"addthis": "//s7.addthis.com/js/300/addthis_widget",
"mod_addThis": "modules/mod_AddThis",
"limelight": "//assets.delvenetworks.com/player/embed",
"mod_limelight": "modules/mod_limeLight"
},
"shim": {
"twitter_bootstrap": ["jquery"],
"carousel": ["jquery"],
"swipe": ["jquery"],
"packeryjs": ["jquery"]
}
});
require([
"jquery",
"app",
"OOo_config",
"respondjs",
"mod_addThis",
"mod_limelight"
], function ($, app) {
app.init();
});
サンプル モジュールは次のように始まります。
define([
"jquery", "debouncejs", "limelight"
],
function ($) {
'use strict';
var playerElement = ...
});
次に実行します:
node r.js -o build.js
私は何が欠けていますか?その大きな js ファイルに含まれるファイルを取得しようとするのはなぜですか?
ありがとう、スコット