大量のAjaxベースのWebアプリケーションを維持することはより困難ですか?


8

多分私はそれを間違っているのかもしれませんが、私の経験では、AjaxベースのWebアプリの開発と保守は、「より標準的な」Webアプリよりもはるかに困難です。

私はajaxを使用してデータをあちこちに読み込むアプリについて話しているのではありませんが、サーバーが送信するページのスタイルは単なるフレームであり、すべてのデータは読み込み時に入力されます。

これらの種類のアプリの開発経験のある方からの連絡をお待ちしています。私の個人的な経験では、構築と保守の両方にさらに時間がかかります。


より標準的なWebアプリをどのように定義しますか?
Chris

すべてにajaxを使用しないものですか?たとえば、37Signals Webアプリケーションは、あちこちに散らばっているという事実にもかかわらず、明らかに非Ajaxです
Erik

1
何より難しいですか?同じ結果を達成するためにハッキングされた非標準のテクノロジーを使用するものよりも?アプリをより複雑にする場合(ページ内インタラクティブ機能を追加するなど)、それを維持するためのコストの増加を期待することは合理的です。
Alex Feinman、2011年

具体的には、Ajaxが使用されるWebサイトの種類は、それを使用しないWebサイトの種類よりも難しい傾向があるかどうか、または同じ機能についてAjax Webサイトが非Ajax Webサイトよりも難しいかどうかを尋ねていますか?
David Thornley、2011年

回答:


6

JavaScriptを使用するアプリケーションの開発と保守の両方は、「クラシック」なWebアプリの開発よりも複雑で困難な作業であると私は考えます。

その理由は、異種のテクノロジスタックを使用するほど、作業が難しくなるという単純な事実にあります。

JavsScriptの場合、基本的に私たちが持っているのは、それ自体が奇妙なアイデアである自動サーバー出力に対するプログラミングです。動的Webアプリケーションのページは、プログラミング言語を使用してサーバー上で生成されます。サーバー側では、構文チェック、タイプチェック、あらゆる種類の自動分析、リファクタリングツールなど、あらゆる機能を自由に利用できます。

JavaScriptはフェンスの向こう側で機能し、サーバーで発生している大きなことに関する情報はありません。JavaScriptは、自動生成されたマークアップに対して機能します。マークアップは揮発性が高く、変更される可能性があります。これが、開発者が両方の同期を保つために注意を払わなければならない理由です。アプリが大きくなるほど、タスクは難しくなります。そして、そのタスクは通常、手動で行う作業であり、アプリとシームレスにスケーリングするのに十分自動化することはできません。

したがって、そうです、JavaScriptが豊富なアプリは、維持がより困難です。


6

私のajaxアプリ(すべてのイントラネットのアプリ)は、私にとってははるかにモジュール化されているように見えるため、メンテナンスが簡単であることが長期的にわかります。たとえば、他のコンテンツをコンテナにロードするページがある場合、同じコンテンツを簡単に再利用して他の場所にレンダリングできます。各部分のソースコードは、コントローラーのビューとメソッドの異なるファイルにあり、デバッグ/拡張を容易にします。これは、AJAXの使用方法とアプリの設定方法に本当に依存します。


1

難易度は、主に経験の問題です。AJAXベースのWebアプリケーションを頻繁に保守する経験がない場合は、そうです。

ただし、単一のリクエストを介して提供される従来のWebページのように、単一のレンダリングを使用するUIモデルよりも、再レンダリング機能を使用するUIモデルの方が複雑であるようです。これは、いくつかの理由で当てはまります。

  • レンダリングコードは、初期レンダリングを実行するサーバー側コードとクライアント側レンダリングを実行するJavaScriptコードに分かれています。これは、たとえば、サーバーだけでなくクライアントでもJavaScriptを使用することで簡単にできます。
  • 一般に、クライアントとサーバーの両方でコードの多くを複製する必要がある場合があります(検証など)。
  • サーバー側のコードを使用してデータを直接HTMLにレンダリングするのではなく、データをJSONにフォーマットするAJAXハンドラーが必要であり、さらにJSONをHTMLにフォーマットするためのコードが必要です。フレームワークはこれをより簡単にすることができます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.