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 でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

推薦する

MySQL Binlog ログ処理ツールの比較分析

目次運河マクスウェルデータバスAlibaba Cloud のデータ転送サービス (DTS)運河ポジシ...

ウェブサイトのビジュアルデザインパスはユーザーの習慣に合わせる必要がある

クーパー氏は、一般的に上から下、左から右に向かうユーザーの視覚経路について話しました。優れたビジュア...

Docker で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード

目次1. 概要1. 原則2. 実装3. スレーブインスタンスを作成する4. マスタースレーブ構成要約...

スクロールバーがスペースを占有することで発生するバグを修正しました

背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...

HttpsページでBaiduシェアを使用するためのソリューション

サイト全体で https アクセスを有効にしてから、共有コードが利用できなくなり、有効になっていた小...

MySQL ストアド プロシージャのエラー処理例の詳細な説明

この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...

CentOS7環境でDockerを使ってPHP動作環境を構築する手順を詳しく解説

関連記事: CentOS7でyumを使用してDockerをインストールするDockerを使ってWin...

MySQL ルートパスワードを変更する複数の方法 (推奨)

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

背景画像に CSS3 変換を適用するためのソリューション

CSS 変換は便利ですが、背景画像にはまだ適用されていません。この投稿では、背景画像を回転させたい場...

Vue-Jest自動テストの基本構成の詳しい説明

目次インストール構成よくある間違い事前テスト作業依存関係の扱いインスタンスとDOMを生成する要約する...

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

さまざまなマウスの形状を表現する方法

<a href = "http://" style = "cur...

MySQLの認証コマンドgrantの使い方

この記事の例は MySQL 5.0 以降で実行されます。ユーザー権限を付与するための MySQL コ...

Web デザインにおける HTML フォーマットと長いファイルに関するヒント

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解

1. ストレージエンジン前のセクションでは、SQL 実行プランは、エグゼキュータ コンポーネントがス...