ほぼ同一のrequire.js構成呼び出しが異なる動作をするように見えるという問題があります。ある場合には、との設定baseUrl
に失敗しpath
ます。
フォルダ構造
- /js
- - app/
- - libs/
- - - hogan.js
- - - backbone
- - - - backbone.js
- - - - etc.
- - - boostrap
- - - jquery
- - - - jquery.js
- - - - etc.
- - - require
- - - - require.js
- - - - etc.
- - templates/
- - require.config.js
スクリプトタグ
<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js"></script>
構成が必要
require.config(
{
baseUrl: "/resources/js/libs",
shim: {
"underscore": {
exports: "_"
},
"backbone": {
deps: [
"json2",
"underscore",
"jquery"
],
exports: "Backbone"
}
},
paths: {
"app": "/resources/js/app",
"backbone": "backbone/backbone",
"jquery": "jquery/jquery",
"templates": "/resources/js/templates",
"templateEngine": "hogan"
}
}
);
require(
[
"app/router"
],
function( AppRouter ){
AppRouter.execute();
}
);
どちらの場合も、require.config.jsの完全な内容を示すスクリプトタグが追加されます。
<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">
アプリ/ルーターでの定義
define(
[
'backbone',
'templateEngine'
],
// etc
);
ただし、問題が発生した場合、アプリ/ルーターはロードされず、次の場合のみロードされます(404なし、なし)。
GET require.js 200 OK 180ms
GET require.config.js 200 OK 69ms
Firebugコンソールに入るrequire(["app/router"]);
と、次のようになります。
"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"
私が期待するのは:
- /resources/js/libs/backbone/backbone.js
- /resources/js/libs/hogan.js
試みられた解決策
- との相対パスと絶対パスのさまざまな組み合わせを使用しようとしまし
baseUrl
たpaths
。たとえば、、、baseUrl: libs
などpaths: { "app" : "../app" }
。 - 以下を使用する代わりに試し
deps
てみました。callback
require
config
context
に一致するプロパティを追加しましたbaseUrl
。- require.config.jsをlibsディレクトリに移動しました(編集
baseUrl
しpaths
て必要に応じて、無視されたconfigの同じ問題が発生します。たとえば、代わりに/resources/js/libs/backbone.jsをロードしようとします)。
ノート
このフォルダー構造と構成ファイルはローカルホストで機能します。ここで、上記のようにパスから/resources/を削除します。代わりに、すべての相対パス(/で始まるものはありません)がおよびに使用されbaseUrl
ますpaths
。しかし、実際のサーバーでは、これはオプションではありません。