Node.js
node.jsでのモジュールのエクスポートとインポート
サーチ…
node.jsの単純なモジュールを使用する
node.jsモジュールとは( 記事へのリンク ):
モジュールは、関連するコードを単一のコード単位にカプセル化します。モジュールを作成するときは、関連するすべての関数をファイルに移動すると解釈できます。
さあ、例を見てみましょう。すべてのファイルが同じディレクトリにあるとします。
ファイル: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
モジュールを使用する別の方法:
ファイルanimals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
ファイル: app.js
このファイルを実行するには、ディレクトリに移動し、次のように入力しnode app.js
"use strict";
//require('./path/to/module.js') node which module to load
var printer = require('./printer');
var animals = require('./animals');
printer.printHelloWorld(); //prints "Hello World!!!"
animals.lion(); //prints "ROAARR!!!"
ES6でのインポートの使用
Node.jsは、V8の最新バージョンに対して構築されています。このエンジンの最新リリースを最新の状態に保つことにより、JavaScript ECMA-262仕様の新機能がNode.js開発者にタイムリーに提供され、継続的なパフォーマンスと安定性の向上が保証されます。
すべてのECMAScript 2015(ES6)の機能は、出荷、ステージング、および進行中の機能の3つのグループに分割されています。
V8が安定しているとみなすすべての出荷機能は、Node.jsではデフォルトでオンになっており、ランタイムフラグは一切必要ありません。 V8チームによって安定しているとはみなされないほぼ完成した機能であるステージ機能は、ランタイムフラグを必要とします。--harmony。進行中のフィーチャは、それぞれのハーモニーフラグによって個別にアクティブにすることができますが、テスト目的以外の場合は避けてください。注:これらのフラグはV8によって公開されており、廃止予定通知なしで変更される可能性があります。
現在、ES6はインポートステートメントをネイティブでサポートしています
ですから、 fun.js
というファイルがあるとしfun.js
...
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
...そしてapp.js
という別のファイルがあって、以前定義した関数を使用したい場合は、それらをインポートする方法が3つあります。
デフォルトをインポート
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
ソースファイルのデフォルトのエクスポートとしてマークされているため、 say()
関数をインポートしsay()
デフォルトのエクスポートexport default …
)
名前付きインポート
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
名前付きインポートでは、実際に必要なモジュールの部分を正確にインポートすることができます。これを明示的に命名することで行います。私たちの場合は、importステートメント内の中括弧でsayLoud
という名前を付けます。
バンドルされたインポート
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
私たちがそれを全部持っていたいなら、これが行く方法です。 * as i
構文を使用することで、私たちはimport
ステートメントを持って、私たちのfun
モジュールのすべてのエクスポートを対応する名前付きプロパティとして保持するオブジェクトi
を提供します。
パス
./
を使用してインポートするファイルと同じディレクトリにインポートするファイルが存在する場合でも、インポートパスを相対パスとして明示的にマークする必要があります。次のような修正されていないパスからのインポート
import express from 'express';
ローカルおよびグローバルnode_modules
フォルダで検索され、一致するモジュールが見つからない場合はエラーが発生します。
ES6の構文でエクスポートする
export function printHelloWorld() {
console.log("Hello World!!!");
}