2013-06-07 2 views
1

JavaScript 용으로 다른 난독 화 도구를 사용해 보았지만 결과를 사용할 때 작동하지 않습니다.자바 스크립트 코드를 난독 화하기 전에 필수 조건이 있습니까?

모든 주석, 한 줄 주석 및 여러 줄 주석을 제거하고 적절한 세미콜론과 적절한 서식을 지정하기 위해 코드를 아름답게 꾸몄습니다.

내 질문 : 코드를 난독 화하기 전의 전제 조건은 무엇입니까?

+1

당신의 구문이 완벽해야합니다. IE에서로드하면, 그렇지 않으면 실패합니다. 다른 브라우저는 가끔씩 작동합니다. 쉼표, 누락 된 세미콜론 등과 같은 것들은 기술적으로 유효하며 (IE에서는 실패 할 것입니다), 명령문이 한 줄에 있기 때문에 압축 될 때 실패합니다. – Derek

+1

어느 obfuscators? – recursive

+1

@Derek이 말한 내용을 확장하려면 후행 쉼표가 ES5부터 유효합니다. ES5 사양 이전의 고대 브라우저 (예 : IE7 이하)는 쉼표 뒤에 오류가 발생합니다. 세미콜론이 누락 된 것을 의미하는 것이 확실하지 않은지 - ASI는 언어의 강력한 측면입니다. 하지만 여러 줄 반환과 같은 일부 경우에는 오류가 발생할 수 있습니다. –

답변

0

디버깅 할 때 코드에 오류나 경고가 없으면 난독 화해야합니다. JavaScript 구현을 지원하는지 확인하기 위해 사용중인 도구에 대해 자세히 알아보십시오.

0
  • 코드가 즉시-호출 기능 발현 내에서 실행되었는지 확인
  • 사용은 통과
  • 전역 변수에 의존 (또는 명시 적으로 $에 대해 다음과 같이 그들을 통과)하지 마십시오 (예를 아래 참조) (window.somename = {})
  • html 마크 업의 * 속성이 아닌 이벤트 바인딩을 사용하십시오.

코드를 다음과 같이 상대적으로 분리하여 실행할 수 있다면, 아주 잘 당황 할 수 있어야한다 ...

예 :

(function(window, $){ 
    //your code here 

    //create global namespace - expose classes/methods 
    window.MyProject = { 
    someMethod: someInternalMethodToExpose 
    SomeClassName: SomeClass 
    }; 

    //internal stuff 
    function someInternalMethodToExpose() { 
    ... 
    } 

    //constructor function 
    function SomeClass() { 
    ... 
    } 
    SomeClass.prototype.someMethod = function() { 
    ... 
    } 
}(window || this, jQuery));
+0

문제는 jQuery, joHTML을 사용하여 HTML5 앱을 만들고 내 자신이 자바 스크립트 클래스를 만들었다는 것입니다. 나는 하나의 파일에 그것을 가지고있다. 그것이 난독 화 될 때 난독 화하지 않고 작업하며, 작동하지 않습니다. 나는 순수한 자바 스크립트로 코딩해야한다고 생각한다. – smkrn110

+0

일반적인 amd 패턴을 따르는 경우, 난독화할 수 있어야합니다. * 단일 파일에 jQuery를 포함하여 필요한 모든 JS가 * ALL *있는 경우 아마 google closure 컴파일러를 사용하여 많이 최적화 된 버전을 만드십시오. 이는 충분히 난독 화가되어야합니다. – Tracker1

관련 문제