์ง์ญํ์๋ฉด 'React'๋ UMD global์ ์ฐธ์กฐํ์ง๋ง, ํ์ฌ ํ์ผ์ ๋ชจ๋์ด๋ผ๋ ๋ป.
import React from 'react';
์ ์ฝ๋๋ฅผ ์ฝ๋ ์ต์๋จ์ ์ถ๊ฐํ๋ค.
๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋จผ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ ์ ๋ํด ์ดํดํ ํ์๊ฐ ์๋ค.
CommonJS
require
, ๋ชจ๋์ ๋ด๋ณด๋ผ ๋๋ module.exports
์ฌ์ฉAMD(Asynchronous Module Definition)
CommonJS
๋ ๋ชจ๋ ํ์ผ์ด ๋ก์ปฌ ๋์คํฌ์ ์์ด ํ์ํ ๋ ๋ฐ๋ก ๋ถ๋ฌ์ฌ ์ ์๋ ์ํฉ์ ์ ์ ๋ก ํจ (๋๊ธฐ์ ์ธ ๋์ ๊ฐ๋ฅ)CommonJS
์ ์ด๋ฐ ๋ฐฉ์์ด ํ์ํ ๋ชจ๋์ ๋ชจ๋ ๋ค์ด๋ก๋ํ ๋๊น์ง ๋์ํ์ง ์๋๋ค๋ ์น๋ช
์ ์ธ ๋จ์ ์ผ๋ก ๋ค๊ฐ์จ๋ค!define
์ผ๋ก ๋ชจ๋์ ์ถ์ถํ๊ณ , require
๋ก ์ฌ์ฉ ๊ฐ๋ฅUMD(Universal Module Definition)
CommonJS
์ AMD
๋ ์ด๋ฐ ์ฐจ์ด๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ก ํธํ๋์ง ์์UMD
!(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof module === 'object' && module.exports) {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.returnExports = factory();
}
}(typeof self !== 'undefined' ? self : this, function () {
// Just return a value to define the module export.
// This example returns an object, but the module
// can return a function as the exported value.
return {};
}));
ESM(ECMAScript Module)
import
, ๋ด๋ณด๋ผ ๋ export
์ฌ์ฉ์ฆ, ๋ฌธ์ ๋ Babel์ด๋ Webpack ๋ฑ๋ฑ๊ณผ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ ์์คํ
๊ณผ ์ค์ ํ์ผ์ ๋ด์ฉ์ด ๋ฌ๋ผ์ ์๊ธฐ๋ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค.
codesandbox์์ ๋ฏธ๋ฆฌ ์ธํ
๋ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ฅผ ์ฌ์ฉํด์ ๋ด๋ถ ์ธํ
๊น์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๋ด๊ฐ ์ถ์ธกํ ๋ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค. ํ๋ก์ ํธ์ ์ค์น๋ ํจํค์ง ์ค์ react-scripts
๊ฐ ์์๊ณ , ์ด๋ CRA๋ฅผ ์ฌ์ฉํ ๋ ์๋์ผ๋ก ํจํค์ง๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ CRA๋ Babel์ ์ฌ์ฉํ๋๋ฐ, ํ๋ก์ ํธ์์๋ Webpack ์ค์ ๋ํ ์ธํ
์ด ๋์ด ์์ด์ ์ด ๋์ด ์ถฉ๋์ ์ผ์ผํค๋ ๊ฒ ์๋๊น ์ถ์๋ค.
import React from 'react'
๊ฒฐ๊ตญ ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฝ๋ ์๋จ์ ์ ํ ์ค์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๊ธฐ ์ซ๋ค๋ฉด ์ถฉ๋์ ์ผ์ผํค๋ ์ค์ ์ ์ฐพ์ ESM์ผ๋ก ํต์ผ์์ผ์ฃผ๋ฉด ๋๊ฒ ๋ค!
+) ์ฐธ๊ณ