λ¬Έμ λͺ©λ‘μΌλ‘ λμκ°κΈ°
π‘μ§μμλ΅μ https://github.com/pul8219/TIL
Issues
νμ μλ§μ step μ΄μμμ λ¨κ²¨μ£ΌμΈμ. β‘οΈ IssueνμΌλ‘ μ΄λ
- μμ±μ: Wol-dan (@pul8219)
- μ€ν°λ μ£Όμ : FrontEnd λ©΄μ μ€ν°λ https://gitlab.com/siots-study/topics/-/wikis/home
- κ³΅λΆ λ²μ: λͺ¨λ λͺ¨λμ μμ¬μ μ’ λ₯ μ€μ¬μΌλ‘ μ 리ν κ²(STEP 9) + λͺ¨λ λ¬Έλ²(STEP 10)
- κΈ°ν: 9/12(ν ) ~ 9/15(ν) (STEP 9), 9/18(ν ) ~ 9/22(ν) (STEP 10)
- jsμμ 'μ "
- λͺ¨λ λ 벨 μ€μ½ν
- export νλ λͺ¨λμ νμ βuse strictβ μ΄λ€.
- λΈλΌμ°μ λͺ¨λ λ¬Έμ μ°Έκ³
- export default
- λͺ¨λμ΄λ λ³λλ‘ λΆλ¦¬λ μ¬μ¬μ© κ°λ₯ν μ½λ μ‘°κ°μ μλ―Ένλ€.
- μ½κ² λ§νλ©΄ νμΌ νλλ₯Ό μλ―Ένλ€. μ€ν¬λ¦½νΈ νλλ λͺ¨λ νλμ΄λ€.
- λͺ¨λμ μΈλΆμ¬νμ μΊ‘μννκ³ νμν APIλ§μ μΈλΆμ 곡κ°νλ€.
- λͺ¨λμ κΈ°λ₯λ³λ‘ λΆλ¦¬λκ³ μ¬μ¬μ©μ±μ΄ μ’μ κ°λ° ν¨μ¨μ±κ³Ό μ μ§λ³΄μμ±μ λμΈλ€.
- μλ μλ°μ€ν¬λ¦½νΈλ λͺ¨λνμ κ±°λ¦¬κ° λ¨Ό μΈμ΄μλ€.
- κ·Έλ°λ° νλ‘ νΈμλ νλ‘μ νΈ κ·λͺ¨κ° 컀μ§κ³ μλ°μ€ν¬λ¦½νΈ νλ‘κ·Έλ¨μ νμμ λ°λΌ κ°μ Έμ€κ³ , λ³λμ λͺ¨λλ‘ λΆν νκΈ° μν λ©μ»€λμ¦ νμμ±μ΄ μ¦λ. ES6μ λͺ¨λ μμ€ν μ΄ μΆκ°λ¨.
- λͺ¨λ μ¬μ©μ κ°λ₯μΌνλ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬, νλ μμν¬μ λ±μ₯(RequireJS, CommonJS, AMD, μ΅κ·Όμλ Webpack, Babel)
- λͺ¨λ λ΄μμ μ μΈλ λ³μλ€μ λͺ¨λ λ΄λΆμ κ°μ₯ λ°κΉ₯ μ€μ½νμμ μ μΈνλλΌλ μ μ μ€μ½ν/μ μ λ³μμ μ μ₯λμ§ μκ³ λͺ¨λ μ€μ½ν λ΄μμ μ μΈλκΈ° λλ¬Έμ μ μ λ³μκ° μ€μΌλ κ±±μ μ νμ§ μμλ λλ€.
- λͺ¨λ μ€μ½νμ μ μΈλ μ΄λ¦μ ν΄λΉ λͺ¨λμ export νμ§ μμ κ²½μ°, ν΄λΉ λͺ¨λ λ΄λΆμμλ§ μ κ·Όν μ μλ€.
μλ°μ€ν¬λ¦½νΈλ μ€ν¬λ¦½νΈ μ½λλ₯Ό νμΌλ‘ λλ <script>
νκ·Έλ‘ λΆλ¬μ€λ λ°©μμ΄ μ΄κΈ° λͺ¨λνμ μ λΆμλ€. μ΄ λ°©μμ λ¬Έμ μ μ λ€μκ³Ό κ°λ€.
- μ μ λ³μ 곡κ°μ΄ μ€μΌλ μ μμ
- λ€λ₯Έ μ¬λμ μ½λλ₯Ό μ΄μ©ν λ μμ‘΄μ± κ΄κ³ νμΈμ΄ μ΄λ €μ
- νμΌλ€μ λ‘λνλ μμκ° μ€μν΄μ§λ©° μ΄λ₯Ό ν΄κ²°ν΄μΌ νμ
μ΄λ¬ν λ¬Έμ μ λ€μ κ°μ νκΈ°μν΄ λͺ¨λ κΈ°λ° μμ€ν λ€μ΄ λ±μ₯νλ€.
<!DOCTYPE html>
<html>
<head>
...
<script src="./foo.js"></script>
<script src="./bar.js"></script>
...
</head>
<body></body>
</html>
// foo.js
let num = 1;
// bar.js
let num = 2;
- λΈλΌμ°μ μ€μ½ν λ¬Έμ
foo.js
, bar.js
νμΌμ μ€ν¬λ¦½νΈ νκ·Έλ‘ λΆλ¬μ€κ³ κ°κ°μ νμΌμμ κ°μ μ΄λ¦μ λ³μλ₯Ό μ΄λ€κ³ ν΄λ³΄μ. μ΄λ κ² μμ±νκ² λλ©΄, κ°μ₯ λ€μ μ°μΈ μ€ν¬λ¦½νΈ κΈ°μ€μΌλ‘ λ³μμ΄λ¦μ΄ μ μ©λμ΄ foo.js
μμ μ¬μ©ν λ³μ num
μ μΉνκ² λλ€.
- μμ‘΄μ± κ΄λ¦¬ λ¬Έμ
λͺ¨λμ μμ‘΄μ± μμλ₯Ό μ λΆ κ³ λ €ν΄ μ€ν¬λ¦½νΈ νκ·Έλ₯Ό μ μ ν κ³³μ μμΉμμΌμΌ νλ€.
μλ₯Ό λ€μ΄ λͺ¨λ Aκ° λͺ¨λ Bμ μμ‘΄νλ€λ©΄, λͺ¨λ Bκ° λ‘λλκ³ λμ λͺ¨λ Aκ° λ‘λλμ΄μΌ νλ€. κ·Έλ°λ° λ§μ½ μμ, μλ°±κ°μ λͺ¨λλ€μ λν΄ μμ‘΄μ± κ΄λ¦¬λ₯Ό ν΄μΌ νλ€λ©΄ μμ°μ±μ΄ λ¨μ΄μ§ κ²μ΄λ€.
- λ‘λ μκ°
μ€ν¬λ¦½νΈ νκ·Έλ μλ‘μ΄ HTTP 컀λ₯μ
μ νμλ‘ νλ€. HTTP/2
(2015)κ° λ±μ₯νκΈ° μ μλ HTTP 컀λ₯μ
μ΄ λ³λ ¬μ΄ μλ μ§λ ¬μ μΌλ‘ λ‘λλκΈ° λλ¬Έμ script νκ·Έμ νμΌ νκ°μ© μ΄ 100κ°μ script νκ·Έκ° μμλ€λ©΄ 100λ²μ HTTP 컀λ₯μ
μ΄ νμνλ€. HTTP 컀λ₯μ
μ ν΅ν΄ μλ°μ€ν¬λ¦½νΈ λͺ¨λμ λ€μ΄λ°μ λλ§λ€ ν΄λΌμ΄μΈνΈ μ μ μ λΈλΌμ°μ λ νμκ² λ©μΆ°μκ² λλ€. μ€ν¬λ¦½νΈ νκ·Έκ° λ§λ€λ©΄ μ μ λ λ κΈ°λ€λ €μΌ νλ€. (HTTP/2
λ λ©ν°νλ μ±μ ν΅ν΄ λ³λ ¬μ μΌλ‘ λ‘λ)
1
, 2
, 3
λ²μμ μ μλ λ¬Έμ μ μΉνμ΄μ§λ₯Ό λ°©λ¬Έν μ μ μ λκΈ° μκ° μ΅μν
λ₯Ό μν λͺ¨λν νμ€μ μν΄ CommonJSκ° (μ λ°μ) ν΄κ²°μ±
μ μ μνλ€.
μλ°μ€λ¦½νΈλ₯Ό λΈλΌμ°μ μμ λΏλ§μλλΌ μλ²μ¬μ΄λμμλ μ¬μ©νκΈ° μν΄ λ§λ€μ΄μ§ λͺ¨λν νμ€
- μλ²μ¬μ΄λμ©μΌλ‘ μ¬μ©ν λ μ₯μ μ΄ λ§μ
- λ‘컬 λμ€ν¬μμ λͺ¨λμ λ‘λν λ λ λΉ λ₯΄κ³ κ°κ²°
- νμ¬
Node.js
μμ μ΄ λ°©μμ μ¬μ©νκ³ μλ€.
λͺ¨λνμ 3μ건μ μΆ©μ‘±μν΄:
- λͺ¨λ νμΌλ§λ€ μ€μ½νκ° μ€μ λλ―λ‘ κ° λͺ¨λμ λΆλ¬μ€λ μμ νμΌ λ΄μμ λ³μ μΆ©λμ΄ μλ€λ©΄ μ΄ μμ€ν μμλ λ³μ μΆ©λμ΄ μΌμ΄λμ§ μλλ€.
- νμΌ λ©μ΄λ¦¬λ₯Ό μν¬ν°νλ κ² μλλΌ νμν ν¨μλ λ³μλ₯Ό κ°μ Έμ¬ μ μκ² λμλ€.
module.exports
,require
λ₯Ό ν΅ν΄ μμ‘΄λμ΄μλ νμΌ, ν¨ν€μ§λ€μ κ΄λ¦¬ν μ μκ² λμλ€.
λ¬Έμ μ :
- μλ²μ¬μ΄λμμλ jsνμΌλ§λ€ λ
립μ μΈ μ€μ½νλ₯Ό λ§λ€κΈ° λλ¬Έμ μ μ 곡κ°κ³Ό λΆλ¦¬κ° λμ§λ§ λΈλΌμ°μ μμ λμν λλ νμΌλ§λ€ λ¨μΌν μ€μ½νκ° μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ
<script>
νκ·Έλ‘ λ¨μν js νμΌμ λ‘λνλ©΄ μ¬μ ν μ μλ³μκ° μ€μΌλλ€ - λΈλΌμ°μ μμ λ€νΈμν¬λ₯Ό ν΅ν΄ νμν λͺ¨λμ λ΄λ €λ°μ λμ λΈλΌμ°μ κ° μ무μΌλ νμ§ μλλ€λ λ¬Έμ μ μ΄ μλ€. (μ¬μ©μ κ²½ν λμκ² λ§λ€ μ μμ)
- CommonJSλ blocking λ°©μμ΄λΌ λΈλΌμ°μ μμ νμ©ν μ λ무 λ리λ€λ λ¨μ μ΄ μλ€.
// main.js const foo = require('foo.js'); const bar = require('bar.js');require ν¨μκ° blocking ν¨μμ΄κΈ° λλ¬Έμ μ μ½λμμ μλ°μ€ν¬λ¦½νΈ μΈν°ν리ν°λ require('foo.js')λΌμΈμμ μ μ > λ©μΆμλ€κ° 컨ν μ€νΈλ₯Ό λ°κΏ require() μμ κ³Όμ μ λͺ¨λ λλ΄κ³ κ·Έ 리ν΄κ°μ fooμ λ°κ³ λμμΌ κ·Έ λ€μ μ½λλΌμΈμ μ½λλ€.
μΉ λΈλΌμ°μ μμλ μλ²μ requestλ₯Ό λ λ € νμΌλ€μ μ½μ΄μ€κ² λλλ° μ΄λ μλ μΈ‘λ©΄μμ λ¬Έμ κ° μλ€.
foo.js
λ₯Ό requireν > λ HTTP request ν λ²,bar.js
λ₯Ό requireν λ HTTP request ν λ² νκ² λμ΄ ν΅μ λΉμ©μ΄ λ§μ΄ λ°μνλ€. μ΄κ²μ΄ > μλ²μ¬μ΄λ λ°©μμ μΉ νκ²½μ μ μ©νκΈ° μ΄λ €μ΄ μ΄μ λ€.λ€νν 2008λ μ V8 ν¬λ‘¬ μμ§μ΄ λμ λμ΄ event loopλ₯Ό μ¬μ©νλ©΄μ, asyncνκ² λμκ° μ μλ νκ²½μ΄ λ§λ€μ΄μ‘λ€. async νλ€λ κ²μ non-blockingμ΄λΌμ μ€νλ λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ ν¨μλ₯Ό νμ λ΄μ μ¬λ¬ κ°μ μμ λ€μ λμμ μΌλ‘ μννλ€λ κ²μ΄λ€.
- λͺ¨λν λ°©λ²:
module.exports
- λͺ¨λ λΆλ¬μ€λ(μ΄μ©) λ°©λ²:
require
// foo.js
module.exports.foo = function () {
// ...
};
// bar.js
var foo = require('./foo.js').foo;
μμ
Asynchronous Module Definition
λΉλκΈ° μν©μμλ μλ°μ€ν¬λ¦½νΈ λͺ¨λμ μ°κΈ° μν΄ CommonJSμμ λ Όμνλ€ ν©μμ μ μ°Ύμ§ λͺ»νκ³ λ°λ‘ λ 립ν κ·Έλ£Ήμ΄λ€. λΈλΌμ°μ μ non-blocking, async μ±μ§μ μ κ·Ή νμ©ν΄ μΉμ μ ν©ν λͺ¨λν μμ€ν μ λ§λλ €λ λͺ©νλ₯Ό κ°μ§κ³ μμλ€.
- AMDλ₯Ό ꡬνν λνμ μΈ λͺ¨λμμ€ν
μ
Require.js
- μλ°μ€ν¬λ¦½νΈλ₯Ό μΉ λΈλΌμ°μ μμ μ°λ κ²μ μ€μ μ λλ€.
- λΈλΌμ°μ μμ λ€νΈμν¬λ₯Ό ν΅ν΄ λͺ¨λμ λ΄λ € λ°λ λ μ₯μ μ΄ λ§λ€. λΈλΌμ°μ μμ λΉλκΈ° λͺ¨λ λ‘λ©λ°©μμΌλ‘ ꡬνμ ν΄λμκΈ° λλ¬Έ.
define
ν¨μ(AMD λ§μ νΉμ§)λ₯Ό μ¬μ©νμ¬ μ€μ½νλ₯Ό λΆλ¦¬νλ€. μ΄ ν¨μλ λͺ¨λ λ°°μ΄μ μΈμλ‘ κ°μ§κ³ λ‘λλ λͺ¨λμ μ½λ°±ν¨μμ μ λ¬νλ€.define
ν¨μμ 리ν΄κ°μ΄ 곧 exports μμ±μ΄ λλ€.- CommonJSμ κ°μ΄
exports
κ°μ²΄λ‘ λͺ¨λμ μ μνκ³ λͺ¨λμ μ¬μ©ν λλrequire
ν¨μ μ¬μ©νλ€.require
ν¨μλ μμ‘΄ κ΄κ³λ₯Ό νλ¨ν΄ μ’ μμ±μ΄ μλ κ²μ λ¨Όμ λ‘λνκΈ° λλ¬Έμ μμ‘΄μ± λ¬Έμ λ μΌμ λΆλΆ ν΄κ²°ν μ μλ€.
λ¬Έμ μ :
- μλ²μ¬μ΄λμμ μ¬μ©νλ €κ³ λ§λ ν¨μλ₯Ό λΈλΌμ°μ μμ μ°λ €λ©΄ AMD νμμ λ§μΆ° λ€ λ°κΏμ£Όμ΄μΌ νλ λ²κ±°λ‘μμ΄ μλ€.
- AMDκ° μ μλμ§ μΌλ§ λμ§ μμ npm(Node Package Manager)μ΄ λ±μ₯νκ³ λ§μ κ°λ°μλ€μ΄ node.jsμ (λλΆλΆ) CommonJS νμμΌλ‘ λ§λ€μ΄μ§ λ©μ§? λͺ¨λλ€μ μ λ‘λνκΈ° μμνλ©΄μ CommonJS νμμΌλ‘ λ§λ μ½λλ₯Ό AMD μ€νμΌλ‘ λ³νν΄μΌν μν©λ€μ΄ λ§μμ‘λ€. (μλ²μ¬μ΄λμ μ½λ λ°λ‘, AMD νμ μ½λ λ°λ‘ μ΄λ κ² μ§λ κ³Όμ μ νλλ‘ μ€μ΄κ³ μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λͺ¨λ λ²λ€λ¬κ° λ±μ₯νλ€.)
μμ
- ES6λΆν° μλ°μ€ν¬λ¦½νΈ λͺ¨λνλ₯Ό μ§μνλ€. (
import/export
λ₯Ό μ¬μ©νλ λͺ¨λνμ νμ€) - νμ¬ ES6 λͺ¨λμ μ§μνμ§ μλ λΈλΌμ°μ λ€λ μμ΄ SystemJS, RequireJS λ±μ λͺ¨λ λ‘λ λλ Webpack λ±μ λͺ¨λ λ²λ€λ¬λ₯Ό λ§μ΄ μ¬μ©νλ€.
- ECMA(European Computer Manufacturer's Association) International μμ μ ν μλ°μ€ν¬λ¦½νΈ νμ€μ΄
ECMAScript
μ΄λ€.- ES6(ECMAScript 6)μ ECMA 2015λΌκ³ λ λΆλ¦°λ€.
ES6μμ νμ€νλ λͺ¨λ κ°μ Έμ€κΈ°λ λ€μκ³Ό κ°λ€. main.js
μμ foo.js
νμΌμ μλ foo
ν¨μλ₯Ό κ°μ Έμ€λ μ½λμ΄λ€.
// main.js
import foo from 'foo';
foo();
// foo.js
function foo() {
console.log('foo');
}
export default { foo };
- λ 립λ μ€μ½νκ° μ‘΄μ¬ν΄μΌ νλ€.(μ μ λ³μ μμμ λλ½νμ§ μλλ‘!)
- νμΌ λ©μ΄λ¦¬λ νλ μ λΆλ₯Ό λͺ¨λλ‘ κ°μ Έμ€λ κ²μ΄ μλλΌ(ex.
<script>
νκ·Έλ‘ λͺ¨λμ κ°μ Έμ€λ κ²½μ°) νμΌμμ ν¨μλ κ°μ²΄λ₯Ό κ°μ Έμ¬ μ μμ΄μΌ νλ€.(κ°λ μ±μ λμ)- μμ‘΄μ± κ΄λ¦¬κ° μμν΄μΌ νλ€.(κ·ΈλμΌ νμ₯μ΄ μ½λ€)
ES6λΆν° μ§μνλ μλ°μ€ν¬λ¦½νΈ μ체 λ΄μ₯ λͺ¨λ μμ€ν
λ€μ μμ μ½λλ€μ 보μ.
μλ μ½λλ HTML νμΌμμ λͺ¨λμ κ°μ Έμ€λ μ½λλ₯Ό μμ±ν κ²μ΄λ€.
<!-- π index.html -->
<!-- HTML νμΌμμ λͺ¨λ κ°μ Έμ€κΈ° -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Module test</title>
<!-- 404 μλ¬ λλ¬Έμ λ£μ΄μ€ μ½λ -->
<link rel="shortcut icon" href="#" />
<script type="module" src="lib.mjs"></script>
<script type="module" src="app.mjs"></script>
</head>
<body></body>
</html>
ES6 λͺ¨λ νμΌμ νμ₯μλ λͺ¨λμΈ κ²μ λΆλͺ
ν νκΈ° μν΄ .mjs
νμ₯μλ₯Ό μ¬μ©νλ€.
export
λͺ¨λ μ€μ½νμμ λͺ¨λ λ°μΌλ‘ μ΄λ¦λ€μ λ΄λ³΄λΌ λλ export
ν€μλλ₯Ό μ¬μ©νλ€.
// π module.mjs
export const birthday = 'π°';
export function collabo(a, b) {
return `${a} + ${b}`;
}
export class Person {
constructor(name) {
this.name = name;
}
}
// + λͺ¨λλ°μΌλ‘ λ΄λ³΄λΌ λ νλ²μ λ΄λ³΄λ΄κ³ μΆλ€λ©΄ μ μ½λμμ export ν€μλλ₯Ό μ κ±°ν λ€μ, μΆκ°λ‘ λ€μκ³Ό κ°μ΄ μ¨μ€λ€.
export { birthday, collabo, Person };
import
λͺ¨λμ κ°μ Έμ¬ λλ import
ν€μλλ₯Ό μ¬μ©νλ€.
// π app.mjs
// κ²½μ° 1
import { birthday, collabo, Person } from './lib.mjs';
console.log(birthday); // π°
console.log(collabo('π₯', 'π₯')); // π₯ + π₯
console.log(new Person('yurim')); // Person { name: "yurim" }
// κ²½μ° 2
// μ μ½λλ₯Ό μλ μ½λμ²λΌ μμ±νμ¬ νλ²μ λͺ¨λμ κ°μ Έμ¬ μλ μμ
import * as lib from './lib.mjs';
console.log(lib.birthday);
console.log(lib.collabo('π₯', 'π₯'));
console.log(new lib.Person('yurim'));
// κ²½μ° 3
// λͺ¨λμ κ°μ Έμ€λ©° μ΄λ¦ λ³κ²½λ κ°λ₯
import { birthday as bd, collabo as mix, Person as P } from './lib.mjs';
console.log(bd);
console.log(mix('π₯', 'π₯'));
console.log(new P('yurim'));
index.html νμΌ μ€ν κ²°κ³Ό
export default
νλμ λ°μ΄ν°λ§ export ν κ²½μ° default
ν€μλλ₯Ό μ¬μ©νλ€.
default
ν€μλλ₯Ό μ¬μ©ν κ²½μ°, var, let, const μ¬μ©μ΄ λΆκ°νλ€.
default
λ‘ exportλ λͺ¨λμ importμ {} μμ΄ μμ μ΄λ¦μΌλ‘ κ°μ Έλ€ μ΄λ€.
// νλμ λ°μ΄ν°λ§ exportν κ²½μ° default μ¬μ©
export default functon(x){
return x + x;
}
// default ν€μλλ₯Ό μ¬μ©ν λͺ¨λμ κ°μ Έμ€λ μ
import double from './lib.mjs';
console.log(double(2)); // 4
- https://webfirewood.tistory.com/105
- https://yonghyunlee.gitlab.io/front/webpack/
- https://poiemaweb.com/es6-module
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Modules
- JS) λͺ¨λμ λν μ΄ν΄μ μ¬μ©λ²
- ECMAScript) AMD, CommonJSμ JavaScript λͺ¨λν
- JavaScript)Module(CommonJS-Nodejs, RequireJS-AMD, ESM, UMD)
- λ‘컬μμ CORS policy κ΄λ ¨ μλ¬κ° λ°μνλ μ΄μ
νμλ€ κ²°κ³Όλ¬Ό λ° μ§μμλ΅&μ½λ리뷰
step 9, 10 https://github.com/pul8219/TIL/blob/master/Documents/FrontEnd-Study/step9_js_module.md
step9
step10
λμΌν λͺ¨λμ΄ μ¬λ¬ κ³³μμ μ¬μ©λλλΌλ λͺ¨λμ μ΅μ΄ νΈμΆ μ λ¨ νλ²λ§ μ€νλλ€.
type="module" μ νΉμ§
> μ§μ°μ€ν
import.meta
μ€λͺ
λΆλΆμ μ½λλ΄μ 보면 import.meta.urlμ μΈμμ μΈλΌμΈ μ€ν¬λ¦½νΈκ° μμΉν΄ μλ html νμ΄μ§μ URL
μ΄λΌ μμ±λμ΄ μλλ° νΉμ μΈλΌμΈ μ€ν¬λ¦½νΈκ° 무μμΈκ°μ?.. κ²°κ΅ μ΄ alert λ¬Έμμ μΆλ ₯λλ κ²°κ³Όκ° λ¬΄μμΈμ§ μ λͺ¨λ₯΄κ² μ΄μ μ§λ¬Έλ립λλ€.
step9 https://github.com/quavious/hell_script/blob/master/chapter10.js
step10 https://github.com/quavious/hell_script/blob/master/chapter9.js
μ μ½μμ΅λλ€. μ μ μ νΉμ ν λμμ λͺ¨λμ΄ μλλλλ‘ νμ¬ λͺ¨λ λ‘λ μκ°μ μ€μ΄λ λΆλΆμ μ 리νμ§ λͺ»νλλ° λμμ΄ λμ΅λλ€.!!
λͺ¨λμ κΈ°λ³Έμ μΌλ‘ μ격λͺ¨λμ΄λ€.
const module... λ° import module... μ κ°μ μ μ import λ¬Έμ λͺ¨λ λͺ¨λμ λΆλ¬μ€κ³ λμ μ½λκ° μ€νλλ€. λ°λλ‘ μ μ μ νΉμ ν λμμ λͺ¨λμ΄ μλλλλ‘ ν μ μλ€. μ 체 λͺ¨λ λ‘λ μκ°μ μ€μΌ μ μλ€.
//<script type="module">
(async () => {
const foo = './lib.mjs';
const { func1, func2 } = await import(foo);
await func2();
func1();
const { func3 } = require('./onemodule.js');
await func3();
console.log('Module loaded dynamically');
})();
//</script>
νμ¬ μΉ λΈλΌμ°μ λ ES6 λͺ¨λμ μ§μνκ³ μμ§ μλ€.
script νκ·Έμ type="text/module"μ λͺ
μΈνκ±°λ
Webpack, Browserify λ±μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μΌ νλ€.
μ)
Reactλ create-react-appμΌλ‘ μ€νν΄μ 리μ‘νΈ νλ‘μ νΈλ₯Ό μμ± ν μ΄μ΄λ³΄μμ λ
Webpack λΌμ΄λΈλ¬λ¦¬κ° μ€μΉλμ΄ μλ κ²μ νμΈν μ μλ€.
step10
step9 https://github.com/khw970421/js-interview/blob/master/const/project9.md
step10 https://github.com/khw970421/js-interview/blob/master/const/project10.md