AJAX プログラムの開発過程で、多くの人がよくある間違いを犯すことがあります。間違いによっては、AJAX プログラムの機能やパフォーマンスが危険にさらされ、AJAX プログラムの利点がすべて失われる可能性があります。ここでは、AJAX プログラムを開発する際に注意すべき七つの大罪を著者が紹介します。
AJAX は優れたもので、開発者はより動的なアプリケーションをより迅速かつ効率的に構築できるようになります。しかし、それ自体にも欠点があります。
一見すると、少しの常識があればこうした落とし穴は防げるように思えるかもしれませんが、ある程度は防げます。しかし、ライバルの DHTML と比較すると、AJAX プログラムのアーキテクチャは完全に異なります。アプリケーション開発の取り組みにおいてどれだけの常識を持っていたとしても、先人の教訓から学ぶ必要があります。この記事では、これらのエラーを「七つの大罪」と呼びますが、これらはすべてのエラーを代表するものではありません。
AJAX 開発における 7 つの致命的な間違いについて学ぶ前に、それほど深刻ではない 7 つの間違いを見てみましょう。誰もがこうした間違いを犯します。 Google 検索を実行すると、これらのエラーがいかに一般的であるかがわかります。
七つの軽罪
1. 戻るボタンの悪用 - 多くの人がこの間違いを犯すため、戻るボタンは多くの Web エクスペリエンス プログラムで必須となっています。初心者の AJAX 開発者の多くは、さまざまな理由から AJAX プログラムに戻るボタンを追加しますが、戻るボタンがプログラムの機能に影響を与えることに気づきました。これは主に、JavaScript があまりユーザーフレンドリーなプログラミング言語ではないためです。第 2 に、開発者は AJAX の開発アイデアを再学習する必要があります。
AJAX を初めて使用する人にとって、「戻る」ボタンは良い解決策ではないという考えを受け入れるのは簡単ではありません。ページの更新ポイントにいるとき、または「元に戻す」機能を使用する必要があるときは、「戻るキー」を検討できます。ただし、コーディングする前によく考えてから行う必要があります。そうしないと、更新が繰り返し発生しやすくなります。
2. 操作の結果をユーザーに通知しない - AJAX の仕組みの 1 つは、通常の Web ユーザー インターフェイス ローダーを使用しないことです。したがって、ユーザーが何が起こっているのかを理解できるように、いくつかの視覚的な手がかりをデザインする必要があります。
3. 見落とされたリンク - これも標準的な AJAX の間違いです。外部ユーザーがカット アンド ペーストできる URL リンクを省略しています。誰もが URL をコピーして他の人に送ったことがあるでしょう。 AJAX を使用する場合、純粋な手動入力によってのみ他のリンクにリンクを提供できます。なぜ? AJAX アプリケーションでは、サーバーは Javascript で自動的に生成されるこのページを提供しないためです。ユーザーが興味を持つ可能性のある Web アプリのこの最も一般的な機能を見落とさないでください。サーバーから URL アドレスが提供されないため、時間をかけてユーザーに URL アドレスを提供してください。
4. ページ コントロールの代わりにコンテンツ コントロールを使用する - 動的なコンテンツ コントロールを探している場合、従来のクライアントとサーバーの対話方法における AJAX アプリケーションの画期的な進歩は、素晴らしい贈り物となるでしょう。ただし、これには独自の欠点もあります。ユーザーのインタラクション エクスペリエンスを調整するために、ページ上の正確な位置でコンテンツを書き換える制御はうまくできますが、ページが不完全になる可能性があります。
多くの場合、私たちはページの特定の部分の処理に集中しており、サーバーがページを更新しないことを忘れています。これにより、ページが乱雑になり、ユーザー エクスペリエンスが低下する可能性があります。ページを表示すると、古いページが表示される可能性があります。ページ全体に注目して、動的コンテンツを含むページが更新されていることを確認してください。
5. 疲れたスパイダー -- AJAX の利点は、再インストールせずにページに大量のテキストを提供できることですが、AJAX の欠点も、再インストールせずにページに大量のテキストを提供できることです。アプリが検索エンジンに優しいように設計されている場合、何が起こるかを想像できるはずです。ページ上で何が起こっても、必ず上部にしっかりしたテキストをたくさん入れて、クモたちに楽しんでもらいましょう。
6. 文字化け - AJAX は複数の文字セットをサポートできません。これは生死にかかわる制限ではありませんが、これを忘れると深刻な問題が発生する可能性があります。最も基本的な文字セットは UTF-8 です。 Javascript がどのような文字セットを送信するとしても、それを正しくエンコードし、コンテンツに基づいてサーバー側の文字セットを設定することを忘れないでください。
7. Javascript をサポートしていないユーザーにはプロンプトは表示されません。ブラウザによっては Javascript をサポートしていないため、これらのユーザーは何が起こっているかを理解できません。彼らにいくつかのヒントを与えてください。
上記は、見つけやすいエラーの一部です。本当の問題は簡単に見落とされます。
七つの大罪
1. メモリのオーバーフローを許可する - 開発作業に長年従事している人なら誰でも、循環参照が何であるかを知っており、循環参照がメモリ管理にもたらす害を理解しています。 AJAX で使用される Javascript はメモリ管理言語です。つまり、JavaScript にはパケット収集機能が組み込まれているため、参照パスで使用されなくなった変数を抽出し、これらの変数が使用するメモリを再割り当てできます。
開発に長年携わっている人なら誰でも、循環参照が何であるかを知っており、循環参照がメモリ管理にもたらす危険性を理解しています。 AJAX で使用される Javascript はメモリ管理言語です。つまり、JavaScript にはパケット収集機能が組み込まれているため、参照パスで使用されなくなった変数を抽出し、これらの変数が使用するメモリを再割り当てできます。
ここで問題が発生します。ファイル オブジェクト モデルでは、ファイル ツリー内の DOM ノードは、他のオブジェクトによって参照されているかどうかに関係なく、ツリー内に存在する他の要素によって参照される可能性があります。したがって、パケット コレクターで DOM ノードによって参照されるようにマークされたオブジェクトは、この方向ではゼロでなければなりません。そうしないと、そのメモリは割り当てられたままになります。
2. 「非同期」の意味を理解していない – 非同期という言葉に慣れていないユーザーは、不安を感じやすくなります。しかし、これらのユーザー向けに設計した Web アプリがデスクトップ アプリであれば、彼らは動揺しないでしょう。これは設計上の重要なポイントです。ほとんどの Web アプリは、デスクトップの Web アプリと非常によく似て機能します。しかし、Web アプリケーションでは、ユーザーはこの幻想的な品質がまったく異なるものになることを期待しています。
Web ブラウザを扱うとき、ユーザーはデスクトップ アプリケーションを扱うときとはまったく異なる偏見や期待を持っています。そのため、ページとサーバー間で頻繁に応答するのは効率的で良いのですが、ページ自体が同時に更新されると、ユーザーはめまいを感じてしまいます。したがって、2 つのルールに従い、ユーザーの視覚範囲内に入るすべての変更を考慮する必要があります。ユーザーにとって更新が緊急でない場合は、アップグレードを穏やかに行い、ユーザーにとって緊急ではない場合は転送しません。アプリケーションの相互作用は非常に重要であるため、更新は明確かつ明白である必要があります。
3. サーバーをブラインドにする - クライアントとサーバー間の通信の減少は大きな問題ですが、以前はそうではありませんでした。以前は、サーバー側アプリケーションはすべてを認識しており、すべてを見ることができました。すべての例外、すべてのリロード、すべてのイベントを確認してログに記録できました。もちろん、サーバーはクライアントで何が起こっているかも知っていました。画面上のものが記録されます。
AJAX アプリケーションではこれは当てはまりません。イベントが発生しても、これらのイベントはサーバーから独立しています。つまり、クライアントに問題が発生しても、サーバーはすぐには認識しません。クライアント側のイベントと例外を検出して、サーバーが介入が必要な問題を追跡できる場所に記録します。
4. GET を使用して遅延させます。GET の機能はデータを取得することです。POST の機能は GET をセットアップすることです。 GET を不適切に使用しないでください。また、無害だと思われる場合も試行しないでください。 GET アクションは状態を変更し、状態を変更するリンクはユーザーを混乱させる可能性があります。ほとんどの場合、リンクは機能ではなくナビゲーションのためであると考えられています。
5. データ型の監視なし - Javascript は .NET Framework の一部ではありません。これは少し悲しいことですが、私たちが遭遇する可能性のある問題、つまり Javascript が実行されているプラットフォーム上のデータ型を確実に理解する必要があること、および .NET などの場合はその逆であることを確認する必要があることを示しています。複数の変換が行われる場合があるため、1 つずつ実行する必要があります。たとえば、Ajax.NET Pro ライブラリは、.NET と Javascript のオブジェクト表記を変換するコンバータを提供します。
6. 一部のプログラムは閉じることができません。終了時間がない場合、ページを更新せずにコンテンツを動的に生成すると、非常に問題が生じます。 Web ページは何ページありますか。議会のハンサードよりも長い Web ページを何ページ見たことがありますか? Web ページが無制限に拡張されると、ユーザーにとっては間違いなく悪夢となるでしょう。停止しないアプリケーションについてユーザーがどう思うか考えてみましょう。 Web アプリを動的にしますが、可能な範囲内で行います。
7. Javascript と DOM を互いに独立させます。AJAX は「Model-View-Controller」(Model-View-Controller) 構造に基づいていることを思い出してください。これを真剣に受け止めてください。 Javascriptはモデル層に属し、DOMはビジュアル層に属し、コントローラーはそれらを繋ぐ結婚コンサルタントです。コンテンツ自体が Javascript を使用するユーザーにとってのみ意味がある場合を除き、Web ファイルが Javascript から独立していることを確認してください (つまり、JavaScript をサポートしていないユーザーにとってより便利です)。この場合、JavaScript を使用してコンテンツを作成します