JavaScriptのモジュール性を理解する方法

JavaScriptのモジュール性を理解する方法

1. ブラウザのサポート

JavaScript モジュールの使用は、インポートとエクスポートに依存します。インポートとエクスポートのブラウザサポートは、最新のブラウザバージョンではサポートされていますが、IE や古いバージョンのブラウザではサポートされていません。そのため、IE や古いバージョンのブラウザとの互換性を保ちたい場合は、基本的に使用できません。

エクスポートとインポートはペアになって連携して動作します。

JSのモジュール化は、さまざまなJSフレームワークを学ぶための前提条件です。

import および export ステートメントは、モジュール内の特定の機能を実装する変数または関数をインポート/エクスポートするために使用されます。クラスをインポート/エクスポートすることもできます。

2.エクスポートモジュールのエクスポート

デフォルトのエクスポート

モジュールにはデフォルトのエクスポートが 1 つしか存在できず、デフォルトのエクスポート変数も 1 つしか存在できず、中括弧 {} は使用できません。

構文はエクスポートデフォルト変数名です

モデル.js

関数Test1(){
    console.log("これはデフォルトのエクスポートです")
}
関数Test2(){
    console.log('これは名前付きエクスポートです')
}
デフォルトをエクスポートする Test1

バッチエクスポート

構文は export {変数名, 変数名...} です。

関数Test1(){
    console.log("これはデフォルトのエクスポートです")
}
関数Test2(){
    console.log('これは名前付きエクスポートです')
}
エクスポート {Test1, Test2}

3. モジュールをインポートする

デフォルトのインポート

メイン.js

「./model.js」からTest1をインポートします。
テスト1()

デフォルトのインポートの名前変更

メイン.js

import x from "./model.js" //xはデフォルトでエクスポートされたTest1です
x()

バッチインポート

メイン.js

"./model.js" から {Test1, Test2} をインポートします。
テスト1();
テスト2();

一括インポートの名前変更

asキーワードの後に​​新しい名前が続き、名前の変更を実装します。

メイン.js

"./model.js" から {Test1 を x1 として、Test2 を x2 として} をインポートします。
1 を 1 にする
2倍

エクスポート時にasキーワードを使用して名前を変更することもできます。

モデル.js

関数Test1(){
    console.log("これはデフォルトのエクスポートです")
}
関数Test2(){
    console.log('これは名前付きエクスポートです')
}
エクスポート {Test1 を x1 として、Test2 を x2 として}

アプリケーションモジュール

html

<script src="main.js"></script>

4. モジュールオブジェクトを作成する

オブジェクトを使用すると、asキーワードに基づいて名前の変更がさらに簡素化されます。

* を「./model.js」からモデルとしてインポートします。
モデル.x1();
モデル.x2();

5. 輸出入中継ステーション

複数のサブモジュールを親モジュールに結合し、親モジュールがどのサブモジュールをエクスポートするかを決定する場合があります。この親モジュール ファイルは、さまざまなモジュールを組み合わせるためのトランジット ステーションのようなものです。

構文は、モジュールパスからエクスポート{変数名}です。

現在のディレクトリ構造

ソース

インデックス.html

メイン.js

リダイレクト.js

モデル

モデル.js

モデル2.js

モデル.js

関数Test1(){
    console.log("これはサブモジュール1です")
}
エクスポート {Test1}

モデル2.js

関数Test2(){
    console.log('これはサブモジュール2です')
}
エクスポート {Test2}

リダイレクト.js

「./models/model.js」から{Test1}をエクスポートします。
「./models/model2.js」から{Test2}をエクスポートします。

メイン.js

* を「./redirection.js」からモデルとしてインポートします。
モデル.テスト1()
モデル.テスト2()

html

<script src="./main.js"></script>

6. モジュールの動的ロード

動的にロードされるモジュールは、すべてのモジュールを事前にロードせずにモジュールをインポートするために使用されます。必要に応じて import() を関数呼び出しとして使用し、そのパラメータをモジュールのパスに渡すと、promise が返されます。モジュールのロード結果を操作するために、Promise オブジェクトを使用します。

構文はimport(動的にロードされたモジュールパス)です。

ダイナミック

関数TestDy(){
    console.log("これは動的モジュールです")
}
デフォルトの TestDy をエクスポートする

メイン.js

document.querySelector('.load').onclick = function(){
    import('./dynamic.js').then((モデル)=>{
        モデル.default()
    })
}

以上がJavaScriptのモジュール化を理解する方法の詳細です。JavaScriptのモジュール化の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Node.js のモジュール性、npm パッケージ マネージャーの説明
  • NodeJSのモジュール性に関する詳細な説明
  • JSフロントエンドモジュール化のいくつかの仕様についての簡単な説明
  • Jsモジュール化の動作原理とソリューションの詳細な説明
  • モジュール管理を実現するための JavaScript でのエクスポートとインポートに関するチュートリアル
  • JavaScript のモジュール性の説明

<<:  MySQL でファイルデータをインポートする際の 1290 エラーの解決方法

>>:  Linux でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

推薦する

vue-amap のインストールと使用手順

以前、Amap API を非同期にロードする方法を紹介しました。今回は、vue-amap の使用方法...

Html、sHtml、XHtml の違いのまとめ

たとえば、<u>には終了文字がなく、ブラウザはそれを認識します。 SHTML は Ser...

MySQLのロック機構に関する最も包括的な説明

目次序文グローバルロック完全なデータベース論理バックアップFTWRL と set global re...

フォーム要素とプロンプトテキストが揃っていない問題

最近のプロジェクトでは、多くのフォーム、特にチェックボックスとラジオボタンの作成が含まれます。しかし...

MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明

遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...

CSS3 フィルターを使用して PNG 画像の色を変更するサンプル コード

この方法は、CSS3のdrop-shadow filterを使用して、png画像の不透明部分に任意の...

Java を Mysql バージョン 8.0.18 に接続する方法の詳細な説明

JavaとMysql 8.0.18バージョンの接続方法については、参考までに具体的な内容は以下のとお...

MySQL でのフィルター条件なしのカウントの詳細な説明

カウント(*)成し遂げる1. MyISAM: テーブル内の行の総数をディスク上に保存し、フィルタリン...

Alibaba Cloud ECS サーバーでポート 8080 を開く方法

セキュリティ上の理由から、Alibaba Cloud Server ECS にはデフォルトで独自のセ...

JS ES の新機能: 拡張演算子の紹介

1. スプレッド演算子スプレッド演算子は 3 つのドット ... で、複数の引数 (関数呼び出しなど...

MySQLはデータテーブル内の既存のテーブルを分割します

目次操作方法操作プロセス既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移...

Spring環境を構成するためのDocker-composeの手順

最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された...

divコンテナ内の背景色または画像は、サイズが大きくなるにつれて大きくなります。

コードをコピーコードは次のとおりです。高さ:自動 !重要;高さ:550px;最小高さ:550px; ...

Linux システムでの virtuoso データベースの詳細なインストールと使用

最近、リンク データについていくつか調査していて、rdf データベースを使用する必要があったため、v...

JavaScript でシンプルなタイマーを実装する

この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...