エクスポート機能

ネイティブ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-2named_exports_moduleinline_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 };
/