AngularJS は本当に完璧ですか? angularjs に関するいくつかの問題の詳細な分析
- ブラウザは HTTP リクエストをサーバーに送信します
- サーバーはこのリクエストを処理して結果を取得しますデータを取得し、Jsp Template を取得し、このデータをテンプレートを通じてブラウザーが認識する HTML テキストに構築し、ブラウザーに送信します
- ブラウザーは HTML テキストを解析し、ページのコンテンツを表示します
- サーバーはこのリクエストを処理して結果データを取得し、結果データを Json 形式にカプセル化して送信します。ブラウザー
- ブラウザーは Json を解析し、ページ上にデータを表示します
- これら 2 つのプロセス、1 つはページ構築操作をサーバー上に置くことであり、もう 1 つはそれをブラウザ上に置くことです。これが最も明らかな違いであり、余分なインタラクションは言うまでもなく、検索エンジンの観点から見ると、ブラウザによって取得された静的コンテンツのみが表示され、JS コードは実行されません。 前者の検索エンジンでは記事が表示されますが、後者の検索エンジンでは中括弧が次々と表示されます。これは、Angular によってレンダリングされたページが Baidu の「ブラックリスト」に含まれる理由でもあります。では、どうすれば解決できるでしょうか?
- 引用: クローラーに Web サイトにアクセスさせる方法は 2 つあります。サーバー上でブラウザー インスタンスを実行し、JavaScript の実行後に DOM に基づいて HTML ページを生成できます。または、検索クローラー用に別の HTML 静的ページのセットを構築することもできます。
-
前者の解決策では、WebKit (および場合によっては Xvfb) をインストールし、ロード後にページを生成する必要があります (キャッシュを使用することもできますが、より複雑になります)。これにより、ページのロード時間が増加し、検索エンジンのランキングに影響します。 。
後者の解決策 (別のサーバーサイド Web サイトを作成する) は、単純な Web サイトであれば満足できますが、ページが非常に多様である場合は悪夢になります。また、バックアップ Web サイトがメイン Web サイトと完全に一致しない場合、Google は厳しく罰し、トラフィックは激減します。
ユーザーがリンクをクリックすると、クライアントの JS アプリケーションに読み込みアニメーションがすぐに表示されますが、データの読み込みには 5 秒かかると想像してください。アプリケーションは一見すると高速に見えますが、この 1 ページに機能を追加したいプログラマーが何人いるかについては議論しないでください。コンテンツを非同期で迅速に表示することをユーザーに要求するのは困難です。実際、ユーザーはページの下にあるものが後で読み込まれるかどうかを気にしません。
サーバーサイドアプリケーションでは、API 呼び出しが遅い場合、ページ全体の読み込みが遅くなります。サーバー側の遅さは全員に影響を及ぼすため、無視することはできません。しかし、クライアントの遅さは見落とされがちです。サーバーは制御可能であり、設定したマシン上で実行されるため、このマシンで何が起こっているかを明確に知ることができるため、サーバーの遅さを簡単に解決できます。さらに、ほとんどのサーバーは内部クラスター ネットワーク内にあるため、サーバー間の情報転送が非常に高速になり、アクションに複数の情報転送が必要な場合でも、瞬時に完了できます。しかし、これらの転送をクライアントに置くと、多くの要因により速度が低下します。
私たちはユーザーが使用するブラウザーを厳密に制御したり、ユーザーのマシンの構成を制御したりすることはできませんが、私たち自身のサーバーに関するすべてを制御することはできます。3. 一番大事なものが無味すぎる
無味? AngularJS には「メンテナンスが簡単」「コーディングが便利」など、さまざまな利点があると言う人もいるでしょう。しかし、これはパフォーマンスとユーザーエクスペリエンスを犠牲にすることに基づいています。そして、いわゆる「依存性注入」やその他のバックエンドのアイデアがフロントエンドに強制的に導入されます。これは高尚に思えますが、何が間違っているのでしょうか?バックエンドは構造、サービスに分かれており、よりシンプルな開発のためにさまざまなフレームワークが使用されます。Web フロントエンド自体は静的であり、ビジネスには関与しないと思います。彼にとって本当の助けは何もない。
これらの利便性から、それが役に立たないとは言えないかもしれませんが、どのようなシナリオでも、AngularJS を完全に置き換え、それよりも優れたソリューションを実行できるソリューションはほぼ存在します 。これ。 。 。これは恥ずかしいです!たとえば
freemaker
。Freemaker は誰にとっても馴染みのあるもので、ajax を介して http リクエストを実行する代わりに、Java が提供する freemakerApi 関数を直接呼び出してデータを非同期に取得できます。同様に、そのパフォーマンスも AngularJS を上回っています パフォーマンスと比較すると少しいじめかもしれませんが、テンプレート エンジン として、freemaker は確かにパフォーマンスの点で AngularJS を破る資格があります。
使いやすさの点では、freemaker は Java 関数を直接呼び出すだけでなく、http 経由でデータを取得することもできますが、取得したデータを HTML テキストに構築してからブラウザに渡して分析することが最も重要です。はい、依存関係の挿入やその他の関連機能もサポートしており、上記の点を組み合わせると、スケーラビリティ、保守性、全体的なパフォーマンス、ユーザー エクスペリエンスなどの点で AngularJS を圧倒します。 AngularJS ほど優れていない唯一の点は、開発段階です。 angular に比べて、freemaker の開発はより複雑です。つまり、angular の方が開発プロセスがはるかに単純で、多くのパフォーマンス要素が切り捨てられているからだとすると、これは非常に怖いと考える人もいます。パフォーマンスのメカニズムを追求して常に最適化を行っている人もいれば、よりシンプルな開発を目指して最適化を行っている人もいます。どちらが正しいか間違っているかは言えませんが、私は前者を好みます。
Freemaker はさておき、nodejs には置き換え可能なソリューションや MVC フレームワークが多数あるので、ここでは詳しく説明しません。
ブラウザにおける js の役割は、コンテンツのプレゼンテーションではなく、対話にあるべきだと思います。それは正しい解決策ではありません。
4. アプリケーションシナリオの問題
フロントエンドとバックエンドが分離されているシナリオでは AngularJS が良い選択のように見えますが、前述したように、フロントエンドとバックエンドが分離されている場合、AngularJS の考慮事項は狭すぎます。開発上の変更に加えて、分離しました。便利ではありますが、本来のパフォーマンスとエクスペリエンスが失われ、間違いなく失敗です。これらの理由と組み合わせると、AngularJS を使用できるシナリオは非常に少ないかもしれません。バックグラウンド (バックエンド管理コントロール パネル) と WEBApp いくつかのシナリオで使用できます。
ここで疑問が生じますが、管理コンソール ページを開発するときにパフォーマンスを過度に考慮する必要はなく、SEO 向けに最適化する必要もありません。ただし、このシナリオの中間点はコンテンツではなくインタラクションです。画面。 AngularJS はフロントエンドのテンプレート エンジンとしての地位を失いました。彼の役割は最小限で、それは恥ずかしかったです。
WebApp を開発する場合、パフォーマンスの点では、アプリ フレームワークはユーザーが使用するクライアントのバージョンを厳密に制御できるため、パフォーマンスを最適化することができます。 App フレームワークを選択することもできますが、App 開発フレームワークは自分で選択できるため、ほとんどすべての App フレームワークはパフォーマンスと使いやすさの両方の点で AngularJS を超えるソリューションを備えています。したがって、これは管理コンソール ページを開発するよりも悪いように思えます。
これらの点に基づいて、AngularJS の立場は非常に恥ずかしいと思います。
矛盾のない唯一のシナリオは、企業の内部アプリケーションを開発するシナリオである可能性があります。
これが、AngularJS が優れているように見える理由かもしれませんが、それを選択する企業はほとんどありません。パフォーマンスの追求は、すべてのプログラマー、特にバックエンド開発に携わるプログラマーにとって必要なことです。彼らは、一見便利な開発のために経験を放棄することはできません。本当に諦めたら、中学と高校の区別はどうなりますか?その建築家はどこの出身ですか?コードに関するコンサルテーションを数多く開始してください。
同様に、これは面接中に一部のフロントエンド エンジニアに当惑を引き起こしました:
Q: AngularJs の使用方法を知っていますか?
答え: はい!良い。 。しかし、あまり使われていません。 。でも本当にそうなんです。 。えーAngularJS の利点については話さないようにしましょう。少なくともほとんどのフロントエンド ワーカーは依然として AngularJS を熱狂的に尊敬しています。開発が容易になるからです。そこで問題は、なぜ多くの有名な Web サイトが Angular を使用しないのかということです。
いくつかのポイントから始めましょう:1. 最悪の SEO フレンドリー
この点は間違いなく非常に致命的であり、これが多くの若いスタートアップが試行しようとしない重要な理由です。検索エンジン クローラーとソーシャル プレビューのスクリーンショットは、JavaScript でレンダリングされたページを認識できず、既存のソリューションは複雑で非常に時間がかかります。
実際、通常、ページの読み込みは 5 つの部分で構成されます (Java を例にします):
ブラウザは HTTP リクエストをサーバーに送信します
サーバーはこのリクエストを処理して結果を取得しますデータを取得し、Jsp Template を取得し、このデータをテンプレートを通じてブラウザーが認識する HTML テキストに構築し、ブラウザーに送信します
ブラウザーは HTML テキストを解析し、ページのコンテンツを表示します
最後のステップは、ブラウザーが HTML テキストを取得するときです。つまり、このプロセスの最後に、必要なデータが表示されます。 Angular を使用するプロセスは次のとおりです: ブラウザーは HTTP リクエストをフロントエンド サーバーに送信します
サーバーはこのリクエストを処理して結果データを取得し、結果データを Json 形式にカプセル化して送信します。ブラウザー
ブラウザーは Json を解析し、ページ上にデータを表示します
- 前者の検索エンジンでは記事が表示されますが、後者の検索エンジンでは中括弧が次々と表示されます。これは、Angular によってレンダリングされたページが Baidu の「ブラックリスト」に含まれる理由でもあります。では、どうすれば解決できるでしょうか?
これら 2 つのプロセス、1 つはページ構築操作をサーバー上に置くことであり、もう 1 つはそれをブラウザ上に置くことです。これが最も明らかな違いであり、余分なインタラクションは言うまでもなく、検索エンジンの観点から見ると、ブラウザによって取得された静的コンテンツのみが表示され、JS コードは実行されません。
引用:
- クローラーに Web サイトにアクセスさせる方法は 2 つあります。サーバー上でブラウザー インスタンスを実行し、JavaScript の実行後に DOM に基づいて HTML ページを生成できます。または、検索クローラー用に別の HTML 静的ページのセットを構築することもできます。
前者の解決策では、WebKit (および場合によっては Xvfb) をインストールし、ロード後にページを生成する必要があります (キャッシュを使用することもできますが、より複雑になります)。これにより、ページのロード時間が増加し、検索エンジンのランキングに影響します。 。
後者の解決策 (別のサーバーサイド Web サイトを作成する) は、単純な Web サイトであれば満足できますが、ページが非常に多様である場合は悪夢になります。また、バックアップ Web サイトがメイン Web サイトと完全に一致しない場合、Google は厳しく罰し、トラフィックは激減します。2. 最悪のユーザーエクスペリエンス
AngularJS を使用した後、ページのレンダリング方法が複数のプロセスに分割されるため、ページにアクセスし、そのページに大量のコンテンツが含まれていると、明らかにブラウザーのレンダリングで次のように感じます。ロードするコンテンツが多すぎるため、このプロセスは非常に悪く、特にロード プロセスがクライアントに配置される場合、遅延が非常に大きくなります。
リッチ JavaScript アプリケーションでは、通常、ページの遷移は瞬時に行われ、その後、さまざまな要素がサーバーから読み込まれます。サーバー側アプリケーションでは、クライアントがすべてのデータをダウンロードするのを待たずに、ページはデータのレンダリングを開始します。
クライアント アプリケーションの方が優れているように聞こえますが、実際にはこれは幻想です。ユーザーがリンクをクリックすると、クライアントの JS アプリケーションに読み込みアニメーションがすぐに表示されますが、データの読み込みには 5 秒かかると想像してください。アプリケーションは一見すると高速に見えますが、
サーバーサイドアプリケーションでは、API 呼び出しが遅い場合、ページ全体の読み込みが遅くなります。サーバー側の遅さは全員に影響を及ぼすため、無視することはできません。しかし、クライアントの遅さは見落とされがちです。
この 1 ページに機能を追加したいプログラマーが何人いるかについては議論しないでください。コンテンツを非同期で迅速に表示するようにユーザーに要求するのは困難です。実際、ユーザーはページの下にあるものが後で読み込まれるかどうかを気にしません。サーバーは制御可能であり、設定したマシン上で実行されるため、このマシンで何が起こっているかを明確に知ることができるため、サーバーの遅さを簡単に解決できます。さらに、ほとんどのサーバーは内部クラスター ネットワーク内にあるため、サーバー間の情報転送が非常に高速になり、アクションに複数の情報転送が必要な場合でも、瞬時に完了できます。しかし、これらの転送をクライアントに置くと、多くの要因により速度が低下します。
私たちはユーザーが使用するブラウザーを厳密に制御したり、ユーザーのマシンの構成を制御したりすることはできませんが、私たち自身のサーバーに関するすべてを制御することはできます。 (さらに詳しく知りたい場合は、PHP 中国語 Web サイトAngularJS 開発マニュアル にアクセスして学習してください)3. 最も重要なことは無味すぎます
無味ですか? AngularJS には「メンテナンスが簡単」「コーディングが便利」など、さまざまな利点があると言う人もいるでしょう。しかし、これはパフォーマンスとユーザーエクスペリエンスを犠牲にすることに基づいています。そして、いわゆる「依存性注入」やその他のバックエンドのアイデアがフロントエンドに強制的に導入されます。これは高尚に思えますが、何が間違っているのでしょうか?バックエンドは構造、サービスに分かれており、よりシンプルな開発のためにさまざまなフレームワークが使用されます。Web フロントエンド自体は静的であり、ビジネスには関与しないと思います。彼にとって本当の助けは何もない。
これらの利便性から、それが役に立たないとは言えないかもしれませんが、どのようなシナリオでも、AngularJS を完全に置き換え、それよりも優れたソリューションを実行できるソリューションはほぼ存在します 。これ。 。 。これは恥ずかしいです!たとえば
freemaker
。Freemaker は誰にとっても馴染みのあるもので、ajax を介して http リクエストを実行する代わりに、Java が提供する freemakerApi 関数を直接呼び出してデータを非同期に取得できます。同様に、そのパフォーマンスも AngularJS を上回っています パフォーマンスと比較すると少しいじめかもしれませんが、テンプレート エンジン として、freemaker は確かにパフォーマンスの点で AngularJS を破る資格があります。
使いやすさの点では、freemaker は Java 関数を直接呼び出すだけでなく、http 経由でデータを取得することもできますが、取得したデータを HTML テキストに構築してからブラウザに渡して分析することが最も重要です。はい、依存関係の挿入やその他の関連機能もサポートしており、上記の点を組み合わせると、スケーラビリティ、保守性、全体的なパフォーマンス、ユーザー エクスペリエンスなどの点で AngularJS を圧倒します。 AngularJS ほど優れていない唯一の点は、開発段階です。 angular に比べて、freemaker の開発はより複雑です。つまり、angular の方が開発プロセスがはるかに単純で、多くのパフォーマンス要素が切り捨てられているからだとすると、これは非常に怖いと考える人もいます。パフォーマンスのメカニズムを追求して常に最適化を行っている人もいれば、よりシンプルな開発を目指して最適化を行っている人もいます。どちらが正しいか間違っているかは言えませんが、私は前者を好みます。
Freemaker はさておき、nodejs には置き換え可能なソリューションや MVC フレームワークが多数あるので、ここでは詳しく説明しません。
ブラウザにおける js の役割は、コンテンツのプレゼンテーションではなく、対話にあるべきだと思います。それは正しい解決策ではありません。
4. アプリケーションシナリオの問題
フロントエンドとバックエンドが分離されているシナリオでは AngularJS が良い選択のように見えますが、前述したように、フロントエンドとバックエンドが分離されている場合、AngularJS の考慮事項は狭すぎます。開発上の変更に加えて、分離しました。便利ではありますが、本来のパフォーマンスとエクスペリエンスが失われ、間違いなく失敗です。これらの理由と組み合わせると、AngularJS を使用できるシナリオは非常に少ないかもしれません。バックグラウンド (バックエンド管理コントロール パネル) と WEBApp いくつかのシナリオで使用できます。
ここで疑問が生じますが、管理コンソール ページを開発するときにパフォーマンスを過度に考慮する必要はなく、SEO 向けに最適化する必要もありません。ただし、このシナリオの中間点はコンテンツではなくインタラクションです。画面。フロントエンドのテンプレート エンジンとしての AngularJS はその位置付けを失いました。彼の役割は最小限で、それは恥ずかしかったです。
WebApp を開発する場合、パフォーマンスの点では、アプリ フレームワークはユーザーが使用するクライアントのバージョンを厳密に制御できるため、パフォーマンスを最適化することができます。 App フレームワークを選択することもできますが、App 開発フレームワークは自分で選択できるため、ほとんどすべての App フレームワークはパフォーマンスと使いやすさの両方の点で AngularJS を超えるソリューションを備えています。したがって、これは管理コンソール ページを開発するよりも悪いように思えます。
これらの点に基づいて、AngularJS の立場は非常に恥ずかしいと思います。
矛盾のない唯一のシナリオは、企業の内部アプリケーションを開発するシナリオである可能性があります。
これが、AngularJS が優れているように見える理由かもしれませんが、それを選択する企業はほとんどありません。パフォーマンスの追求は、すべてのプログラマー、特にバックエンド開発に携わるプログラマーにとって必要なことです。彼らは、一見便利な開発のために経験を放棄することはできません。本当に諦めたら、中学と高校の区別はどうなりますか?その建築家はどこの出身ですか?コードに関するコンサルテーションを数多く開始してください。
同様に、これもフロントエンド エンジニアの面接中に当惑を引き起こしました。
Q: AngularJs の使用方法を知っていますか?
答え: はい!良い。 。しかし、あまり使われていません。 。でも本当にそうなんです。 。えー
この記事はここで終わります (さらに詳しく知りたい場合は、PHP 中国語 Web サイトAngularJS ユーザー マニュアル にアクセスして学習してください)。ご質問がある場合は、以下にメッセージを残してください。
以上がAngularJS は本当に完璧ですか? angularjs に関するいくつかの問題の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

Angular.js は、動的アプリケーションを作成するための無料でアクセスできる JavaScript プラットフォームです。 HTML の構文をテンプレート言語として拡張することで、アプリケーションのさまざまな側面を迅速かつ明確に表現できます。 Angular.js は、コードの作成、更新、テストに役立つさまざまなツールを提供します。さらに、ルーティングやフォーム管理などの多くの機能も提供します。このガイドでは、Ubuntu24 に Angular をインストールする方法について説明します。まず、Node.js をインストールする必要があります。 Node.js は、ChromeV8 エンジンに基づく JavaScript 実行環境で、サーバー側で JavaScript コードを実行できます。ウブにいるために

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

Angular フレームワークのコンポーネントのデフォルトの表示動作は、ブロックレベルの要素ではありません。この設計の選択により、コンポーネント スタイルのカプセル化が促進され、開発者が各コンポーネントの表示方法を意識的に定義することが促進されます。 CSS プロパティの表示を明示的に設定することで、Angular コンポーネントの表示を完全に制御して、目的のレイアウトと応答性を実現できます。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用
