最近、私は自由時間に新しい Chrome 拡張機能の開発に取り組み始めました。いくつかの機能を処理する方法を研究する中で、JS が DOM を処理する際に持つ機能をますます発見し始めました。ページ。
JS を使用している圧倒的な数の人がフレームワークを通じてのみ JS を使用していることを考えると、これは、人々が依存しているフレームワークの基礎となるテクノロジーについてもう少し詳しく学ぶための一連の短い記事として興味深いトピックとなるでしょう。実際に使っています。
誰もが経験したことがあります。DOM 内の特定の要素を見つける必要がありますが、querySelector と getElementsBy* だけでは十分ではありません。特定の語句を含むすべてのテキスト ノードを検索する必要がある場合や、特定の条件に一致する要素を検索し、他の要素をスキップしたい場合があります。 TreeWalker をご紹介します。これは、強力だが見落とされがちな DOM トラバーサル API です。
ツリーウォーカーとは何ですか?
TreeWalker は、DOM ノードを効率的に走査してフィルタリングできるようにする DOM インターフェイスです。これは、querySelector のようなメソッドに代わる、より強力で柔軟な代替手段と考えてください。 querySelector では CSS セレクターに一致する要素が提供されますが、TreeWalker では次のことが可能です。
- DOM ツリーを任意の方向 (前方、後方、上、下) に移動します
- カスタム条件に基づいてノードをフィルタリングします
- ツリーの特定の部分を完全にスキップします
- テキスト ノードに直接アクセスします (querySelector では実行できない機能)
ツリーウォーカーの作成
基本的な例から始めましょう:
const walker = document.createTreeWalker( document.body, // Root node to start traversal NodeFilter.SHOW_TEXT, // Only show text nodes { acceptNode: function(node) { // Only accept text nodes that aren't empty return node.textContent.trim().length > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; } } );
3 つのパラメータは次のとおりです:
- ルートノード — トラバースを開始する場所
- 表示するノードのタイプ (テキスト、要素、コメントなど)
- どのノードを受け入れるか拒否するかを決定するフィルター関数
現実世界の例
1. テキストの検索と置換
ここでは実際に使用するものを示します。HTML 構造を維持しながらテキストを検索および置換します。
function replaceText(root, search, replace) { const walker = document.createTreeWalker( root, NodeFilter.SHOW_TEXT, { acceptNode: function(node) { return node.textContent.includes(search) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; } } ); let node; while (node = walker.nextNode()) { node.textContent = node.textContent.replace(search, replace); } } // Usage replaceText(document.body, 'old text', 'new text');
これは innerHTML を使用するよりもはるかに効率的で、イベント リスナーやフォーム入力値を壊すことはありません。
2. カスタム DOM クエリ
複雑な条件に一致する要素を見つける必要がありますか? TreeWalker があなたをサポートします。もっと複雑なものを構築しましょう。すべての を見つける必要があるとします。特定のテキストを含む要素。ただし、それらが
以上がTreeWalker: DOM トラバーサルの実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界における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)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
