みんなありがとう。
正直なところ、私はそのような前向きな反応を期待していませんでした(ライブラリーをプロジェクトに導入し、あらゆる可能な方法で促進するために駆けつけた人もいました:)。 明確にするために、主なアイデアを説明します。
- これはミニコアです。 DOMツリーの要素を選択します。 それに基づいて(またはそれに加えて)、他のモジュールを開発できます。 ただし、具体的には、この機能がCSSセレクターを超えて拡張されることはほとんどありません。 アイデアは決して新しいものではありません。
- これは最速のミニコアです。 各ラインはテストされており、ほとんどの場合、極端なパフォーマンスがテストされます。 これが大規模プロジェクトの基礎になるように。 そうでなければ、他のすべては意味がありません。
- コードは開いています(MIT + GPL)。 どこでも使用できます(原作者に関係なく)。 改善に関するコメントを歓迎します。
本質的に少し
この投稿は何についてですか? 現在のバージョン(0.1.6)はCSS1セレクターでかなり安定しています。 主なバグを理解するために、いくつかのベータテストをお願いします(
現時点では、少なくとも1つの論争のあるケースがあります。DOMメソッドとメインライブラリが異なる数の要素を選択する場合 たとえば、一意でない要素が選択されている場合など)。
ライブラリ自体と速度チェック用に別のホストが作成されました。
yass.webo.inライブラリの大部分を含むテスト環境がそこに引き上げられました(貢献してくれた
luseverに感謝)
yass.webo.in/slickspeedもちろん、これはすべてCSS1です。 しかし、このために私は思った
変更点のリスト:
- 0.1.1:キャッシュから取得する前の操作の数を減らしました。 (
form
型の)より基本的なケースを追加しました - 0.1.2:グループの
replace
+ split
は通常のsplit
( tenshiに感謝)にsplit
され、配列サイズが修正されました(SlickSpeedを使用) - 0.1.3:内部変数(
_.nodes
、 _.sets
)の呼び出し回数を減らし、新しい「貪欲な」規則性を導入しました(現在はJS 1.5の制限、 GreLIに感謝)。 新しいパラメーターが追加されました:検索のルート(2番目)-まだどこでもではなく、基本的でないケース用です。 キャッシングを無効にすることは、3番目のパラメーターにシフトされます。 最も遅いバージョン(理由を理解するために:) - 0.1.4:if-then-else式は||に置き換えられます whileループ内の条件は、対応する要素の存在を確認することで置き換えられます。 マイナーなバグがOperaで修正されました(nodeNameにチェックが導入されました)。 フォーム「[]」のプロパティの呼び出しは「。」に置き換えられます。 ( artyに感謝)
- 0.1.5:
getElementsByClassName
を使用して実装。 document.all
置き換えられdocument.getElementById
(後者の方が高速ですが、違いはありません)。 - 0.1.6:
getElementsByClassName
、一般的な場合の前にのみ残されます。一般的な場合、タグによって常に選択され、クラスと識別子がチェックされます。 #id
の正規表現の前にチェックが実装されています(おそらく、正規表現の後に同じもののチェックを削除する価値があります-チェックする価値があります)。
生産性は(0.1と比較して)増加しました:Fx3(70%)、Opera 9.6(24%)、IE7(37%)、Safari(13%)。 主なパフォーマンスの変化:0.1-> 0.1.1、0.1.2-> 0.1.4、0.1.4-> 0.1.6
code.google経由でSVNに接続したらすぐに、リンクを投稿します。
小さなToDo
- CSS3に近づくためにパフォーマンスを損なうことなく、属性チェック(
[name=value]
形式のセレクター、 :first-child
およびさまざまなバリエーション)を実装します。 - サブツリーから選択を行い、テストします。
- キャッシュにガベージコレクションを追加します(理論上、
cache
はIEでうまく流れるはずです)。 - 返された要素の一意性を使って何かをするために(複数の同一の要素である選択が返されます)
すべてが
yass.webo.inに投稿されています
PS誰かがデザインについて考えているなら-ようこそ:)