면책 조항 : 저는 총 AMD n00b입니다.AMD Optimizer (r.js)가 출력하지 않습니다.
저는 AMD로 변환하려고하는 프로젝트가 있습니다. 원래 모든 코드는 하나의 파일에있었습니다. 기능 단위를 자체 모듈로 나눌 수 있었지만 모두 같은 파일에있었습니다. AMD 모듈로 분할 한 다음 최적화 도구를 사용하여 모든 것을 결합하기로 결정했습니다. 도움이되는 기고가가 이미 내 모듈을 UMD로 변환 했으므로 모든 것을 옮기는 것이 매우 간단 해 보였습니다.
내 주요 파일 (즉, 내가 쓰고 있어요 내 라이브러리)는 다음과 같습니다
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory);
} else {
// Browser globals
root.regula = factory();
}
}(this, function() {
define(
[
"utils/MapUtils",
"utils/DOMUtils",
"service/BindingService",
"service/ExceptionService",
"service/ConstraintService",
"service/ValidationService",
"service/GroupService"
],
function (MapUtils, DOMUtils, BindingService, ExceptionService, ConstraintService, ValidationService, GroupService) {
...
...
return {
configure: configure,
bind: bind,
unbind: unbind,
validate: validate,
custom: custom,
compound: compound,
override: override,
Constraint: ConstraintService.Constraint,
Group: GroupService.Group,
DateFormat: DateFormat,
Exception: ExceptionService.Exception
};
}
);
}));
다음과 같이 내 디렉토리 구조는 다음과 같습니다
regula
├── amdtest.html
├── dist
│ └── src
└── src
├── build.js
├── domain
│ └── CompositionGraph.js
├── jquery.regula.js
├── lib
│ ├── closure
│ │ └── compiler.jar
│ ├── require
│ │ ├── require.js
│ │ └── r.js
│ └── rhino
│ └── js.jar
├── parser
│ └── Parser.js
├── regula.js
├── service
│ ├── BindingService.js
│ ├── ConstraintService.js
│ ├── ExceptionService.js
│ ├── GroupService.js
│ └── ValidationService.js
└── utils
├── ArrayUtils.js
├── DOMUtils.js
└── MapUtils.js
내 build.js
은 다음과 같습니다
({
appDir: "../",
baseUrl: "src",
dir: "../dist",
modules: [{
name: "regula"
}]
})
다음과 같이 Rhino와 Closure를 사용하여 최적화 프로그램을 실행합니다 :
java -cp lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/require/r.js build.js
불행히도 이것은 어떤 종류의 출력이나 오류도 발생시키지 않습니다. regula.js
에 언급 된 모든 Javascript 모듈도 AMD 모듈입니다. 내가 뭘 잘못하고 있는거야? 도움이된다면 더 많은 정보를 게시 할 수 있습니다. 나는 이전에 언급했듯이, AMD에 관해서는 완전히 새로운 초보자이기 때문에 어떤 것이 관련이 있는지 완전히 모르기 때문에 무작위 정보를 엄청나게 버리고 싶지 않았습니다.
[Require.js optimizer - 문제 해결] (http://stackoverflow.com/questions/15070974/require-js-optimizer-trouble-getting-going) 여기에서 같은 문제가 해결 된 것 같습니다.) [간단히 : r.js에 "-o"플래그가 없습니다.] – kryger
@kryger 굉장! 고맙습니다; 그거였다! 의견을 답변으로 추가하면 동의 할 수 있습니다. –
글쎄, 확실히 최적화 된거야. :-피 – ceejayoz