3

Webウィジェットを作成しています。したがって、基本的には、リモートサーバーからスクリプトをロードし、コンテナーdivにコンテンツを表示します。サーバーに追加のパラメーターを送信する必要があります。たとえば、一部のコンテンツをフィルター処理するか、表示を選択するため、2つのオプションがあります。

スクリプトタグでデータを渡します(コードで動的にスクリプトを生成しています)

<script src="http://localhost/wordpress/?ai1ec_requirejs_widget&ai1ec=action:posterboard|no_navigation:true|request_type:jsonp"></script>
<div id="timely"></div>

のデータ属性としてデータを渡します<div>

<script src="http://localhost/wordpress/?ai1ec_requirejs_widget&ai1ec=action:posterboard|no_navigation:true|request_type:jsonp"></script>
<div id="timely" data-action="view" data-no-navigation="true" data-request-type="jsonp" ></div>

今のところ、この理由で最初のアプローチを選択しました。リクエストスクリプトにデータを含める場合、DOMが<div>イベントをフィルタリングするための値を取得する準備ができるまで待つ必要はありません。私がロードしているスクリプトは、requirejsを非同期的にロードする小さなスクリプトです。ロードされたらすぐにjsを要求してデータをフェッチするためのajax呼び出しを行い(必要なすべての情報がすでにあるのでDOMの準備ができるのを待つ必要はありません)、データが到着すると、DOMの準備ができている場合は開始しますイベントハンドラーをアタッチします。それ以外の場合は、データをフェッチするための呼び出しを行う前に、DOMの準備が整うのを待つ必要があります

私の考えは、

<script src="http://localhost/wordpress/?ai1ec_requirejs_widget&ai1ec=action:posterboard|no_navigation:true|request_type:jsonp"></script>

最初のスクリプトとして、require.js asyncのダウンロードを開始し、すべてをはるかに高速に開始しますが、おそらく私は完全に間違っています。

どう思いますか?

4

1 に答える 1

0

あなたが言及した懸念に加えて:

スクリプト タグでデータを渡すことをお勧めします。そうすれば、ウィジェットを構成する単一のポイントが得られるからです。複数の構成ポイントがあると、競合したり、混乱の原因になったりする可能性があります。

また、(ビュー要素であるため) ではなく、すべてのフィルタリングを行うことがスクリプトの関心事であるように思われるdivため、その観点からすると、スクリプトにそのすべての情報を処理させることもより理にかなっています。このようにして、ネットワーク経由で送信するデータの量も最小限に抑えることができます。サーバー側でできるのに、なぜすべての情報をロードしてクライアント側でフィルタリングするのでしょうか?

編集

私はあなたのシナリオを誤解しました! 正直どちらでもいいと思います。ただし、に情報を追加することで、記述する Javascript の量を最小限に抑えることができdivます。この情報は、意味的に適切であるため、問題ないと思います。また、コードを読んでいる人により多くのコンテキストを提供します。

于 2012-09-20T19:54:30.857 に答える