두 가지 버전의 자바 스크립트 파일이 있습니다. 하나는 정상적으로 작동하고 다른 하나는 느리게 수행됩니다. 나는 두 파일 모두에서 Closure Compiler를 시도했지만 ... 왜냐하면 나는 멍청하기 때문에 몇 달 후에 좋은 버전의 원본 파일이 누락되었음을 알게되어 기뻤다. 내 하드 디스크뿐만 아니라 내 기억에서도 (나는 어떤 변화가 있었는지 기억이 안납니다.) 그래서클로저 컴파일러에서 코드 재구성
지금 내가 가진 다음 잘 작업 파일의
-
- 압축 코드를
-
-
나쁜 작업 파일의
- 압축 코드
나쁜의
-
- 압축 코드 작업 파일
나는 기꺼이, 두 개의 압축 된 버전 사이에 약간의 차이가 정말있다, 잘 작동하는 소스 파일을 재구성 할 필요가있다.
여기 내가 당신의 도움이 필요한 곳입니다.
내가 나쁜에 이렇게 가고(function() {
// same stuff here
})();
requestAnimFrame(O);
코드
그래서B.onload = function() {
// same stuff here
};
requestAnimFrame(O)
압축 워킹 압축 코드를 작업 잘이 발견, 폐쇄 컴파일러는 어떻게 정확하게 선언 할 수 있습니다 함수 이름없이? 그리고 함수 선언의 끝에는 ();
이 무엇입니까? 압축되지 않은 코드는 어떻게 구현됩니까? 그것은 도움이 될 경우이는 (내가 해결하기 위해 희망하는) 압축되지 않은 잘못된 버전처럼 보이는 방법입니다
function init() {
// same stuff here
}
B.onload = function(){
start()
}
function start() {
init()
requestAnimFrame(0);
}
사용자가 스스로의 차이를 테스트하려면, here's the result when using the good code 및 here's the result when using the bad code
시도 로고를 클릭하십시오 : 첫 번째 링크에서 큐브가 더 빨리 빠져 나옵니다. 좋은 CPU를 가지고 있다면 비주얼을 실행할 때 죽지 않아야합니다. 두 번째 링크는 반대로 CPU에 과부하가 걸리고 애니메이션에서 계속 진행될 때 다른 디스플레이가있는 것으로 보입니다 (이 두 번째 문제는 코드에서 차이점을 발견하고 내가 변경 한 것을 기억하고 있습니다).
'(function() {...})()'은 즉시 실행되는 래퍼 클로저입니다. 'onload' 이벤트가 발생하기를 기다리는 대신 래퍼 클로저 내에서 즉시'start()'를 호출하는 변경을 한 것 같습니다. –