Skip to content

Latest commit

 

History

History
 
 

5-es6-modules-syntax

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

5 - ES6モジュール構文

ここでは、const Dog = require('./dog')import Dog from './dog'に置き換えます。これは("CommonJS"のモジュール構文と比べると)より新しいES6モジュールの構文です。

dog.js内のmodule.exports = Dogexport default Dogに置き換えます。

dog.jsでは、Dogの名前はexportの中でしか使われていないことに注意してください。そのため、次の例のように、匿名のクラスを直接エクスポートすることも可能です:

export default class {
  constructor(name) {
    this.name = name;
  }

  bark() {
    return `Wah wah, I am ${this.name}`;
  }
}

index.jsファイルのimportでの'Dog'という名前は実際には使う人次第だと思われたかもしれません。実際、このように書いても問題なく動きます。

import Cat from './dog';

const toby = new Cat('Toby');

もちろん、インポートしたclass / moduleの名前をそのまま使うことがほとんどです。そうしない例としては、Gulpファイル内でconst babel = require('gulp-babel')とする場合が挙げられます。

では、gulpfile.jsファイル内のrequire()はどうでしょうか? 代わりにimportが使えるでしょうか? 最新版のNodeはES6のほとんどの機能に対応していますが、ES6モジュールにはまだ対応していません。ありがたいことに、GulpはBabelに手助けをしてもらえます。gulpfile.jsgulpfile.babel.jsにリネームすれば、BabelはimportされたモジュールをGulpに渡す役割を担ってくれます。

  • gulpfile.jsgulpfile.babel.jsにリネームします。

  • require()を以下のように書き換えます:

import gulp from 'gulp';
import babel from 'gulp-babel';
import del from 'del';
import { exec } from 'child_process';

child_processからexecが直接展開されるシンタックスシュガーに注意してください。実に美しいです!

  • yarn startを実行すると "Wah wah, I am Toby" と表示されるはずです。

(原文: 5 - The ES6 modules syntax)

次章: 6 - ESLint

前章または目次に戻る。