JavaScript は非常に柔軟な言語であり、さまざまなスタイルのコードを自由に記述できます。開発プロセスでは、必然的に実行効率に違いが生じます。 、一般的で回避しやすい問題を整理します
JavaScript 自体の実行効率
Javascript のスコープチェーン、クロージャ、プロトタイプ継承、eval などの機能は、さまざまな魔法の機能を提供するだけでなく、不注意に使用するとさまざまな効率上の問題を引き起こします。
1. グローバルインポート
コーディング プロセスでは、多かれ少なかれいくつかのグローバル変数 (ウィンドウ、ドキュメント、カスタム グローバル変数など) を使用します。JavaScript スコープ チェーンを理解している人なら、ローカル スコープ内のグローバル変数にアクセスするにはスコープ全体が必要であることを知っています。チェーンは最上位スコープまで階層ごとにトラバースされ、ローカル変数へのアクセス効率がより高速かつ高くなるため、一部のグローバル オブジェクトがローカル スコープで頻繁に使用される場合、それらをローカル スコープにインポートできます。例:
//1. モジュールをパラメータとして渡します
(関数(ウィンドウ,$){
var xxx = window.xxx
$("#xxx1").xxx(); $("#xxx2").xxx(); })(ウィンドウ,jQuery);
//2. ローカル変数に一時的に保存します
function(){
var doc = ドキュメント; var グローバル = window.global
}
2. eval と eval に似た問題
JavaScript コードは、実行前に同様の「プリコンパイル」操作を実行します。まず、現在の実行環境でアクティブ オブジェクトを作成し、var で宣言された変数をアクティブ オブジェクトの属性として設定しますが、この時点では、変数の代入値はすべて未定義であり、function で定義された関数もアクティブ オブジェクトのプロパティとして追加され、その値は関数の定義とまったく同じになります。ただし、「eval」を使用すると、「eval」内のコード (実際には文字列) は事前にコンテキストを認識できず、事前に解析および最適化することができません。つまり、プリコンパイルされた操作を実行できません。したがって、パフォーマンスも大幅に低下します
実際、最近では eval を使用する人はほとんどいません。ここで説明したいのは、eval に似た 2 つのシナリオ (new Function{}、setTimeout、setInterver) です。
コードをコピーします
上記の種類のコードは実行効率が比較的低いため、匿名メソッドまたはメソッド参照を setTimeout メソッドに直接渡すことをお勧めします
3. クロージャ終了後、参照されなくなった変数を解放します
コードをコピーします
})()
上記のコードの変数 f の戻り値は、すぐに実行される関数で構成されるクロージャで返されるメソッド res です。この変数は、このクロージャ内のすべての変数 (a、b、c など) への参照を保持します。これら 2 つの変数は常にメモリ空間に存在し、特に dom 要素への参照は大量のメモリを消費しますが、res では変数の値のみを使用するため、クロージャが戻る前に Release できます。その他の変数
コードをコピー
var f = (function(){
var a = {名前:"var3"}; var b = ["var1","var2"]; var c = document.getElementByTagName("li"); //****その他の変数
//***一部の操作
// クロージャが
を返す前に、使用されなくなった変数を解放します。 b = c = null; var res = function(){
アラート(a.name); }
応答を返す
})()
Js が dom を操作する効率
1. リフローを削減します
リフローとは何ですか?
DOM 要素のプロパティ (色など) が変更されると、ブラウザは対応する要素を再描画するようにレンダリングに通知します。このプロセスは再描画と呼ばれます。
リフローを軽減する方法
まずドキュメントから要素を削除し、変更が完了したら要素を元の位置に戻します (要素とそのサブ要素に対して多数のリフロー操作が実行されると、方法 1 と 2 の効果が低下します)。より明白です)
複数のスタイル属性を変更する場合は、スタイル属性を複数回変更するのではなく、クラス クラスを定義します (特定の学生に推奨)
ページに多数の要素を追加する場合は documentFragment を使用します
例:
document.getElementById("親").appendChild(子);
}
コードが要素のステータス情報に複数回アクセスする必要がある場合、ステータスが変更されない場合は一時的に変数に格納できます。これにより、DOM への複数回のアクセスによって発生するメモリ オーバーヘッドを回避できます。 >
DOM 要素を検索するときは、ページ要素の広い領域を走査しないようにするか、正確なセレクターを使用するか、コンテキストを指定して検索範囲を狭めるようにしてください。jquery を例に挙げます。
コンテキストを指定します: $("#parent .class")、$(".class",$el) など
4. イベント委任を使用する
使用シナリオ: 多数のレコードを含むリスト。マウスがクリックされた後に特定の機能を実装するには、各レコードをクリック イベントにバインドする必要があります。このアプローチでは、リスニング イベントが各レコードにバインドされます。ページ イベント リスナーが多数存在するため、非効率的になります。
基本原則: DOM 仕様内のイベントがバブルアップすることは誰もが知っています。つまり、イベントのバブルアップを積極的に防止しないと、任意の要素のイベントが DOM ツリーの構造に従って段階的に最上位までバブルアップします。 。イベント オブジェクトには、イベント ソースを指すevent.target (IE の srcElement) も用意されているため、親要素でイベントをリッスンしても、イベントをトリガーした元の要素を見つけることができます。これが基本原理です。代表団。早速、例を示します
もちろん、イベント ソースを毎回判断する必要はなく、それを抽象化してツール クラスに任せることもできます。 jquery の delegate() メソッドはこの関数を実装します
構文は $(selector).delegate(childSelector,event,data,function) のようになります。例:
コードをコピーします
パラメータの説明 (w3school から引用)
パラメータの説明
childSelector が必要です。イベント ハンドラーがアタッチされる 1 つ以上の子要素を指定します。
イベントは必須です。要素に付加する 1 つ以上のイベントを指定します。スペースで区切られた複数のイベント値。有効なイベントである必要があります。
データはオプションです。関数に渡す追加データを指定します。
必要な機能。イベントの発生時に実行する関数を指定します。
ヒント: イベント委任のもう 1 つの利点は、イベント バインド後に動的に追加された要素でトリガーされたイベントも監視できるため、ページに動的に追加されるたびに要素にイベントをバインドする必要がないことです

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
