HTML5_html5 チュートリアル スキルでのファイル インポートの簡単な紹介
テンプレート、Shadow DOM、カスタム要素により、UI コンポーネントの作成がこれまでより簡単になります。ただし、HTML、CSS、JavaScript などのリソースは依然として 1 つずつロードする必要があり、非常に非効率です。
重複した依存関係を削除するのも簡単ではありません。たとえば、jQuery UI または Bootstrap を読み込むには、JavaScript、CSS、および Web フォントに個別のタグを追加する必要があります。 Web コンポーネントが複数の依存関係を適用する場合、状況はさらに複雑になります。
HTML インポートを使用すると、これらのリソースを結合された HTML ファイルとしてロードできます。
HTML を使用してインポート
HTML ファイルをロードするには、rel 属性が import で、herf 属性が HTML ファイルのパスであるリンク タグを追加する必要があります。たとえば、component.html をindex.html にロードする場合:
index.html
- <リンク rel="インポート" href="component.html" >
ファイルを HTML にインポートできます (翻訳者注: この記事では、「インポートされた HTML」を「HTML インポート ファイル」、「元の HTML」を「HTML メイン ファイル」と翻訳します。たとえば、index.html は HTML メイン ファイルです。ファイル、component.html は HTML インポート ファイルです。) 通常の HTML にリソースを追加するのと同じように、スクリプト、スタイル シート、フォントなどのリソースを追加します。
component.html
- <リンク rel="スタイルシート" href="css/style.css">
- <script src="js/ script.js">スクリプト>
doctype、html、head、body タグは必要ありません。 HTML インポートでは、インポートされるドキュメントがただちにロードされ、ドキュメント内のリソースが解析され、スクリプトがあれば実行されます。
約定命令
ブラウザが HTML ドキュメントを解析する方法は線形です。つまり、HTML の上部にあるスクリプトが下部より前に実行されます。さらに、ブラウザは通常、JavaScript コードが実行されるまで待ってから、後続のコードを解析します。
スクリプトが HTML のレンダリングを妨げないようにするには、タグに async または defer 属性を追加します (または、script タグをページの下部に置くこともできます)。 defer 属性は、すべてのページが解析されるまでスクリプトの実行を遅らせます。 async 属性を使用すると、ブラウザは HTML のレンダリングを妨げないようにスクリプトを非同期に実行できます。では、HTML インポートはどのように機能するのでしょうか?
HTML インポート ファイル内のスクリプトは、defer 属性を含むものと同じです。たとえば、次の例では、index.html は script1.js と script2.js を最初に実行し、次に script3.js を実行します。
index.html
- <リンク rel="インポート" href="component.html"> // 1.
- <title>インポート例タイトル>
- <script src="script3. js">スクリプト> // 4.
component.html
- <script src="js/script1.js ">スクリプト> // 2.
- <script src="js/ script2.js">script> // 3.
1.在index.html中加下component.html并等待機行
2.実行component.html中のscript1.js
3.完了script1.jsを実行後、component.html中のscript2.jsを実行
4.script2.js を実行してindex.html 内の script3.js を実行
注意:link[rel="import"] に async プロパティが追加された場合、HTML への参加は、async プロパティを含むファイルを適切に待機します。これにより、他のスクリプトが HTML 入力ファイルの実行に依存する可能性を除き、Web サイトのパフォーマンス バンドルも向上します。
基本的に、HTML 入力は他のドメイン名からソースに入力できません。
HTML は、ドキュメント内のウィンドウとドキュメント オブジェクトを挿入します
前に、HTML ファイルを挿入するときにこのページのスクリプトが実行される可能性があると述べましたが、これは、HTML を挿入するファイル内のコードもブラウザーによって汚染される可能性があることを意味するものではありません。
と、component.html のドキュメントは両方とも、index.html のドキュメント オブジェクトを指します。HTML を使用してファイル内のドキュメントを挿入することはできません。
index.html
- var link = document.querySelector('link[rel ="インポート"]');
- link.addEventListener('load', function(e) {
- var importedDoc = link.import; // importDoc は、component.html の下のドキュメントを指します
- });
component.html
- var mainDoc = ドキュメント.currentScript.ownerDocument // mainDoc は、component.html の下のドキュメントを指します
- var
- mainDoc = ドキュメント._currentScript.ownerDocument // mainDoc は、component.html の下のドキュメントを指します
- スクリプトの先頭に次のコードを追加すると、ブラウザが HTML インポートをサポートしているかどうかに関係なく、component.html 内のドキュメント オブジェクトに簡単にアクセスできます。
HTML インポートを使用する利点の 1 つはリソースを整理できることですが、これらのリソースをロードするときに追加の HTML ファイルを使用するためヘッダーが大きくなりすぎることも意味します。考慮すべき点がいくつかあります:
依存関係の解決
index.html
XML/HTML コード
- リンク rel="インポート" href="component1.html">
<
- リンク rel="インポート" href="component2.html"> component1.html
XML/HTML コード
- <スクリプト src="js/jquery.js ">スクリプト>
component2.html
HTML インポートは、この問題を自動的に解決します。
スクリプト タグを 2 回ロードする場合とは異なり、HTML インポートでは、すでにロードされている HTML ファイルをロードして実行することはなくなりました。前のコードを例に挙げると、jQuery を読み込む script タグを HTML インポート ファイルにパッケージ化することで、jQuery は 1 回だけ読み込まれて実行されます。
しかし、問題があります。ロードするファイルを追加しました。増大するファイル数にどう対処するか?幸いなことに、この問題を解決するための vulcanize というツールがあります。
ネットワークリクエストをマージします
Vulcanize は複数の HTML ファイルを 1 つのファイルにマージできるため、ネットワーク接続の数が削減されます。 npm を使用してインストールし、コマンド ラインから使用できます。一部のタスクをホストするために grunt と gulp を使用している場合もあります。その場合、ビルド プロセスの一部として加硫することができます。
依存関係を解決し、index.html 内のインポート ファイルをマージするには、次のコマンドを使用します:
このコマンドを実行すると、index.html の依存関係が解析され、vulcanized.html という結合された HTML ファイルが生成されます。バルカナイズについて詳しくは、こちらをご覧ください。
注: http2 のサーバー プッシュ機能は、将来ファイルのリンクとマージを廃止するために検討されています。
テンプレート、Shadow DOM、カスタム要素、HTML インポートを組み合わせる
この記事シリーズのコードには HTML インポートを使用してみましょう。これらの記事をこれまで見たことがないかもしれませんので、最初に説明させてください。 テンプレートを使用すると、カスタム要素のコンテンツを宣言的に定義できます。 Shadow DOM では、要素のスタイル、ID、クラスをそれ自体にのみ適用できます。カスタム要素を使用すると、HTML タグをカスタマイズできます。これらを HTML インポートと組み合わせることで、カスタム Web コンポーネントがモジュール化され、再利用可能になります。リンクタグを付けて頂ければ誰でもご利用頂けます。
x-component.html
- <テンプレート id="テンプレート" >
- <スタイル>
- ...
- スタイル>
- <div id="コンテナ" >
- <img src="http: //webcomponents.org/img/logo.svg">
- <コンテンツ select="h1" >コンテンツ>
- div>
- テンプレート>
- <スクリプト>
- // この要素は index.html に登録されます
- // ここでの「ドキュメント」とは、index.html にあるものを意味するためです
- var XComponent = document.registerElement('x-component', {
- プロトタイプ: Object.create(HTMLElement.prototype, {
- createdCallback: {
- value: function() {
- var root = this.createShadowRoot();
- var テンプレート = ドキュメント.querySelector('#template');
- var クローン = ドキュメント.importNode(template.content, true);
- root.appendChild(クローン);
- }
- }
- })
- });
- スクリプト>
index.html
- ...
- <リンク rel="インポート" href="x-component.html">
- 頭>
- <ボディ>
- <x コンポーネント>
- <h1>これはカスタム要素ですh1>
- x コンポーネント>
- ...
x-component.html のドキュメント オブジェクトはindex.html と同じであるため、難しいコードを記述する必要はなく、自動的に登録されることに注意してください。
サポートされているブラウザ
Chrome と Opera は HTML インポートのサポートを提供しますが、Firefox は 2014 年 12 月までサポートしません (Mozilla は、Firefox が近い将来に HTML インポートをサポートする予定はないと述べ、まず ES6 モジュールがどのようにサポートされるかを理解する必要があると主張しました)実装されています)。
chromestatus.com または caniuse.com にアクセスして、ブラウザが HTML インポートをサポートしているかどうかを確認できます。他のブラウザで HTML インポートを使用する場合は、webcomponents.js (以前の platform.js) を使用できます。
関連リソース
HTML インポートについては以上です。 HTML インポートについて詳しく知りたい場合は、
にアクセスしてください。 HTML インポート: Web 用 #include – HTML5Rocks
HTML インポート仕様

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
