エクスポート機能
ネイティブJavaScriptモジュールで一般的にエクスポートされる識別子には、変数、定数、ファンクションおよびクラスが含まれます。
トピック
- 名前付きエクスポート
export文での識別子の明示的な使用は、JavaScriptでの名前付きエクスポートの使用と呼ばれます。 - デフォルト・エクスポート
名前付きエクスポートのかわりに、JavaScriptでデフォルト・エクスポートを定義できます。デフォルト・エクスポートは、名前付きエクスポートとは構文が異なります。後者とは異なり、デフォルト・エクスポートには一連の中カッコは必要ありません。 - プライベート識別子
モジュールからエクスポートされない識別子はプライベートとみなされ、モジュールのスコープ外またはモジュール・コール仕様では参照できません。
親トピック: MLE JavaScriptモジュールのインポートの概要
名前付きエクスポート
export文での識別子の明示的な使用は、JavaScriptでの名前付きエクスポートの使用と呼ばれます。
例5-2は、名前付きエクスポートを使用した複数のファンクションのエクスポートを示しています。
例5-2 名前付きエクスポートを使用したファンクションのエクスポート
このコード・スニペットは、named_exports_module
というモジュールを作成し、sum()
とdifference()
という2つのファンクションを定義した後、名前付きエクスポートを使用して、リストされたファンクションをインポートする他のモジュールへのアクセスを提供します。
CREATE OR REPLACE MLE MODULE named_exports_module LANGUAGE JAVASCRIPT AS
function sum(a, b) {
return a + b;
}
function difference(a, b) {
return a - b;
}
export {sum, difference};
/
モジュールの最後のexport{}
文に注意してください。名前付きエクスポートでは、識別子をリストする際に中カッコを使用する必要があります。中カッコの間に配置された識別子はすべてエクスポートされます。リストされていないものはエクスポートされません。
モジュールの最後にexport
文を使用するのではなく、インラインでexport
キーワードを使用して識別子の前に付加することもできます。次の例は、前述の例と同じモジュールを、JavaScriptコードでインラインで指定されているexport
キーワードを使用してリライトする方法を示しています。
例5-3 インラインでexportキーワードを使用したファンクションのエクスポート
このコード・スニペットは、inline_export_module
というモジュールを作成し、sum()
とdifference()
という2つのファンクションを定義します。これらの両方のファンクションには、インラインでexport
キーワードが先頭に付加されます。
CREATE OR REPLACE MLE MODULE inline_export_module LANGUAGE JAVASCRIPT AS
export function sum(a, b) {
return a + b;
}
export function difference(a, b) {
return a - b;
}
/
例5-2のnamed_exports_module
とinline_export_module
はどちらも意味的に同じです。ファンクションのエクスポートに使用するメソッドのみが構文上で異なっています。
親トピック: エクスポート機能
デフォルト・エクスポート
名前付きエクスポートのかわりに、JavaScriptでデフォルト・エクスポートを定義できます。デフォルト・エクスポートは、名前付きエクスポートとは構文が異なります。後者とは異なり、デフォルト・エクスポートには一連の中カッコは必要ありません。
ノート:
ECMAScript標準に従い、モジュールごとに可能なデフォルト・エクスポートは1つのみです。例5-4 デフォルト・エクスポートを使用したクラスのエクスポート
次のコード・スニペットは、default_export_module
というモジュールを作成し、myMath
というクラスを定義し、デフォルト・エクスポートを使用してこのクラスをデフォルトに設定します。
CREATE OR REPLACE MLE MODULE default_export_module
LANGUAGE JAVASCRIPT AS
export default class myMath {
static sum(operand1, operand2) {
return operand1 + operand2;
}
static difference(operand1, operand2) {
return operand1 - operand2;
}
}
/
親トピック: エクスポート機能
プライベート識別子
モジュールからエクスポートされない識別子はプライベートとみなされ、モジュールのスコープ外またはモジュール・コール仕様では参照できません。
例5-5 1つのファンクションの名前付きエクスポート
次のコード・スニペットは、private_export_module
というモジュールを作成し、sum()
とdifference()
という2つのファンクションを定義し、名前付きエクスポートを介してファンクションsum()
をエクスポートします。ファンクションdifference()
はexport文に含まれていないため、その独自のモジュールのスコープ内でのみ使用できます。
CREATE OR REPLACE MLE MODULE private_export_module
LANGUAGE JAVASCRIPT AS
function sum(a, b) {
return a + b;
}
function difference(a, b) {
return a - b;
}
export { sum };
/
親トピック: エクスポート機能