Skip to content
iforget edited this page May 1, 2020 · 2 revisions

μ •μ˜ 및 μž₯점

ν”„λ‘œκ·Έλž¨/λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ—°κ΄€λœ 객체, ν•¨μˆ˜, μ»΄ν¬λ„ŒνŠΈλ“±μ„ ν•¨κ»˜ λͺ¨μ•„μ„œ 잘게 λ‚˜λˆˆ 것

  • μž₯점
    • λͺ¨λ“ˆ 각자의 μŠ€μ½”ν”„λ₯Ό κ°€μ§€λ―€λ‘œ μ „μ—­λ³€μˆ˜μ˜ μ‚¬μš©μ„ 쀄일 수 μžˆλ‹€
    • μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ΄ 높아짐
    • μ½”λ“œλ₯Ό μ—¬λŸ¬ λͺ¨λ“ˆλ‘œ λΆ„λ¦¬ν•˜μ—¬ κΉ”λ”ν•˜κ²Œ κ΅¬νšν•˜κ³  쑰직화
    • νŠΉμ • λͺ¨λ“ˆμ— 버그가 ν•œμ •λ˜λ―€λ‘œ 디버깅이 쉽닀

기쑴방법

  • IIFE
  • AMD : μ›ΉνŽ˜μ΄μ§€ λ‘œλ”©μ„ μ°¨λ‹¨ν•˜μ§€ μ•Šκ³  λΉ„λ™κΈ°μ μœΌλ‘œ λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•  수 있게 섀계. λŒ€ν‘œμ  라이브러리 RequireJS
  • CommonJS : λ…Έλ“œJSμ—μ„œ λͺ¨λ“ˆμ„ κ΅¬ν˜„ν•˜λŠ” λͺ…μ„Έ. 각 λͺ¨λ“ˆμ„ κ°œλ³„ 파일둜 κ΅¬ν˜„ν•˜λ©° λΉ„λ™κΈ°μ μœΌλ‘œ μž„ν¬νŠΈν•œλ‹€
  • UMD(만λŠ₯ λͺ¨λ“ˆ μ •μ˜): λͺ¨λ“ˆ λͺ…μ„Έ(IIFE, AMD, CommonJS)에 ꡬ애받지 μ•Šκ³  λͺ¨λ“ˆμ„ ν”„λ‘œκ·Έλž¨μ— μž„ν¬νŠΈν•  수 있게 ν•΄μ€Œ

ES6 λͺ¨λ“ˆ

export λ¬Έ : λ³€μˆ˜, ν•¨μˆ˜, 클래슀 등을 μ΅μŠ€ν¬νŠΈν•  수 있음

  • export문은 λͺ¨λ“ˆ μ–΄λ””μ—μ„œλ‚˜ μ“Έ 수 있음. λͺ¨λ“ˆ λλΆ€λΆ„μ—λ§Œ 써야 ν•˜λŠ” 것은 μ•„λ‹˜
  • λͺ¨λ“ˆ λ‚΄μ—μ„œ export 문은 λ¬΄μ œν•œ μ‚¬μš©ν•  수 μžˆλ‹€
  • λͺ¨λ“ˆ κ΅¬μ‘°λŠ” 정적이라 쑰건문에 μ‚¬μš©ν•  수 μ—†μŒ
  • λ˜‘κ°™μ€ λ³€μˆ˜λͺ…/별λͺ…을 계속 읡슀포트 ν•  μˆ˜λŠ” μ—†κ³  λ™μΌν•œ λ³€μˆ˜λ₯Ό λ‹€λ₯Έ 별λͺ…μœΌλ‘œ μ—¬λŸ¬λ²ˆμ€ κ°€λŠ₯ λͺ¨λ“ˆ μ½”λ“œλŠ” strict mode둜 μ‹€ν–‰

import λ¬Έ

  • μž„ν¬νŠΈν•  λ³€μˆ˜λͺ…κ³Ό λͺ¨λ“ˆ λ‚΄ μƒλŒ€ 경둜둜 이뀄짐
  • import λ³€μˆ˜ from "경둜"
  • νŠΉμ§•
    • import 문은 읡슀포트된 λ³€μˆ˜μ˜ 사본을 μž„ν¬νŠΈν•˜λŠ” 것이 μ•„λ‹˜. λͺ¨λ“ˆλ‚΄μ—μ„œ 읡슀포트된 λ³€μˆ˜λ₯Ό 고치면 이 λ³€μˆ˜λ₯Ό μž„ν¬νŠΈν•œ ν”„λ‘œκ·Έλž¨μ—λ„ 반영됨
    • μž„ν¬νŠΈν•œ λ³€μˆ˜λŠ” 읽기 μ „μš©
    • λͺ¨λ“ˆ κ΅¬μ‘°λŠ” 정적이라 쑰건문에 μ‚¬μš©ν•  수 μ—†μŒ
    • μ„±λŠ₯μ΅œμ ν™”μ— 유리 : AMD, CommonJS의 μž„ν¬νŠΈλ³΄λ‹€ λΉ λ₯΄λ‹€.

예제

let LN2 = Math.LN2;
let N10 = Math.LN10;
 
function getLN2(){
    return LN2;
}
 
function getLN10() {
    return LN10;
}
 
export {getLN2, getLN10}
let cos = Math.cos;
let sin = Math.sin;
 
function getCos(value){
    return cos(value);
}
 
function getSin(value){
    return sin(value);
}
 
export {getCos, getSin}
import * as logarithm from 'math_modues/logarithm';
import * as trigonometry from 'math_modues/trigonometry'
 
export default {
    logarithm: logarithm,
    trigonometry: trigonometry
}
import math from 'math';
 
console.log(math.logarithm.getLN10(100));
 
console.log(math.trigonometry.getSin(3));

Clone this wiki locally