Open2

仕事、復習

akihakih

CommonJS (Node.js)のimport, export

インポート方法: require
エクスポート方法: module.export, export

module.exportとexportsの違い

exports(推奨されていない)

感覚的にいうと、1つのobjectとしてrequireされた後、プロパティのようにexportsしたobjectにアクセスできる。

util.js
exports.sayAdd = function(a, b) {
  say(a + b);
}

exports.saySubtract = function(a, b) {
  say(a - b);
}

say = function(word) {
  console.log(word);
}
main.js
var util = require('./util');

util.sayAdd(1, 2); // 3
util.saySubtract(2, 1); //1
util.say // error. util.say is not a function

(コードはQiitaの記事より引用)

module.exports(推奨)

CommonJS モジュールは Node.js のグローバル変数 module を使って変数や関数などをエクスポートします。 CommonJS モジュールでは module.exports プロパティに代入されたオブジェクトが、その JavaScript ファイルからエクスポートされます(JavaScript Primerより引用)。

movie.js
// コンストラクタ
var Movie = function(title) {
  this.title = title;
}

Movie.prototype.sayTitle = function() {
  say(this.title);
}

say = function(word) {
  console.log(word);
}

module.exports = Movie;
main2.js
var Movie = require('./movie');

var movieA = new Movie('Star Wars');
movieA.sayTitle(); //Star Wars

var movieB = new Movie('Mad Max');
movieB.sayTitle(); // Mad Max
movieB.say(); // error. movieB.say is not a function

(コードはQiitaの記事より引用)

akihakih

ES6のimport, export

インポート方法:

  • import { a } from "module"
  • import { * as a } from "module"
  • import a from "module"

エクスポート方法:

  • export
  • export default

import { * as a } from "module"はaを現在のスコープに加えてmodule.jsのファイルのmoduleからのexportを全て含める。

module.js
export function sayAdd(a, b){
  say(a+b);
}

export function saySubtract = function(a, b) {
  say(a - b);
}

say = function(word) {
  console.log(word);
}
main.js
import * as myModule from "module"

myModule.sayAdd(1, 2) // 3
myModule.sayAdd(2, 1) // 1