ES6-モジュール

前書き

JavaScriptコードの一部を再利用する必要があるシナリオを考えてみましょう。 ES6 の概念であなたの救助に来る Modules

モジュールは、関連するJavaScriptコードのセットを編成します。モジュールには変数と関数を含めることができます。モジュールは、ファイルに記述されたJavaScriptコードのチャンクにすぎません。デフォルトでは、モジュールの変数と関数は使用できません。モジュール内の変数と関数は、他のファイル内からアクセスできるようにエクスポートする必要があります。ES6のモジュールはでのみ機能しますstrict mode。これは、モジュールで宣言された変数または関数がグローバルにアクセスできないことを意味します。

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

exportキーワードは、モジュール内のコンポーネントをエクスポートするために使用できます。モジュール内のエクスポートは次のように分類できます-

  • 名前付きエクスポート
  • デフォルトのエクスポート

名前付きエクスポート

名前付きエクスポートは、名前で区別されます。モジュールには、いくつかの名前付きエクスポートが存在する可能性があります。モジュールは、以下に示す構文を使用して、選択したコンポーネントをエクスポートできます。

Syntax 1

//using multiple export keyword
export component1
export component2
...
...
export componentN

Syntax 2

または、モジュール内のコンポーネントは、以下に示すように、{}バインディング構文を持つ単一のexportキーワードを使用してエクスポートすることもできます。

//using single export keyword

export {component1,component2,....,componentN}

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

単一の値のみをエクスポートする必要があるモジュールは、デフォルトのエクスポートを使用できます。モジュールごとにデフォルトのエクスポートは1つだけです。

Syntax

export default component_name

ただし、モジュールには、デフォルトのエクスポートと複数の名前付きエクスポートを同時に含めることができます。

モジュールのインポート

モジュールを使用できるようにするには、 import keyword。モジュールは複数持つことができますimport statements

名前付きエクスポートのインポート

名前付きエクスポートをインポートするときは、対応するコンポーネントの名前が一致している必要があります。

Syntax

import {component1,component2..componentN} from module_name

ただし、名前付きエクスポートをインポートする場合は、asキーワードを使用して名前を変更できます。以下の構文を使用してください-

import {original_component_name as new_component_name }

名前付きエクスポートはすべて、アスタリスク*を使用してオブジェクトにインポートできます。 operator

import * as variable_name from module_name

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

名前付きエクスポートとは異なり、デフォルトのエクスポートは任意の名前でインポートできます。

Syntax

import any_variable_name from module_name

例:名前付きエクスポート

Step 1 −ファイルcompany1.jsを作成し、次のコードを追加します−

let company = "TutorialsPoint"

let getCompany = function(){
   return company.toUpperCase()
}

let setCompany = function(newValue){
   company = newValue
}

export {company,getCompany,setCompany}

Step 2−ファイルcompany2.jsを作成します。このファイルは、company1.jsファイルで定義されたコンポーネントを消費します。次のいずれかの方法を使用して、モジュールをインポートします。

Approach 1

import {company,getCompany} from './company1.js'

console.log(company)
console.log(getCompany())

Approach 2

import {company as x, getCompany as y} from './company1.js'

console.log(x)
console.log(y())

Approach 3

import * as myCompany from './company1.js'

console.log(myCompany.getCompany())
console.log(myCompany.company)

Step 3 −HTMLファイルを使用してモジュールを実行します

両方のモジュールを実行するには、以下に示すようにhtmlファイルを作成し、これをライブサーバーで実行する必要があります。を使用する必要があることに注意してくださいattribute type="module" スクリプトタグ内。

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <script src="./company2.js" type="module"></script>
</body>
</html>

上記のコードの出力は以下のようになります-

TutorialsPoint
TUTORIALSPOINT

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

Step 1 −ファイルを作成する company1.js 次のコードを追加します-

let name = 'TutorialsPoint'

let company = {
   getName:function(){
      return name
   },
   setName:function(newName){
      name = newName
   }
}

export default company

Step 2 −ファイルを作成する company2.js。このファイルは、company1.jsファイルで定義されているコンポーネントを使用します。

import c from './company1.js'
console.log(c.getName())
c.setName('Google Inc')
console.log(c.getName())

Step 3 −実行する modules を使用して HTML file

両方のモジュールを実行するには、以下に示すようにhtmlファイルを作成し、これをライブサーバーで実行する必要があります。を使用する必要があることに注意してくださいattribute type="module" スクリプトタグ内。

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <script src="./company2.js" type="module"></script>
</body>
</html>

上記のコードの出力は以下のようになります-

TutorialsPoint
Google Inc

例:デフォルトエクスポートと名前付きエクスポートの組み合わせ

Step 1 −ファイルを作成する company1.js 次のコードを追加します-

//named export
export let name = 'TutorialsPoint'

let company = {
   getName:function(){
      return name
   },
   setName:function(newName){
      name =newName
   }
}
//default export
export default company

Step 2 −ファイルを作成する company2.js。このファイルは、で定義されたコンポーネントを消費しますcompany1.jsファイル。最初にデフォルトのエクスポートをインポートし、次に名前付きのエクスポートをインポートします。

import c, {name} from './company1.js'

console.log(name)
console.log(c.getName())
c.setName("Mohtashim")
console.log(c.getName())

Step 3 −HTMLファイルを使用してモジュールを実行します

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
   </head>
   <body>
      <script src="company2.js" type="module"></script>
   </body>
</html>

上記のコードの出力は次のようになります-

TutorialsPoint
TutorialsPoint
Mohtashim