検索
ホームページウェブフロントエンドhtmlチュートリアルシングルページアプリケーションのエクスペリエンスに関する質問

---コンテンツの復元が開始---

##シングルページ アプリケーションとは何ですか? いわゆるシングルページ アプリケーションとは、システム全体でも 1 ページ (1 つの HTML) しかなく、すべてのビジネス機能が 1 つのページに統合されているものを指します。 -モジュール。 特定の方法でメインインターフェイスに接続します。

##なぜ単一ページのアプリケーションがあるのでしょうか? Ajax テクノロジーの出現の理由の 1 つは、Web ページにアクセスしたユーザーがページを更新せずにページ上のデータの変更を確認できるようにするためであることがわかっています。 ajax によってエクスペリエンスが向上すると言えます。

インターネットの発展に伴い、ブラウザーによって提供されるサービスはますます複雑になり、Web フロントエンドはもはや単純なページ、つまり ajax で部分的に更新できるガジェットではありません。数十のサブページを備えたアプリケーションは、市場のどこにでも見つかります。これらのサブページは多くの共有リソース (静的および動的) を共有しているため、それらのリソースを繰り返し読み込むことを避けたい場合は、それらのリソースを 1 つの HTML に入れるという明白な方法があります。

つまり、これは ajax テクノロジーをさらに昇華させたもので、ajax のリフレッシュフリーのメカニズムを極限まで高めたもので、デスクトップ プログラムに匹敵するスムーズなユーザー エクスペリエンスを生み出すことができます。

##シングルページ アプリケーションによって引き起こされる問題
HTML に 12 ~ 20 個のサブページ プログラムを配置する場合、カットアンドペーストでは解決できないことはわかっています。もともと無関係なプログラムをまとめた結果が、プログラミングの世界の質量エネルギー方程式です。 エラー = (その他のコード)^2

##シングルページ アプリケーションのエクスペリエンス
本題の操作エクスペリエンスを向上させる方法に戻ります。単一ページのアプリケーションをできるだけ多くするか?

次に、

1. ページの初期読み込み速度
2. ページデータの正確性 (特に異常なネットワーク条件下)
を含む、ユーザー エクスペリエンスに影響を与えるものを見てみましょう。
--
実際、最初の 2 つの点については多くの記事で詳しく説明されていますが、ここではできるだけ簡単に言及し、3 番目の点に焦点を当てます。

####初期ページ読み込み速度
- 静的リソースのオンデマンド読み込み (適切なモジュール化を前提として、webpack や systemjs などのモジュール バンドラー ツールを使用)
- 動的リソースのオンデマンド取得 (フロントが必要)エンドデータ層) 優れたアーキテクチャ)
- サーバー側レンダリング (ページ読み込みプロセス中に、フロントエンドがデータを「取得」してページを「生成」し、サーバー側で完了します。最初の画面が表示されるアプリケーションには適していません)複雑すぎます)

### #対話型応答
- 速度: バックエンド要求、フロントエンド キャッシュ、およびその後の同期によって返されるデータ。同じデータに対する繰り返しのリクエストを避けてください。
- 例外処理: 現在、モバイル オフィスが人気です。ネットワークの状態が良くないときに、ユーザーに十分な待ち時間を与えたり、UI にプロンプ​​トを表示したりする方法は、過小評価できません

####ページ データの正確さ
さらに話したいこと はい、私たちは実際に多くの問題に遭遇し、いくつかの解決策を試してきました。

これをうまくやりたいなら、次の言葉が必要だと個人的に思います: **「適切なキャッシュ管理」**、ここでのキャッシュはフロントエンド キャッシュ モデルを指します。

これらのいくつかの単語だけを見ないでください。それは非常に難しいです。なぜ?

#### まずメモリのソースについて話しましょう。次のタイプがあります:

- ブラウザキャッシュ (indexDB、localStorage など)
- http リクエスト
- webSocket プッシュ

異なるソースが同じデータに影響を与える適切な抽象化により、ビジネス層がデータ ソースの認識を保護できるようになります。この問題を解決するために広く使用されている既存のライブラリには、RxJ、CycleJS などが含まれます。MVI の概念も、すべてこの目的のために以前に提案されました。

#### 記憶の変化について話しましょう

言うまでもなく、ここで紹介する異常状態はほんの数種類です。

#####httpリクエストが失敗しました

ここで**「操作補償」**という言葉について言及する必要があります

操作補償とは何ですか?

論理的に言えば、インターフェースを操作してタスクを作成するとき、新しいタスクはすぐに表示されるべきではなく、サーバーが成功を確認するまで待ってからインターフェースに追加する必要があります。ただし、ネットワークが良好ではない可能性が非常に高く、ユーザーはこのステップで長時間待たなければなりません。ユーザー エクスペリエンスの観点からすると、これは良くないので、最初にインターフェイスを作成し、作成が成功したというメッセージが返された後に、いくつかの一意の識別子などをメモリ データに埋め戻すことができます。

単一ステップの操作の補正はそれほど難しくありません。たとえば、ユーザーが新しいタスクを追加しても、サーバーがすぐにサブタスクを作成しない場合、非常に面倒になります。このタスクの下にありますが、この時点ではサブタスクには親タスクの ID がありません。この手順を補う必要がある場合は、さらに面倒になります。いくつかの連続した操作を行った後に、前の操作が失敗していたことがわかり、その後の処理が非常に複雑になるということさえあります。

当社の製品でもこの問題が発生します。私たちのアプローチは、**「妥協」**、重要なデータについては 1 段階補正または 2 段階補正を行うことです。フロントエンドモデルの依存関係が複雑で上位モデルの書き込み操作が失敗した場合、または補正の手順が多すぎる場合は、事前にユーザーに通知され、UI上でユーザーのインタラクション入口がロックされます。後続の書き込み操作は避けてください。

ここで引き続き実行する場合も、操作の結果はクライアント上でローカルに記録され、その後、データがバックグラウンドで同期されます。 。


#####切断と再接続

ネットワークのジッター、ネットワークの切り替え、コンピューターの休止状態と再起動などにより、ユーザーが再びインターネットに接続するときに、アプリケーションはより複雑なネットワーク状況に直面する必要があります。再リンクに進みます。

現時点では、理想的な単一ページ アプリケーションは、再接続時に、以前のすべてのイベントの最終結果、つまり最新のステータスを同期して戻します。

私たちのアプリケーションは共同ビジネスです。同じ企業内のユーザーが同じモデルを共有し、webSocket を通じて同期して、モデルの即時性と正確性を確保します。したがって、これは私たちにとって大きな挑戦でもあります。私たちの解決策は、webSocket を再送信することです。

#####ホットアップデート

前述したように、ユーザーはアプリケーションを開いたまま長時間放置し、途中で更新しない可能性があります。通常の状況では、すべてのビジネス変更は延期される必要があり、インターフェイスによってフィードバックされるステータスは常に最新であり、現在の状況と一致しています。しかし、別の問題を考慮する必要があります。システムのアップグレードについてはどうでしょうか?

もちろん、通知をプッシュすることもできます: このシステムはアップグレードされました。更新をクリックしてください。しかし、もっと良くできるでしょうか?この目標を達成するには、ホット アップデートを使用して、コードの究極のモジュール化と変更管理を達成する必要があります。更新された各コード モジュールも、システム上の現在のコードにプッシュされ、適用されます。このメカニズムには、開発チームの高い基準が必要です。

#####最後に
「単一ページの製品の技術レベルをどのように判断するか?」という格言を聞いたことがあります。
数日間オンにしても、アプリケーションは正常に、正しく、スムーズに使用できます。

シングルページの申請書を作ったことのある学生ならこの意味が分かると思います。

##まとめ

たくさんお話しましたが、まとめさせていただきます。シングルページアプリケーションのエクスペリエンスを改善するためのいくつかの問題点と方法について述べてきましたが、実装されればユーザーは間違いなく非常に満足しますが、理想と現実のギャップを冷静に検討する必要があります。私たちがやっていることはソフトウェアエンジニアリングなので、美学を適切に放棄し、限られた人間のエネルギーを要所要所に投資する必要があります。

---リカバリコンテンツの終了---

以上がシングルページアプリケーションのエクスペリエンスに関する質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLコードをどのように検証できますか?HTMLコードをどのように検証できますか?Apr 24, 2025 am 12:04 AM

HTMLコードは、オンラインバリデーター、統合ツール、自動化されたプロセスを使用するとクリーンになります。 1)w3cmarkupvalidationserviceを使用して、HTMLコードをオンラインで確認します。 2)リアルタイム検証のためにVisualStudiocodeにhtmlhint拡張機能をインストールして構成します。 3)HTMLTIDYを使用して、建設プロセスでHTMLファイルを自動的に検証およびクリーニングします。

HTML対CSSおよびJavaScript:Webテクノロジーの比較HTML対CSSおよびJavaScript:Webテクノロジーの比較Apr 23, 2025 am 12:05 AM

HTML、CSS、およびJavaScriptは、最新のWebページを構築するためのコアテクノロジーです。1。HTMLはWebページ構造を定義します。2。CSSはWebページの外観に責任があります。

マークアップ言語としてのHTML:その機能と目的マークアップ言語としてのHTML:その機能と目的Apr 22, 2025 am 12:02 AM

HTMLの機能は、Webページの構造とコンテンツを定義することであり、その目的は、情報を表示するための標準化された方法を提供することです。 1)HTMLは、タイトルやパラグラフなどのタグや属性を使用して、Webページのさまざまな部分を整理しています。 2)コンテンツとパフォーマンスの分離をサポートし、メンテナンス効率を向上させます。 3)HTMLは拡張可能であり、カスタムタグがSEOを強化できるようにします。

HTML、CSS、およびJavaScriptの未来:Web開発動向HTML、CSS、およびJavaScriptの未来:Web開発動向Apr 19, 2025 am 12:02 AM

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

HTML:構造、CSS:スタイル、JavaScript:動作HTML:構造、CSS:スタイル、JavaScript:動作Apr 18, 2025 am 12:09 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTMLの未来:ウェブデザインの進化とトレンドHTMLの未来:ウェブデザインの進化とトレンドApr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML対CSS対JavaScript:比較概要HTML対CSS対JavaScript:比較概要Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター