>  기사  >  웹 프론트엔드  >  JavaScript 분석 및 압축 도구 JavaScript Analyser_javascript 기술

JavaScript 분석 및 압축 도구 JavaScript Analyser_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:22:351204검색

JSA 압축 과정은 두 단계로 나누어집니다

첫 번째 단계는 Dojo ShrinkSafe와 유사하지만 더 안전하고 효과적인 구문 압축입니다.

두 번째 단계는 텍스트 압축으로, 현재
을 사용하고 있습니다. JavaScript 압축기의 압축 알고리즘.
(http://dean.edwards.name/packer/ )

설정 창에서 설정할 수 있습니다.
기본적으로 구문 압축이 먼저 사용됩니다. 파일이 1000바이트를 초과하고 텍스트 압축을 사용하여 원래 크기의 90%로 압축할 수 있는 경우 원본을 기준으로 텍스트 압축이 사용됩니다.

다음은 JSA 구문 압축 및 최적화 기능을 보여주는 스크립트 압축 예시입니다.

코드 복사 코드는 다음과 같습니다.

{
을 시도해 보세요. //xxxx()
}
잡기 (e) {
yyyy()
함수 f1() {
}
}
드디어 {
zzzz()
}
함수 f2(var1) {
var var2 = 2; var var3 = 3
var withObject = {var2:-2}
with(withObject){
경고(var2)
}
}

압축된 결과(쉽게 참조할 수 있는 형식):

코드 복사 코드는 다음과 같습니다.
zzzz()
함수 f2(A) {
var var2 = 2; 변수 B = 3
var C = {var2:-2}
(C)와 함께 {
경고(var2)
}
}


다른 압축 도구와의 압축률 비교:

1. 자바스크립트 압축기(http://dean.edwards.name/packer/)

자신의 압축 도구 코드를 예로 들면(v2.02), 패커 압축 후 크기는 7,428바이트입니다(설명 제거됨).

​ 그리고 당사의 압축 도구는 7,256바이트까지 압축할 수 있습니다
7256 / 7428 = 0.9768443726440496
2.Dojo ShrinkSafe (거칠고 비효율적이며 위험하므로 기존 사용자는 빨리 교체하는 것이 좋습니다)
자신의 프레임워크 소스 코드를 예로 들면(v0.4.1):
자신의 압축 크기는 149,518바이트인데 압축 후 81,261바이트로 줄일 수 있습니다
81261 / 149518 = 0.5434864029748927

안전 지침:

1.자바스크립트 압축기

텍스트 기반 압축은 로직을 자세히 살펴보지 않았지만 이러한 종류의 압축에 문제가 발생할 가능성은 매우 낮습니다. 우리 압축 도구도 JSI 1.1 a8 및

통합된 타사 클래스 라이브러리 테스트에서는 아무런 이상이 발견되지 않았습니다. 게다가 잘 알려진 프레임워크인 JQuery를 사용하고 있기 때문에 문제가 없을 것이라 믿습니다.


추가(2007-03-12): 오늘 저는 이 도구에 JavaScript 여러 줄 문자열 구문을 구문 분석할 때 버그가 있음을 발견했습니다. 그러나 이 문제는 JSA 구문 압축 후에는 더 이상 존재하지 않습니다.

2. 도장 수축안전 위험! ! ! ! !

긴 지역 변수 이름을 더 짧은 이름으로 바꾸세요. 예를 들면 다음과 같습니다.

함수(){
var withObject = {변수1:1}
var 변수1 = 2
with(withObject){
경고(변수1)
}
}


은 다음으로 압축됩니다:

함수(){
var _1={변수1:1}
var _2=2; 와(_1){
경고(_2); }
}



이것은 분명히 잘못된 것입니다. 이 쓰레기는 JavaScript의 일부 특수 구문과 역학에 주의를 기울이지 않습니다.
eval 함수, catch 작업 및 with 문은 어떤 방식으로도 처리되지 않습니다.
이에 비해 JSA는 현재 제가 아는 가장 안전하고 효과적인 압축 도구입니다. JSA는 코드 압축 기능을 제공할 뿐만 아니라 서식 지정 및 스크립트 분석도 수행할 수 있습니다.


스크립트 분석 기능을 사용하면 스크립트 정보를 확인하고 스크립트에서 잠재적인 문제를 찾아낼 수 있습니다.
예를 들어 스크립트에 어떤 함수와 변수가 선언되어 있는지 확인하세요.
어떤 외부 변수가 사용되는지. 등. . .

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.