ホームページ >ウェブフロントエンド >jsチュートリアル >Yui 3:より軽く、より速く、使いやすい
Yui 3コードの例を見るときに最初に気付くのは、使用する新しいグローバルオブジェクト名です。古いYahooグローバルオブジェクトは、新しいYui Globalオブジェクトに置き換えられました。いくつかの理由で名前が変更されました。ユーザーのフィードバックは、一部の企業がコードにYahooの名前を持っていることを嫌っていることを示唆しました。しかし、さらに重要なことは、Yuiの古いバージョンが異なる変数名を持っているため、Yui 3と共存できるようにすることです。
および改名されるグローバルオブジェクトと同様に、その使用法は2.xとは根本的に異なる原理に基づいています。まず第一に、それはもはや静的オブジェクトではなく、実行するとそれ自体のインスタンスを返す関数です。これで、Yuiのすべての実行は、ページ上の他のインスタンスのYuiのインスタンスを妨害することなく、ライブラリのバージョンとすべてのロードされたコンポーネントのバージョンが実行できる自己完結型環境を返します。さらに、これは、YUIオブジェクトの異なるバージョンをインスタンス化することにより、ライブラリの複数のバージョンが同じページに共存できることも意味します。以下の例は、この原則を示しています:
<br> YUI().use('dd-drop', 'anim', function(Y) { <br> // Y.DD is available <br> // Y.Anim is available <br> }ここで、Yui()が実行されます。これは、使用方法が実行されるライブラリのインスタンスを返します。最低2つのパラメーターが必要です。ライブラリコンポーネント、次に、すべてが実行されたら実行するコールバックです。上記の例では、使用するために渡された最初の2つのパラメーターは、ロードされるライブラリコンポーネントの名前です。最終的なパラメーターは、オブジェクト(例でyという名前のy)を受信するコールバック関数です。これは、すべてのロードされたコンポーネントを含むライブラリのインスタンスです。したがって、上記の例のコメントと同様に、ドラッグアンドドロップコンポーネントはY.DDで見つけることができ、アニメーションコンポーネントはY.Animにあります。
よりクリーンで、より簡潔なコーディングスタイル
別の問題Yui 3の克服は、スクリプトがその中に含まれる1つまたは2つの関数のみでライブラリの重い部分をロードする必要がある場合です。たとえば、YUI 2では、XMLHTTPREQUEST呼び出しを行うために、接続ユーティリティ全体(重量38kb、12kb)を含める必要があります。 Yui 3は、機能をより小さなサブモジュールに分割することにより、この問題を解決します。そうすれば、XMLHTTPREQUESTコールを作成するためだけにユーティリティ全体を引き下げる必要はありません。 YUI 3では、IOユーティリティのIOベースモジュールを引き下げて、わずか19kb(4KBの削除)を計量するだけでXMLHTTPREQUESTコールを行うことができます。実際、IOユーティリティ全体の重量は29kb(7kbの縮小)であり、その前身よりもはるかに機能が豊富です。たとえば、IO-XDRサブモジュールでクロスドメインまたはXdomainRequestの呼び出しを行うことができるようになりました。
選択とチェーン
var dd = new y.dd.drag({
ノード: '.author'
});
Yui 3に戻る論理値がないときはいつでも、メソッドをチェーン可能にしようとします。以下は、そのような例です:
ここで、クラス名の著者で最初の要素を参照し、それにカーソルスタイルを設定しました。
<br> YUI().use('dd-drop', 'anim', function(Y) { <br> // Y.DD is available <br> // Y.Anim is available <br> }ノードとイベントfaã§ades
Yui 3は、ノードユーティリティを使用してDOMの新しい抽象化レイヤーを導入します。 YUI 3は、DOM要素への参照を返すのではなく、ノードとノデリストを返し、DOMの相互作用を大幅に簡素化します。これは、個別の関数に移動する必要があるのではなく、ノードがそれらと対話するために必要なすべての機能が含まれるためです。さらに、ノードによって公開される方法は、必要なときにいつでもブラウザの正規化に対処し、それらと協力する経験はできるだけ痛みがありません。 Yui 2に要素にクラス名を追加するために書かなければならないものは次のとおりです。
になります
Y.get('.author').setStyle('cursor', 'move');実際には、ノードがすでに手元にある場合は、NavProductsという名前の変数で、これを行うことができるだけです。
<br> YUI().use('dd-drop', 'anim', function(Y) { <br> // Y.DD is available <br> // Y.Anim is available <br> }
Yui 3は、DOMとの相互作用を簡素化し、イベントファーデのアイデアを使用してイベント管理も正規化しました。すべてのイベントリスナーは、すべてのブラウザの正規化を処理するイベントFa§adeを受け取ります。したがって、たとえば、Yui 2では、「デフォルトを防ぐ」ために次のコードが必要でした。
Y.get('.author').setStyle('cursor', 'move');今、あなたがする必要があるのは:
だけです
YAHOO.util.Dom.addClass("navProducts", "selected");さらに、この動作は純粋にカスタムイベントにも拡張されているため、これらでもデフォルトを防ぎ、伝播を停止できるイベントfa§adesを受け取ります。
次:これらの新しい方法のいくつかを実践しましょう。
お金を見せて!
次に、ページの内容を表示するためのシンプルなアニメーションを作成します。これを行うために、新しいアニメーションオブジェクトをインスタンス化します。 IDメインを使用して要素への参照を渡し、現在の場所から最上位値を0にアニメーション化するように指示します(現在、例のページのマークアップで指定されているように-1000pxです)。また、アニメーションには3秒かかり、Elasticout Easing Methodを使用する必要があることも指定します。オブジェクトがインスタンス化されると、実行方法を使用して実行するという単純なケースです。
次に、ユーザーがページのベースフォントサイズを調整できるようにスライダーオブジェクトを設定します。 YuiのフォントCSS(例のページに含まれる)は、ページのベースフォントサイズを13ピクセルに設定します。これは、他のすべてのフォントサイズが計算されるボディ要素にフォントサイズの値を設定することで行います。これは、ページ全体のフォントサイズを変更するために操作しようとしているものです。
Y.get("#navProducts").addClass("selected");ボディ要素のノード参照をつかみます。これは、スライダーと組み合わせて後で使用されます。次に、スライダーウィジェットを作成します。最小値を13に、最大値を28に設定します。これは、フォントサイズをこれらの値内にとどめる必要があるためです。次に、スライダーのレールサイズが幅100ピクセルであることを確認します。最後に、スライダーの親指の画像を設定します(Yahooのホストサーバーから直接ロードされます):
<br> YUI().use('dd-drop', 'anim', function(Y) { <br> // Y.DD is available <br> // Y.Anim is available <br> }
スライダーがインスタンス化されると、それをレンダリングするのは簡単な問題です。これを行い、スライダーのレンダリングメソッドをレンダリングしたい要素のクラス名を呼び出します。スライダーウィジェットは、そのクラス名に一致するDOMの最初の要素でレンダリングされます。
Y.get('.author').setStyle('cursor', 'move');今やるべき唯一のタスクは、ページのフォントサイズを実際に調整するようにスライダーを配線することです。これは、アフターイベントに接続することで行います。 Yui 3には、以前のバージョンよりもこのようなイベントの処理を簡単に行うために、フックに接続して以降に標準を備えています。さて、ValueChangeイベントが解雇されるたびに、ボディエレメントのフォントスタイル値が変更されます。
ナビゲーションメニューも設定しました。ページのコンテンツの準備ができたら、MenunavノードプラグインをNAVノードに接続します。次に、見つけたマークアップに基づいてナビゲーションメニューを自動的にセットアップします。コードは次のとおりです
YAHOO.util.Dom.addClass("navProducts", "selected");
最後に、新しいドラッグアンドドロップオブジェクトをインスタンス化して、写真のクラス名への参照を渡すだけで、あなたの写真を本当にドラッグ可能にします。 オブジェクトが作成されるとすぐに、画像はドラッグ可能です。追加のタッチとして、マウスカーソルが画像の上に浮かぶときに変更して、画像がドラッグ可能であることが明らかになります。
Y.get("#navProducts").addClass("selected");要約
あなたが見ることができるように、Yui 3はその前身とはまったく異なる動物です。新しい構文に加えて、より速く、軽量で、より簡単で、より柔軟なライブラリを獲得します。最も野心的なWebプロジェクトを採用する準備ができています。 これが入門書であるのを見て、Yui 3で可能なことの表面をかろうじて傷つけました。詳細については、Yui 3.xプレビューリリース2ページ、Yui 3に関するSatyen Desaiのプレゼンテーション、Yui 3フォーラムをご覧ください。
navProducts.addClass("selected");Yui 3
Yui 3の新しいイベントシステムは、イベントターゲットとイベントハンドラーの概念に基づいています。イベントターゲットは、イベントを放出できるオブジェクトであり、イベントハンドラーはそれらのイベントに応答する関数です。 EventTargetクラスを拡張してイベントターゲットを作成し、on()メソッドを使用してイベントハンドラーをイベントターゲットに添付できます。このシステムは、イベントの処理方法に高度な柔軟性を可能にします。これにより、読み取り専用か書き込みのみであるか、デフォルト値があるかどうか、値が変更されたときに変更イベントをトリガーするかどうかなど、特定の特性セットで属性を定義できます。このシステムにより、明確に定義されたインターフェイスを備えたオブジェクトを簡単に作成できます。
YUI 3のウィジェットユーティリティを使用して再利用可能なUIコンポーネントを作成するにはどうすればよいですか?ウィジェットは、本質的に特定の機能をカプセル化する視覚コンポーネントです。ウィジェットクラスを拡張し、ウィジェットの動作と外観を定義するメソッドとプロパティを実装することにより、ウィジェットを作成できます。このメソッドは、ロードするモジュールの名前を引数として、およびモジュールがロードされたら実行するコールバック関数を取得します。コールバック関数は、ロードされたモジュールへのアクセスを提供する引数としてYUIインスタンスを受信します。このメソッドは、指定されたメッセージでエラーをスローし、オプションでエラーを記録し、現在のコードブロックの実行を停止します。トライ/キャッチブロックを使用して、Y.Error()によってスローされたエラーをキャッチして処理できます。
以上がYui 3:より軽く、より速く、使いやすいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。