여러 개체가 있습니다. 하나는 DomDependent라고하며, 하나는 WorkFlow라고하며, 하나는 중개자라고합니다.종료 후 버그 코드 컴파일
myApp.DomDependent.attachEvents=function(){
myApp.mediator.attach("doConversion",mmt.WorkFlow.doConversion);
DomDependent 레지스터 중재자의 "이벤트"와 워크 플로우 기능을 가지고이를 구현하기 :
domdependent는 다음과 같은 코드가 있습니다. DomDependent 이후 WorkFlow로 코드를 컴파일하면 이벤트가 등록되지만 함수는 null입니다. DomDependent 전에 나열된 WorkFlow로 컴파일 할 때 일부 이벤트가 등록되지 않고 일부 이벤트가 구현되지 않습니다.
myApp.DomDependent.removeAdded();
I : 워크 플로우에서
:
나는 워크 플로 개체가 호출이 텍스트 상자 값 등을 얻을뿐만 아니라 Domdependent 할 수 있습니다로 순환 종속성을 구현하는 올바른 방법이 무엇인지 확실하지 않다 goog.require를 DomDependent (WorkFlow에)와 WorkFlow (DomDependent)에 모두 넣으려고했으나 순환 종속성으로 인해 컴파일되지 않습니다.
는 그래서 파일을 myApp에 goog.require 문을 제거하고 calcdeps.py 명령 행 인수로 제공 :
set calc="D:\software\closure compiler\library\closure\bin\calcdeps.py"
c:\Python27\python.exe %calc%^
--path D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\myApp\Mediator.js^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\myApp\WorkFlow.js^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\myApp\data.js^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\myApp\Messenger.js^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\myApp\DomDependent.js^
--compiler_jar "D:\software\closure compiler\compiler.jar"^
--output_mode compiled^
--compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS"^
--compiler_flags="--formatting=PRETTY_PRINT"^
--compiler_flags="--warning_level=VERBOSE"^
--output_file D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\main.js
pause
내 질문
은 다음과 같습니다이 얻을 수있는 올바른 방법인가 의존? DomDependent에서 goog.require
을 선택하면 WorkFlow의 모든 코드가 제거되고 중재자로 등록 된 이벤트를 트리거하면 정의되지 않은 호출이 시도됩니다.
함수가 제거되지 않았고 중재자를 통해 호출되지만 컴파일러가 그 중 몇 개를 놓친다 고 생각하고 아직 그 이유를 찾지 못했습니다. 컴파일되지 않은 코드는 작동하지만 편집 후 중개자는 존재하지 않는 함수를 호출하려고합니다 (중재자도 컴파일되므로 이름 바꾸기 기능 부분이 아닙니다).
[UPDATE]
는 I 의심 이벤트가 등록되지 않은 하나 개의 버그를 발견했다. 그것은 등록되었지만 변수의 이름 변경 때문에 아무 것도하지 않습니다.myApp.WorkFlow.addBegin=function(){
myApp.WorkFlow.addEndOrBegin("begin");
};
myApp.WorkFlow.addEndOrBegin=function(whereTo){
var where={begin:"",end:""},
lines=myApp.DomDependent.getAddwordsContent(false).split("\n"),
i;
where[whereTo]=mmt.DomDependent.getBeginEnd();
for(i=0;i<lines.length;i++){
lines[i]=where.begin+lines[i]+where.end;
...
컴파일 된 버전의
개체 변수 시작하지 않고 종료 속성 어디없는 [ "시작"] 여기서 : 또는 어느 라인의 시작 또는 끝 부분에 문자를 추가,이 함수는, 예를 들어 정의되지 않았습니다.
나는 여전히 순환 형 파일을 컴파일하는 것이 올바른지 알고 싶습니다.
차드에게 감사드립니다. 이제 내가 문제를 일으킨 원인을 알고 goog.require를 내 파일에 추가하고 cacldeps.py 매개 변수에서 --input 중 일부를 제거하려고합니다. 파일이 호출되는 순서대로 goog.require를 설정해야합니다. DomDependent가 먼저 중재자에게 이벤트를 첨부하기 위해 호출되므로 goog.require를 WorkFlow에 설정합니다. – HMR
deps.js에 myApp.Classes를 추가 했으므로 goog.require ("myApp.DomDependent") 및 컴파일되지 않은 코드 만 추가합니다. 컴파일 된 코드는 (예를 들어) DomDependent에 goog.require ('myApp.WorkFlow')가 있기 때문에 작동합니다. DomDependent는 페이지로드시 전나무가 호출되는 기능을 가지고 있기 때문에 시작됩니다. – HMR