Zepto使用中の注意点(回転)
4014 ワード
この間、会社の製品のHTML 5タッチスクリーン版が完成し、開発ではZeptoという有名な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では、Zeptoソースコードには14のモジュールがあり、公式サイトで提供されている標準版には7つのモジュールしかありません.しかもモバイル開発に重要なtouchモジュール(タッチイベントのサポートを提供)が含まれていないなんて!だから私の提案は、公式サイトからダウンロードするのではなく、Githubからソースコードをダウンロードした後、自分でBuildのバージョンをダウンロードすることで、自分で適切なモジュールを選ぶことができます.例えば、私が選んだモジュールはいくつかあります. polyfill,zepto,detect,event,ajax,form,fxの7つが標準版に含まれるモジュール である. fx_methodsはこのモジュールを持ってから、show() .hide()などいくつかの方法でアニメーションをサポートできます.例えば、 です. data提供対.data()メソッドの完全なサポート、jQueryのようにメモリオブジェクトで を格納 assets img要素を除去した後、メモリ をクリーンアップするための特殊な処理を行います. selectorのより多くのセレクタのサポートは、 に後述します. touchタッチイベントのサポート、例えばtapイベント もしあなたがNodeに対してどのようにBuildを知らないならば、私のバージョンをダウンロードすることができます
clickイベントではなくtapで代用
この推定は広く知られているが,clickイベントには200~300 msの遅延があるため,より迅速な応答のためにZeptoが提供するtapイベントが信用できない場合は,以下のコードでテストすることが望ましい.
ZeptoによるCSSセレクタのサポート
丁寧に注意して、
もちろん良いニュースもありますが、上記のselectorモジュールですが、このモジュールがあれば、部分的なjQueryセレクタ拡張をサポートできるのは、以下のように列挙されています. :visible :hidden :selected :checked :parent :first :last :eq :contains :has
要素の寸法計算
まずZeptoはいません.innerHeight() .次の4つの方法がありますheight()/.width()の方法も完備していないが、
.prop()メソッドのトラップ
ある时、私は1つのテキストボックスを読み取り専用にして、このような行
ここからも分かるように、jQueryの成熟度は本当に超えられない.彼は私たちを甘やかしているからだ......このコードが簡単だと考えて、私は厚かましくパクリしてZeptoにpull requestを提出した.もしあなたたちがこのような無脳な使い方が好きなら、コメントして支持を表すことができる(英語を覚えている)
2013-11-25このPRはすでにMergeによって
.show()のアニメーション効果
fx_がなければmehodsモジュールなら、.show()メソッドはアニメーションをサポートしていませんが、このモジュールがあれば、アニメーションのサポートには小さな問題があります.例えば、このようなHTML
しかし、開発の過程で、私はZeptoがまだ成熟していないことを発見して、その中にいくつかあるいは大きいあるいは小さい“穴”が含まれて、jQueryとの差はやはり明らかで、だから文章の記録の下で書いて、後者に注意することを望んで、本文が書く時Zeptoバージョンは1.0正式版です
どこからZeptoをダウンロードします
この問題はバカに見えますが、公式サイトからダウンロードすればいいのではないでしょうか.しかし、ダウンロードリンクに行の小さな字があることに気づきましたか?
There are more modules; a list of all modules is available in the README.
このREADMEでは、Zeptoソースコードには14のモジュールがあり、公式サイトで提供されている標準版には7つのモジュールしかありません.しかもモバイル開発に重要なtouchモジュール(タッチイベントのサポートを提供)が含まれていないなんて!だから私の提案は、公式サイトからダウンロードするのではなく、Githubからソースコードをダウンロードした後、自分でBuildのバージョンをダウンロードすることで、自分で適切なモジュールを選ぶことができます.例えば、私が選んだモジュールはいくつかあります.
.show('fast')
clickイベントではなくtapで代用
この推定は広く知られているが,clickイベントには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セレクタのサポート
丁寧に注意して、
:text :checkbox :first
などjQueryでよく使われるセレクタは、Zeptoではサポートされていません!理由は簡単で、jQueryは自分で作成したsizzleエンジンを通じてCSSセレクタをサポートし、Zeptoはブラウザを通じて直接提供されるdocument.querySelectorAll
インタフェースである.このインタフェースは標準的なCSSセレクタのみをサポートしていますが、上記のものはjQueryセレクタ拡張に属していますので、このページをよく見て、これらのセレクタに注意してください.もちろん良いニュースもありますが、上記のselectorモジュールですが、このモジュールがあれば、部分的なjQueryセレクタ拡張をサポートできるのは、以下のように列挙されています.
要素の寸法計算
まずZeptoはいません.innerHeight() .次の4つの方法がありますheight()/.width()の方法も完備していないが、
display:none
の要素については、計算されたアスペクトが0であり、これはjQueryでは問題ない.jQueryはこのような要素に対して、まずcssスタイルをposition: "absolute", visibility: "hidden", display: "block"
に設定し、アスペクトを計算してから回復するからである.https://github.com/jquery/jquery/blob/master/src/css.js#L460このような特殊な状況に遭遇した場合、jQueryを参照して同様の方法を書くことができます..prop()メソッドのトラップ
ある时、私は1つのテキストボックスを読み取り専用にして、このような行
$('#text').prop('readonly', true)
を书いて、结局死んで仕事をしないで半日探してやっと発见して、正しい书き方はこのように$('#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の成熟度は本当に超えられない.彼は私たちを甘やかしているからだ......このコードが簡単だと考えて、私は厚かましくパクリしてZeptoにpull requestを提出した.もしあなたたちがこのような無脳な使い方が好きなら、コメントして支持を表すことができる(英語を覚えている)
2013-11-25このPRはすでにMergeによって
.show()のアニメーション効果
fx_がなければmehodsモジュールなら、.show()メソッドはアニメーションをサポートしていませんが、このモジュールがあれば、アニメーションのサポートには小さな問題があります.例えば、このようなHTML
<div style="background:black;opacity:0.7;display:none">
test</div>
$('div').show('fast')
を呼び出すと、アニメーションが完了すると半透明の要素ではなく、Zeptoのために真っ黒で不透明になります.show()アニメーションは簡単に実現され、アスペクトの変化はなく、透明度を0から1に徐々に変化させるため、要素に設定されていた透明度が置き換えられます.この場合、用いることができる.代わりにfadeIn()法を用いる.show()