π 곡λΆνκ² λ κ³κΈ°
require μ import μ μ°¨μ΄κ° κΆκΈν΄μ ν보λ€κ° ... CommonJS μ ECMAScript κΉμ§ μ΄ν΄λ³΄κ² λμλ€.
νλ©΄μ λλκ±°μ§λ§, μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬λνλ κ°λ°μκ° λ§μ κ² κ°λ€.
μλ°μ€ν¬λ¦½νΈμ 무νν μ μ¬λ ₯μ λλΌλ©΄μλ, κ·Έκ±Έ νμ₯μν€λ κ°λ°μλ€μ΄ μκΈ°μ λ΄κ° μ΄λ κ² νΈνκ²
μ½λ©μ ν μ μλ κ² μλκ° μΆλ€ γ
π CommonJS
μλ°μ€ν¬λ¦½νΈ μΈμ΄μ νλ μμμ λ λνκΈ° μν΄ μ‘°μ§λ κ·Έλ£Ήμ΄λ€.
λΈλΌμ°μ μ΄μΈμλ
β Server-side JS applications
β CLI tools
β Desktop GUI-based applications
β Hybrid applications
λ± λ€μν μ΄ν리μΌμ΄μ μ μλ°μ€ν¬λ¦½νΈ μΈμ΄κ° μ°μΌ μ μλλ‘ νμ€νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡νλ€.
( Python, Ruby, Java μ κ°μ΄ λΌμ΄λΈλ¬λ¦¬κ° νλΆν μΈμ΄λ₯Ό λ³Έλ°μ
λ€μν μλ°μ€ν¬λ¦½νΈ APIλ₯Ό λ§λ€μ΄ μ 곡νλ κ² κ°λ€ )
π Server-side JS μ£Όμ μμ
μλ°μ€ν¬λ¦½νΈκ° λΈλΌμ°μ μ© μΈμ΄μΌ λ κ°μ‘λ νκ³μ λ€
πΉ μλ‘ νΈνλλ νμ€ λΌμ΄λΈλ¬λ¦¬κ° μλ€.
πΉ DBλ₯Ό μ°κ²°ν μ μλ νμ€ μΈν°νμ΄μ€κ° μλ€.
πΉ λ€λ₯Έ λͺ¨λμ μ½μ νλ νμ€μ μΈ λ°©λ²μ΄ μλ€.
πΉ μ½λλ₯Ό packaging νκ³ , λ°°ν¬νκ³ , μ€μΉνλ λ°©λ²μ΄ νμνλ€.
πΉ dependency λ¬Έμ λ₯Ό ν΄κ²°νλ κ³΅ν΅ ν¨ν€μ§ λͺ¨λ μ μ₯μκ° νμνλ€.
--> κ²°κ΅ " λͺ¨λν " κ° νμνλ€.
--> CommonJS μ μ£Όμ λͺ μΈλ μ΄ λͺ¨λλ€μ μ΄λ»κ² μ μνκ³ ,
μ΄λ»κ² μ¬μ©ν κ²μΈμ§μ λν κ³ λ―Όμ κ²°κ³ΌλΌκ³ ν μ μλ€.
π λͺ¨λν
πΈ Scope : λͺ¨λ λͺ¨λμ κ°μμ λ 립μ μΈ μ€ν μμμ΄ μμ΄μΌ νλ€.
// fileA.js
var a = 5;
var b = 7;
// fileB.js
var a = 10;
var b = 1;
// μλ°μ€ν¬λ¦½νΈ μΈμ΄λ νμΌλ§λ€ λ
립μ μΈ μ€μ½νκ° μκΈ° λλ¬Έμ,
// νμΌ νλμ λͺ¨λ νλλ₯Ό μμ±νλ©΄ λ€λ₯Έ νμΌμ μλ λͺ¨λκ³Ό μΆ©λμ΄ μκΈ°μ§ μλλ€.
// κ°μ μ΄λ¦μ μ μ λ³μλ₯Ό λ€λ₯Έ νμΌμ κ°κ° μμ±νμ λ μ€λ₯κ° μκΈ°μ§ μμ !
πΈ Definition : λͺ¨λ μ μλ exports κ°μ²΄λ₯Ό μ΄μ©νλ€.
// fileA.js
var a = 5;
var b = 7;
exports.sum = function(num1, num2){
return a + b + num1 + num2;
};
// fileB.js
var a = 10;
var b = 1;
// fileA.js μ²λΌ exportλͺ¨λ(μ μ κ°μ²΄)μ μ¬μ©νκ² λλ©΄, ν΄λΉ λͺ¨λμ΄ μΈλΆλ‘ 곡κ°λλ€.
// λ€λ₯Έ νμΌλ€μ 곡κ°λ μ΄ λͺ¨λμ λΆλ¬μ μ¬μ©ν μ μκ² λλ€.
πΈ Usage : λͺ¨λ μ¬μ©μ require ν¨μλ₯Ό μ΄μ©νλ€.
// fileA.js
var a = 5;
var b = 7;
exports.sum = function(num1, num2){
return a + b + num1 + num2;
};
// fileB.js
var a = 10;
var b = 1;
var moduleA = require("fileA");
moduleA.sum(a, b); // 5+7+10+1 = 23
// require() ν¨μλ₯Ό μ΄μ©ν΄ exportsλ‘ μΈν΄ 곡κ°λ λͺ¨λμ λΆλ¬μ¬ μ μλ€.
// ν¨μ sumμ μ μΈλ νκ²½μ κΈ°μ΅νκΈ° λλ¬Έμ fileAμ aμ b κ°μ κ°μ Έμ¬ μ μλ€.
β» μμ¦ var λ³μ μ μΈ ν€μλλ μ μμ°μ§λ§, μ μ λ³μμμ κ°μ‘°νκΈ° μν΄ μ¬μ©νλ€ !
μ΄μ²λΌ CommonJS λ νμ¬ μ€μ§μ μΈ νμ€ μν μ νκ³ μλ€.
λνμ μΌλ‘ Node.js κ° μ΄ λͺ
μΈλ₯Ό λ°λ₯΄κ³ μλ€. ^___^
π ECMAScript
Ecma international μ μν΄ μ μ λ ECMA-262 κΈ°μ κ·κ²©μ μν΄ μ μλ λ²μ© μ€ν¬λ¦½νΈ μΈμ΄μ΄λ€.
ECMAScript specification ( ECMAScript μ¬μ ) μ΄λΌκ³ λ λΆλ₯Έλ€.
μ€ν¬λ¦½νΈ μΈμ΄κ° μ€μν΄μΌνλ κ·μΉ, μΈλΆ μ¬ν, μ§μΉ¨μ μ 곡νλ€.
μλ°μ€ν¬λ¦½νΈλ μ΄ ECMAScript μ¬μμ μ€μνλ λ²μ© μ€ν¬λ¦½νΈ μΈμ΄μ΄λ€.
π μ¬μ© μμ
μλ°μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½κ³ μ€ννλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ μ’ λ₯μλ
β ꡬκΈμ V8,
β λͺ¨μ§λΌ νμ΄μ΄νμ€μ SpiderMonkey,
β λ§μ΄ν¬λ‘μννΈ μ£μ§μ Chakra λ±μ΄ μλ€.
π
κ° μμ§μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ μΈμ΄λ₯Ό μ½κ³ ν΄μν μ μμ§λ§ μν λ₯λ ₯ (Performance) μ΄ μ°¨μ΄λλ€.
μλ°μ€ν¬λ¦½νΈ μΈμ΄λ₯Ό μ²λ¦¬νλ λ‘μ§μ΄ κ°μ λ€λ₯΄κΈ° λλ¬Έμ΄λ€ !!
π
λν κ° μμ§μ΄ μ§μνλ ECMAScript μ¬μμ΄ λ€λ₯΄λ€.
λκ°, μΌλ§λ μ΅μ λ²μ μ μ§μνλμ§, ν λμ λ€μμ±μ μΆκ΅¬νλ μ§μ λ°λΌ ν΄μμ νμ΄ λ¬λΌμ§λ€.
κ·Έλμ " ECMAScript νΈνμ± " μ΄λΌλ λ¨μ΄κ° λμ€λ κ²μ΄λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λ΄λΉνλ νμ¬μ μ λ°μ΄νΈμ λ°λΌ μΈ μ μλ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ μ’ λ₯μ μμ΄ λ¬λΌμ§λ€ γ γ wow
" μ΄ λΈλΌμ°μ λ μ΄λ€ λ²μ μ ECMAScript λ₯Ό μ§μνλμ ? "
" ECMAScript μ μ΄λ€ κΈ°λ₯μ μ§μνλμ ? "
λ±μ μ§λ¬Έμ ν μ μλ€ !!
.
.
.
.
π₯ ECMAScript νΈνμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λμ¨κ² Babel ... ππͺ
π require μ import μ°¨μ΄ ?
μλ κ·Έλμ require λ import μ μ°¨μ΄κ° λλꡬ ..!
require μ CommonJS μ ν¨μ
import λ ES6 μ ν€μλ
β require
const mysql = require("mysql");
CommonJS μ ν¨μλ‘, μνλ λͺ¨λμ λΆλ¬μ¬ μ μλ€.
ES6 μ¬μμ μ§μνμ§ μλ νκ²½μ΄κ±°λ, Babel κ³Ό κ°μ μΈν°ν리ν°κ° μμ λ require μ μ¬μ©ν΄μΌ νλ€.
β import
import mysql from "mysql"
ES6 μ ν€μλλ‘, μνλ λͺ¨λμ λΆλ¬μ¬ μ μλ€.
π μΆκ°λ‘ 곡λΆν κ²
CommonJS μ ES6 λ κ·Όλ³Έμ μΌλ‘ λͺ¨λμ λ΄λ³΄λ΄κ³ λΆλ¬μ€λ λ°©μμ΄ λ€λ₯΄λ€.
ES6 μ CommonJS μμ μ§μνμ§ μλ Named Parameter κΈ°λ₯λ μμΌλ, λ λ°©μμ μ°¨μ΄μ μ΅νλμ κ².
μ°Έμ‘°
https://www.daleseo.com/js-module-import/
https://d2.naver.com/helloworld/12864
https://wormwlrm.github.io/2018/10/03/What-is-the-difference-between-javascript-and-ecmascript.html
'Back-end > Node.js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Node.js npmκ³Ό package.json (0) | 2021.08.05 |
---|---|
Node.js λ λμΌ? μΌλ¨ μ€μΉν΄λ΄ (0) | 2021.08.04 |
λκΈ