Zepto 사용 중인 주의 점(회전)
얼마 전에 회사 한 제품 의 HTML 5 터치 스크린 버 전 을 완 성 했 고 개발 에 Zepto(http://zeptojs.com/)이 유명한 DOM 조작 창고.왜 jQuery 가 아니 죠?jQuery 의 목 표 는 모든 주류 브 라 우 저 를 호 환 하 는 것 이기 때문에 대량의 코드 가 모 바 일 브 라 우 저 에 쓸모 가 없 거나 비효 율 적 이라는 것 을 의미한다.Zepto 는 모 바 일 브 라 우 저 만 을 위 한 것 이기 때문에 부피 가 작고 효율 이 높 습 니 다.더 중요 한 것 은 API 가 jQuery 를 완전히 모방 하기 때문에 학습 비용 도 낮 습 니 다.
그러나 개발 과정 에서 저 는 Zepto 가 아직 성숙 하지 않 은 것 을 발 견 했 습 니 다.그 중에서 크 거나 작은'구덩이'가 포함 되 어 있 고 jQuery 와 의 차이 가 현저 합 니 다.그래서 글 을 써 서 기록 하고 후세 사람들 에 게 도움 이 되 기 를 바 랍 니 다.본 고 를 작성 할 때 Zepto 버 전 은 1.0 정식 버 전 입 니 다.
Zepto 어디서 다운 받 아 요?
이 문 제 는 보기에 매우 어 리 석 어 보이 는데,홈 페이지 에서 다운로드 하면 되 잖 아!그런데 다운로드 링크 에 작은 글자 가 있 는 걸 발 견 했 나 요?
There are more modules; a list of all modules is available in the README.
여기 있어 요. README(https://github.com/madrobby/zepto#readme)Zepto 소스 코드 에는 14 개의 모듈 이 있 고 홈 페이지 에서 제공 하 는 표준 판 에는 7 개의 모듈 만 있다 는 것 을 놀 라 게 발견 할 수 있 습 니 다!그리고 모 바 일 개발 에 매우 중요 한 touch 모듈 이 포함 되 어 있 지 않 습 니 다(터치 이벤트 에 대한 지원 제공)!그래서 제 제안 은 홈 페이지 에서 다운로드 하지 말고 Github 에서 소스 코드 를 다운로드 한 후에 스스로 버 전 을 빌 드 하 는 것 입 니 다.그러면 적당 한 모듈 을 선택 할 수 있 습 니 다.예 를 들 어 내 가 선택 한 모듈 은 이렇게 몇 개 이다.
.show('fast')
click 이벤트 말고 tap 로 대체
이 는 클릭 이벤트 가 200~300 ms 지연 되 어 있 기 때문에 더 빠 른 응답 을 위해 Zepto 가 제공 하 는 tap 이벤트 가 믿 기지 않 는 다 면 다음 코드 로 테스트 해 보 는 것 이 좋 습 니 다.
var t1,t2;
$('#id').tap(function () {
t1 = Date.now();
});
$('#id').click(function () {
t2 = Date.now();
alert(t2 - t1);
});
Zepto 의 CSS 선택 기 지원
정중하게 일 깨 워 주다. 등등 jQuery 에서 자주 사용 하 는 선택 기,Zepto 는 지원 하지 않 습 니 다!이 유 는 간단 합 니 다.jQuery 는 자신 이 작성 한 sizzle 엔진 을 통 해 CSS 선택 기 를 지원 합 니 다.Zepto 는 브 라 우 저 를 통 해 직접 제공 합 니 다.
:text :checkbox :first
인터페이스이 인 터 페 이 스 는 표준 CSS 선택 기만 지원 하 며,위 에서 언급 한 것 은 jQuery 선택 기 확장(http://api.jquery.com/category/selectors/jquery-selector-extensions/)그래서 이 홈 페이지 를 자세히 보고 선택 기 에 주의 하 세 요.물론 좋 은 소식 도 있 습 니 다.위 에서 언급 한 selector 모듈 입 니 다.이 모듈 이 있 으 면 지원 할 수 있 습 니 다. 부분 적 의 jQuery 선택 기 확장 은 다음 과 같 습 니 다.
원소 의 치수 계산
우선 Zepto 는.inner Height().outer Width()등 네 가지 방법 이 없 으 며,그 다음으로'height()/.width()방법 도 완선 되 지 않 습 니 다.
document.querySelectorAll
jQuery 에 서 는 이러한 요 소 를 대상 으로 css 스타일 을 먼저 설정 합 니 다display:none
높이 와 폭 을 계산 한 후에 회복 하 다. https://github.com/jquery/jquery/blob/master/src/css.js#L460 만약 이런 특수 한 상황 이 발생 한다 면 jQuery 를 참고 하여 유사 한 방법 을 쓸 수 있다.prop()방법의 함정
한 번 은 읽 기 전용 으로 텍스트 상 자 를 두 고 이 줄 을 썼 습 니 다.
position: "absolute", visibility: "hidden", display: "block"
결국 한사코 일 을 하지 않 고 한참 을 찾다 보 니 정확 한 표기 법 이 이러 하 다 는 것 을 알 게 되 었 다. $('#text').prop('readonly', true)
,만약 당신 이 뜻밖에도 둘 의 차 이 를 알 아 보지 못 한다 면,조용히 당신 에 게 알려 드 리 겠 습 니 다:대소 문자 에 주의 하 세 요!관련 문 서 를 뒤 져 보 니 속성 만 읽 는 정확 한 맞 춤 법 은 readOnly 였 으 나 jQuery 에 있 는 이전 코드 는 정상적으로 작 동 하기 때문에 jQuery 소스 코드 에서 찾 아 보 니 이런 부분 이 있 었 습 니 다. https://github.com/jquery/jquery/blob/master/src/attributes.js#L466
jQuery.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"
], function() {
jQuery.propFix[ this.toLowerCase() ] = this;
});
여기 서도 볼 수 있 듯 이 jQuery 의 성숙 도 는 정말 뛰 어 넘 기 어렵다.왜냐하면 그 는 우 리 를 모두 버릇 이 나 빠 졌 기 때문이다........................................................... pull request(https://github.com/madrobby/zepto/pull/756)이런 머리 없 는 용법 을 좋아한다 면 지 지 를 댓 글로 표현 할 수 있 습 니 다(영어 로 기억 하 세 요).
애니메이션 효과
fx 가 없 었 다 면mehods 모듈 의 경우.show()방법 은 애니메이션 을 지원 하지 않 지만 이 모듈 이 있 으 면 애니메이션 의 지원 에 작은 문제 가 있 습 니 다.예 를 들 어 이런 HTML 등 입 니 다.
style="background:black;opacity:0.7;display:none"> test
하면,만약,만약...
$('#text').prop('readOnly', true)
,그러면 애니메이션 이 완 성 된 후에 당신 이 본 것 은 반투명 요소 가 아니 라 전체 가 검 고 투명 하지 않 은 것 입 니 다.Zepto 의.show()애니메이션 은 매우 간단 하고 넓 은 변화 가 없 으 며 투명 도 를 0 에서 1 로 바 꾸 었 기 때문에 요소 에 원래 설 치 된 투명 도 는 대 체 됩 니 다.이 경우.show()대신.fadeIn()방법 으로 대체 할 수 있 습 니 다.결어
여기 서 당신 은 내 가"Zepto 는 아직 성숙 하지 않다"고 말 하 는 이 유 를 이미 알 고 있다 고 믿 습 니 다.현재 그것 은 사실"사용 할 수 있다"고 말 할 수 있 을 뿐 jQuery 가"사용 하기 좋다"고 말 하 는 지경 에 이 르 지 못 했 습 니 다.마지막 으로 전체 HTML 5 터치 스크린 버 전의 전단 개발 에 대해 저 는 한 편 이 있 습 니 다. Slide(https://speakerdeck.com/edokeh/xin-zhan-html5-hong-ping-ban-kai-fa-zong-jie)정 리 를 했 습 니 다.본 고 는 그 중에서 Zepto 부분 에 대한 상세 한 논술 일 뿐 관심 이 있 는 것 은 가 볼 수 있 습 니 다.
by:http://xh.cjbuluo.com
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.