백본 앱이 잘 최적화 된 상태로 잘 작동합니다. r.js (아몬드 포함)를 사용한 후, 백본 다음 모듈에서 항상 'TypeError : Backbone is undefined'오류가 발생하는 것으로 보이는 단일 출력 파일을 성공적으로 생성합니다. 예를 들어Require.js + TypeError : 최적화 후 백본이 정의되지 않았습니다.
, r.js로부터의 출력은 다음과 같다 : 브라우저에 최적화 된 파일의로드시
/consumer/public/javascripts/vendor/almond.js
/consumer/public/javascripts/vendor/jquery-1.7.2.js
/consumer/public/javascripts/vendor/underscore.js
/consumer/public/javascripts/vendor/bootstrap.js
/consumer/public/javascripts/vendor/backbone.js
/consumer/public/javascripts/rjs/src/mnp/prop_m.js
/consumer/public/javascripts/rjs/src/mnp/prop_c.js
/consumer/public/javascripts/vendor/play-mustache.js
...
/consumer/public/javascripts/main.js
는 위 'prop_m.js'모듈에서 발생 될 에러를 참조 할 때 등뼈. require 2.0.5, Backbone 0.9.2 및 almond 0.1.4를 사용합니다. 모든 도움을 미리 감사드립니다.
PS : build.js은 다음과 같습니다
({
baseUrl: "./",
mainConfigFile: "main.js",
paths: {
'almond': 'vendor/almond',
// need a path to the cs-compiled .js file
'app' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/app',
'mnp/router' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/router',
'mnp/search_form_v' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/search_form_v',
'mnp/prop_c' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/prop_c',
'mnp/prop_m' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/prop_m',
'mnp/prop_list_v' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/prop_list_v',
'mnp/prop_item_v' : '../../target/scala-2.9.1/resource_managed/main/public/javascripts/rjs/src/mnp/prop_item_v'
},
/*not compatible with modules*/
name: 'vendor/almond',
include: ["main"],
out: "dist/app.js",
/*not compatible with modules*/
keepBuildDir: false,
preserveLicenseComments: false,
optimize: "none",
wrap: {
start: "(function(global, define) {\n"+
// check for amd loader on global namespace
" var globalDefine = global.define;\n",
end: " var library = require('main');\n"+
" if(typeof module !== 'undefined' && module.exports) {\n"+
// export library for node
" module.exports = library;\n"+
" } else if(globalDefine) {\n"+
// define library for global amd loader that is already present
" (function (define) {\n"+
" define(function() { return library; });\n"+
" }(globalDefine));\n"+
" } else {\n"+
// define library on global namespace for inline script loading
" global['main'] = library;\n"+
" }\n"+
"}(this));\n"
}
})`
감사합니다. 행운과 함께 inlineText : true를 추가하려고했습니다. build.js에서 mainConfig와 경로가 모두 설정되었습니다. 컴파일 된 coffeescript를 'managed_resources' baseUrl 외부의 디렉토리. 따라서 mainConfig 파일을 사용하여 공급 업체 경로 (및 shim)를 한 곳에서만 설정하고 build.js의 경로를 사용하여 재생 된 coffeescript의 실제 물리적 위치를 재정의하고 설정합니다 (managed_resources에서). 하지만 어쩌면 이것은 잘못된 접근입니까? ... – user1691935
sry, coffeescript에 익숙하지 않습니다 :/ 하지만 어쩌면 백본을로드하고 있지만 매개 변수로 전달하는 것을 잊어 버렸습니다 (적어도 오류는 이와 같은 이유로 인해 나타납니다) – Peter