2012-01-05 5 views
1

データ属性を使用して、意味的にマークアップできない設定を保存して、JSがこれらの要素に対して一定の動作をするようにします。これで、サーバーがレンダリングするページ(データ属性を忠実に記入するページ)では問題ありません。データ属性を使用してJavascriptの状態を保存してもかまいません。

しかし、JavaScriptがデータ属性を書き込んで、後で必要となるかもしれないデータを保存する例を見てきました。たとえば、いくつかのデータをサーバーにポストする。それが送信に失敗した場合、データ属性にデータを格納し、再試行ボタンを提供します。再試行ボタンをクリックすると、適切なデータ属性が検索され、再試行されます。

私には、このデータを掘り出すためにDOMを掘り下げなければならないので、これは汚いと高価だと感じていますが、私にとっては非常に簡単です。

私は2の代替に近づく見ることができます:

一つは、おそらくこれが可能ではないかもしれないが、データの元のビットのハンドルを保つために、匿名のJavascript機能のスコープを利用し、可能性のいずれかになりますあまりにも多くの "魔法"につながる。

2つは、これらのもののトラックを保持するオブジェクトが横たわってください。 DOMに特定のデータ属性の内容を要求するのではなく、オブジェクトを照会するだけです。

DOMは任意の状態ビットを格納するために使用されるべきではなく、その代わりに単一の目的を持つより単純なオブジェクトを使用する必要があると私は推測します。それに加えて、私は、DOMにアクセスすることは物事を追跡するために、より簡単で具体的なオブジェクトよりも高価だと仮定します。

他の人は、パフォーマンス、明快さ、実行の容易性についてどう思いますか?

+2

「データ」値の設定方法によって異なります。それがjQueryのようなライブラリを介している場合は、とにかくDOMに格納されません。それは図書館が管理する大きな地図です。つまり、単なるJavaScriptのデータ構造です。 – Pointy

+0

なぜlocalStorageおよび/またはwebStorageを使用しないのですか?それはよりきれいにすることができます。 –

+0

@Pointyもちろん、JavaScriptデータ構造はセレクタに依存するため、単純/高速連想配列には格納されません。 – Theozaurus

答えて

0

あなたの前提はとても良いです!許可されていても完全に有効ですが、DOMにデータを格納するのは良い方法ではありません。確かに、入力フィールドが1つしかない場合は問題ありませんが、アプリケーションが大きくなるとどこでもデータが混乱してしまいます。先に述べたように、DOMはSLOWです。 - >トリガーJS機能 - >アクセスデータ(JSオブジェクト、JSのAPI、またはAJAXのAPI) - >処理結果(

DOMイベント:

大きなアプリは、より本質的には、それはあなたの興味を分離することですAPI呼び出しまたはDOM変更)

JSデータにアクセスするためのAPIを作成することが大好きなので、追加、削除、取得、変更時に新しいイベントをトリガーすることもできます。

関連する問題