exports 와 module.exports 의 차이점
일단 내가 이해하는 export와 module.exports 의 차이점은
export 는 es6 에 사용 되는것이고 import 와 같이 쓴다.
export 와 import 는 es6 이므로 nodejs 에서는 지원하지 않습니다.
babel transfer을 사용해서 일반 javascript로 빌드해야 합니다.
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 |
---|