sourceMap 이 뭐 예요?
5498 단어 source-mapwebpack자바 script
요 며칠 동안 전단 오류 로 그 를 만 들 었 습 니 다. 온라인 에서 발표 한 것 은 모두 알 고 있 습 니 다. 우 리 는 생산 환경 에 발표 한 코드 는 보통 다음 과 같은 절차 가 있 습 니 다.
HTTP
감소 JavaScript
이 세 가지 절 차 는 실제 실행 되 는 코드 를 개발 코드 와 다 르 게 만 들 었 습 니 다. debug 든 포획 라인 의 오류 든 모두 어려움 이 많 습 니 다.
이 문 제 를 해결 하 는 방법 은 바로 사용
sourceMap
이다.소스 맵 이란 무엇 인가
쉽게 말 하면
sourceMap
은 위치 정보 가 저 장 된 파일 이다.자세히 말 하면 이 파일 에 저 장 된 것 은 변 환 된 코드 의 위치 와 해당 하 는 변환 전의 위치 입 니 다.
그것 이 있 으 면 오류 가 발생 했 을 때 정지점 도 구 를 통 해 변 환 된 코드 가 아 닌 원본 코드 를 직접 표시 할 수 있 습 니 다.
sourceMap 어떻게 생 겼 어 요?
webpack
등 도 구 를 통 해 우 리 는 sourceMap
을 사용 할 수 있 습 니 다. 여 기 는 배치 방법 을 자세히 말 하지 않 고 여 기 를 볼 수 있 습 니 다.sourceMap
은 원본 코드 와 같은 디 렉 터 리 에 있 는 map
파일 입 니 다.압축 코드 의 마지막 줄 에 다음 과 같은 인용 이 있 습 니 다.
//# sourceMappingURL=app.js.map
가리 키 는 것 은 바로 우리 의
map
파일 이다.sourceMap
의 형식 은 다음 과 같다.{
version : 3, //SourceMap , 3
sources: ["foo.js", "bar.js"], // , ,
names: ["src", "maps", "are", "fun"], //
mappings: "AACvB,gBAAgB,EAAE;AAClB;", //
file: "out.js", //
sourcesContent: " \t// The module cache
", //
sourceRoot : "" // 。 ,
}
다른 것 은 모두 설명 하기 쉽 습 니 다.
mappings
속성 을 자세히 말씀 드 리 겠 습 니 다.mappings
"AACvB,gBAAgB,EAAE;AAClB;"
을 예 로 들 면:AACvB
이 위치 전환 전의 소스 코드 위 치 를 대표 하여 VLQ
인 코딩 으로 표시 합 니 다.위치 대응 의 원리
위치 관계 의 보존 은 여러 절차 와 최 적 화 를 거 쳤 다. 이것 은 상세 하 게 말 하지 않 고 보고 싶 은 것 은 여 기 를 볼 수 있다. 우 리 는 마지막 결과 만 말 할 수 있다.
각 위치 에서:
예 를 들다
현재
a.js
가 있다 고 가정 하면 내용 은 feel the force
이 고 처리 후 b.js
이 며 내용 은 the force feel
이다.the
의 경우 수출 에서 의 위 치 는 (0, 0) 이 고 a.js
는 sources
의 첫 번 째 (여 기 는 예 일 뿐) 이 며 입력 중의 위 치 는 (0, 5) 이 며 the
는 names
의 두 번 째 (여 기 는 예 일 뿐) 이다.그러면 매 핑 관 계 는 0, 1, 0, 5, 2 입 니 다.
마지막 으로 01052 를 Base 64 VLQ 로 표시 하면 된다.
설명:
names
속성 중의 변수 가 없 으 면 5 위 VLQ
인 코딩 을 사용 하여 VLQ
인 코딩 이 가 변 적 이 고 길 기 때문에 한 사람 당 여러 글자 로 구성 할 수 있다 첫 번 째 기록 의 입력 위치 와 출력 위 치 는 절대적 인 것 이다. 앞으로 의 입력 위치 와 출력 위 치 는 모두 지난번 의 위치 에 비해 얼마나 움 직 였 는 지, 예 를 들 어
the
의 출력 위 치 는 (0, - 10) 이다. 왜냐하면 the
는 feel
의 왼쪽 에서 10 번 을 세 어야 이 위치 에 도착 할 수 있 기 때문이다.VLQ 인 코딩
VLQ
는 Variable-length quantity
의 줄 임 말로, 임의의 자리수 의 이 진 을 사용 하여 임의의 큰 숫자 를 표시 하 는 통용 되 는 인 코딩 방식 이다.이 인 코딩 은 최초 로 MIDI 파일 에 사용 되 었 으 나, 후에 여러 가지 형식 으로 사용 되 었 는데, 그 특징 은 매우 간단하게 큰 수 치 를 표시 하여 공간 을 절약 할 수 있다 는 것 이다.이 인 코딩 은 최고 비트 로 연속 성 을 표시 해 야 합 니 다. 1 이 라면 이 바이트 뒤의 바이트 도 같은 수 에 속 합 니 다.0 이면 이 수치 가 여기까지 라 는 뜻 이다.
이렇게 무뚝뚝 하 게 말 하 는 것 은 이해 하기 가 쉽 지 않 으 니 밤 을 들 어 설명 하 는 것 이 좋 겠 다.
어떻게 수치 137 을 VLQ 인 코딩 합 니까?
순서
결실
137 을 바 이 너 리 형식 으로 바꾸다
10001001
일곱 명 씩 조 를 나 누 어 부족 한 것 은 0 을 보충 합 니 다.
0000001 0001001
마지막 조 는 처음에 0 을 보충 하고 나머지 는 1 을 보충한다.
10000001 00001001
그래서 137 의 VLQ 인 코딩 형식 은
10000001 00001001
이다.Base64 VLQ
일반
VLQ
과 의 차이 점:Base64
는 6bit(2^6)
의 데이터 Base64 VLQ
음 수 를 표시 할 수 있어 야 하기 때문에 마지막 으로 기호 표지 의 위치 로 한다.[-15,15]
이 고 초과 하면 연속 표지 위 치 를 사용 해 야 한다.양음 을 나타 내 는 방식:
VLQ
인 코딩 의 첫 번 째 바이트 라면 그의 마지막 은 '기호' 를 대표 하고 0 은 플러스 이 며 1 은 마이너스 이다.우 리 는 다시 밤 을 들 어 사용법 을 설명 했다.
어떻게 수치 137 을
Base64 VLQ
인 코딩 합 니까?순서
결실
137 을 바 이 너 리 형식 으로 바꾸다
10001001
127 은 정수 이 고, 말 위 는 0 이다.
100010010
다섯 명 씩 조 를 나 누 어 부족 한 것 은 0 을 보충 하 다.
01000 10010
그룹 을 거꾸로 정렬 합 니 다.
10010 01000
마지막 조 는 처음에 0 을 보충 하고 나머지 는 1 을 보충한다.
110010 001000
회전 64 진법
y 와 I
그래서 137 통과
Base64 VLQ
는 yl
알 수 있 듯 이:Base64 VLQ
에서 인 코딩 순 서 는 낮은 위치 에서 높 은 위치 VLQ
에서 인 코딩 순 서 는 높 은 위치 에서 낮은 위치 참고 문장
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
js나 css 압축 후 디버깅이 어려울 것 같습니까?소스 맵을 아실 거예요.자기가 아웃된 것 같아서 어제 알았다source map. 예전에도 bootstrap.css.map,jquery.min.map 같은 서류를 본 적이 있지만 마음에 두지 않았어요. 어차피 노자는 쓸 수 없잖아요. 최근까...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.