exports 와 module.exports 의 차이점

일단 내가 이해하는 export와 module.exports 의 차이점은 

 

export 는 es6 에 사용 되는것이고 import 와 같이 쓴다.

export 와 import 는 es6 이므로 nodejs 에서는 지원하지 않습니다.

babel transfer을 사용해서 일반 javascript로 빌드해야 합니다. 

https://babeljs.io/

 

Babel · The compiler for next generation JavaScript

The compiler for next generation JavaScript

babeljs.io

혹은 webpack 을  사용해도 됩니다.webpack에서 자기만의 모듈화 시스템을 만들었으니깐요.

그래서 소스보면 항상  __webpack_require__ 이런식으로 나옵니다.

/* export.js */

var x = {
	test:function () {
		return 'Hello world';
	}
};
var y = {}
var z = {}
// export x and y  ignore z
export {x,y}


/* import.js */
// just import x ignore y
import {x} from './export.js'

var result = x.test()
console.log(result)

module.exports 는 commonjs 에 사용 되는 것이고 require 같이 사용한다.

/* export.js */

module.exports = {
	test:function () {
		return 'Hello world';
	}
}

/* import.js */
var x = require('./export.js')

var result = x.test()
console.log(result)

 

for example:

export,import  -> babel compile -> commonjs

/* import.js */

//var x = require('./export.js')
import {x} from './export'

var result = x.test()
console.log(result)
//import './export.js'



/* compiled import.js */
"use strict";

var _export = require("./export");

/* import.js */
//var x = require('./export.js')
var result = _export.x.test();

console.log(result); //import './export.js'

참고로 import export 빌드 방법

https://babeljs.io/docs/en/babel-cli/

https://babeljs.io/docs/en/babel-plugin-transform-modules-commonjs

 

Babel · The compiler for next generation JavaScript

The compiler for next generation JavaScript

babeljs.io

 

원래 이런글을 잘 안쓰는데 추세라고 해야 되나 ? 나도 누군가에 도움을 주고 싶은 그런 마음이랄까 

할일은 많은데 이렇게 꼼꼼히 글쓰는건 첨인거 같다 . ㅎㅎ 

그래도 누군가에게 도움이 됬으면 좋겠다.

 

'JS & HTML' 카테고리의 다른 글

react 하고 react dom  (0) 2020.05.26