長い間
JavaScript の欠点についての
ページを書いてきました。開発において最も厄介なことは JavaScript コードです。そこで今日は Javascript の欠点についてお話します。
最初にいくつかの基本的な問題について話しましょう。
1: 互換性が低い
WWW には Netscape Navigator、Mosaic、HotJava などの多くのブラウザがありますが、各ブラウザは JavaScript をサポートする程度が異なり、JavaScript を完全にサポートしていないブラウザはブラウズする必要があります。ホームページ上でJavaScriptスクリプトを使用すると、効果に多少のズレが生じ、表示されない場合があります。
その結果、JavaScript 開発者は多くの場合、ブラウザーごとに異なるバージョンを開発する必要があります。実質的に作業量は増加しており、基本的にはすべて反復作業です。これは私たちが見たくないものです
2: メモリリークを引き起こす
JavaScript はメモリ管理言語です。これは、JavaScript にはパケット収集機能が組み込まれているため、参照パスで使用されなくなった変数を抽出し、これらの変数によって使用されるメモリを再割り当てできることを意味します。
これは基本的な動作原理としては問題ありませんが、モデル オブジェクトとビュー要素が相互に参照するときに循環参照が発生するため、この機能に頼ってメモリ使用量を最適化することはできません。原則として、オブジェクトがゼロの場合、要素もゼロですが、要素からオブジェクトへの後方参照がある場合、パケット コレクターはこれらのオブジェクトには触れません。
ここで、問題が発生します。ファイル オブジェクト モデルでは、ファイル ツリー内の DOM ノードは、他のオブジェクトによって参照されているかどうかに関係なく、ツリー内の他の要素によって参照される可能性があります。したがって、DOM ノードによって後方参照されるパケット コレクターでマークされたオブジェクトは、この方向では空である必要があります。そうでない場合、そのメモリは割り当てられた状態のままになります。実際、プログラマーはこれを無視することがよくあります。多くの大規模な Web ゲームでは、起動後にメモリが急速に増加するのはこのためです。
3: ストリーミング メディアはサポートされていません
。他のプレーヤーを埋め込む方法のみを使用できます。
JavaScript の本来の設計目標は「Web ページを動かす」ことです。これは達成されており、いくつかの画期的な進歩もありました。しかし、「移動」はただ「移動」するだけでは不十分です。 Javascript がリッチ アプリケーションに直面すると、やや無力になります。
さて、JavaScript の開発について議論したい場合は、JavaScript に限定されるのではなく、HTML (DHTML)、DOM、JavaScript、CSS を合わせて考慮する必要があります。ブラウザ アプリケーションの観点から考えてみましょう (「ブラウザ アプリケーション」という言葉を私が考え出したことをお詫びします)。