HTML をその人の視点から見ると、理解は大きく異なります_html/css_WEB-ITnose
TA は、HTML インタープリタです。
WebKit カーネルの HTML インタープリタの観点から HTML を見てみましょう。 HTML ドキュメントがバイト ストリームから DOM ツリーにどのように段階的に移行するかを理解します。このプロセスを理解することで、フロントエンド開発で中途半端に理解されている多くの問題がよく理解できるようになります。
解釈プロセスの概要
まず、HTML インタープリターはバイト ストリーム (Bytes) を受け取り、それが文字ストリーム (Characters) にデコードされ、次に単語 (Token) に切り出されます。字句アナライザー ) を介してノード (Node) に組み込まれ、最後にこれらのノードが DOM ツリー (ドキュメント オブジェクト モデル ツリー) に組み込まれます。
ほぼすべての言語には同様の「コンパイル」プロセスがあります。各プロセスの特定のコードの詳細を気にする必要はありませんが、各プロセスで何が起こるかを理解する必要があります。
バイトストリーム (Bytes) から文字ストリーム (Characters) へ
さまざまなエディターを使用して HTML 文書を作成する場合、UTF-8、GBK など、使用されるエンコード形式が異なります。これらのエディタの保存は、実際には、エンコード形式を使用して文字ストリームをバイト ストリーム ファイルに保存するプロセスです。これらのエンコード形式を HTML ドキュメント内で指定する必要がある理由は、ブラウザの HTML インタープリタがエンコード形式を正しくデコードできるようにするためです。
デコード ステップは、バイト ストリーム (Bytes) から文字ストリーム (Characters) へのプロセスで発生します。
インタプリタが HTML Web ページで設定されたエンコード形式を見つけると、WebKit は対応するデコーダを使用してバイト ストリームを特定の形式の文字列に変換します。そうでない場合は、デフォルト (UTF-8) がデコードに使用されます。
これで、Web ページの文字化けの問題を解決する方法がわかりました。Web クローラーでは、Web ページの文字化けの問題が頻繁に発生します。
文字ストリーム (Character) から単語 (Token) へ
このプロセスは一般に字句解析と呼ばれ、WebKit のステートマシンを使用して完了します。つまり、文字列を入力して出力します。それぞれの言葉。自然言語処理には、単語セグメンテーションと呼ばれる同様のプロセスがあります。
WebKit では、DOCTYPE、StartTag、EndTag、Comment、Character、EndOfFile の 6 つの単語カテゴリが定義されています。単語の分割後、WebKit はセキュリティ処理も行います。
単語 (トークン) からノード (ノード) へ
次に、Webkit は安全な単語に対して processXXX などのさまざまな関数を呼び出し、単語の 6 つのカテゴリがそれぞれノードに処理されます。
ノードから DOM ツリー (ドキュメント オブジェクト モデル ツリー) へ
他の言語と同様に、構文ツリーは字句解析の結果に基づいて構築され、HTML では DOM ツリーが構築されます。
HTML ドキュメントの Tag タグには、ブラケット マッチングと同様に開始タグと終了タグがあるため、データ構造スタックを使用して DOM ツリーを構築できることは想像に難くありません。興味があれば、1+3*(5-3)...
などの式を計算するプログラムを学ぶことができます。また、タグの終了タグを書き忘れた場合は、 DOM を構築するとき ツリープロセス中に、スタックの機能を使用して、DOM を自動的に埋めることができます。
これでバイトストリームからDOMツリーへのプロセスが完了しました^_^。
もちろん、これは HTML のみを前提としています。
参考書籍:『WebKit Technology Insider』

ホット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)

ホットトピック











公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合

この記事では、html5< time>について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex
