JavaScript λͺ¨λ λ²μ κ΄λ¦¬, νΈνμ± κ΄λ¦¬, μ μΈκ³μ μΌλ‘ κ°λ ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ ꡬμΆμ μν λͺ¨λ² μ¬λ‘μ λν μ’ ν© κ°μ΄λμ λλ€.
JavaScript λͺ¨λ λ²μ κ΄λ¦¬: κΈλ‘λ² μνκ³μμ νΈνμ± λ³΄μ₯
JavaScriptκ° μΉ κ°λ° νκ²½μ κ³μ μ§λ°°ν¨μ λ°λΌ μ’ μμ±μ κ΄λ¦¬νκ³ λͺ¨λ κ°μ νΈνμ±μ 보μ₯νλ κ²μ΄ κ°μ₯ μ€μν΄μ§κ³ μμ΅λλ€. μ΄ κ°μ΄λμμλ JavaScript λͺ¨λ λ²μ κ΄λ¦¬, μ’ μμ± κ΄λ¦¬λ₯Ό μν λͺ¨λ² μ¬λ‘, κΈλ‘λ² νκ²½μμ κ°λ ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν μ λ΅μ λν ν¬κ΄μ μΈ κ°μλ₯Ό μ 곡ν©λλ€.
λͺ¨λ λ²μ κ΄λ¦¬κ° μ€μν μ΄μ λ 무μμ λκΉ?
JavaScript νλ‘μ νΈλ μ’ μ’ κ΄λ²μν μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ° λͺ¨λμ μμ‘΄ν©λλ€. μ΄λ¬ν λͺ¨λμ μλ‘μ΄ κΈ°λ₯, λ²κ·Έ μμ λ° μ±λ₯ κ°μ μ΄ μ κΈ°μ μΌλ‘ 릴리μ€λλ©΄μ λμμμ΄ μ§ννκ³ μμ΅λλ€. μ μ ν λ²μ κ΄λ¦¬ μ λ΅μ΄ μμΌλ©΄ λ¨μΌ λͺ¨λμ μ λ°μ΄νΈνλ©΄ μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμ΄ μκΈ°μΉ μκ² μμλμ΄ μ’μ μ€λ¬μ΄ λλ²κΉ μΈμ κ³Ό μ μ¬μ μΈ κ°λ μ€μ§ μκ°μ΄ λ°μν μ μμ΅λλ€.
λ€κ΅μ μ μ μκ±°λ νλ«νΌμ΄ μΌν μΉ΄νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ λ°μ΄νΈνλ μλ리μ€λ₯Ό μμν΄ λ³΄μμμ€. μ λ²μ μμ μ μ ν λ²μ κ΄λ¦¬ μμ΄ μ£Όμ λ³κ²½ μ¬νμ΄ λμ λλ©΄ μ¬λ¬ μ§μμ κ³ κ°μ΄ μ νμ μ₯λ°κ΅¬λμ μΆκ°νκ±°λ, κ±°λλ₯Ό μλ£νκ±°λ, μ¬μ§μ΄ μΉ μ¬μ΄νΈμ μ‘μΈμ€νλ λ° λ¬Έμ κ° λ°μν μ μμ΅λλ€. μ΄λ‘ μΈν΄ μλΉν μ¬μ μ μμ€κ³Ό νμ¬ νν μμμ΄ λ°μν μ μμ΅λλ€.
ν¨κ³Όμ μΈ λͺ¨λ λ²μ κ΄λ¦¬λ λ€μμ μν΄ λ§€μ° μ€μν©λλ€.
- μμ μ±: μ’ μμ±μ μ λ°μ΄νΈν λ μκΈ°μΉ μμ μμ λ°©μ§.
- μ¬νμ±: μ ν리μΌμ΄μ μ΄ λ€μν νκ²½μμ μκ°μ΄ μ§λ¨μ λ°λΌ μΌκ΄λκ² λμνλλ‘ λ³΄μ₯.
- μ μ§ κ΄λ¦¬μ±: μ½λλ² μ΄μ€λ₯Ό μ λ°μ΄νΈνκ³ μ μ§ κ΄λ¦¬νλ νλ‘μΈμ€ κ°μν.
- νμ : λμΌν νλ‘μ νΈμ μ¬λ¬ λΆλΆμμ μμ νλ κ°λ°μ κ°μ μνν νμ μ΄μ§.
μλ§¨ν± λ²μ κ΄λ¦¬(SemVer): μ κ³ νμ€
μλ§¨ν± λ²μ κ΄λ¦¬(SemVer)λ μννΈμ¨μ΄ 릴리μ€μ λ³κ²½ νΉμ±μ λͺ
ννκ³ μΌκ΄λ λ°©μμΌλ‘ μ λ¬νλ λ리 μ±νλ λ²μ κ΄λ¦¬ 체κ³μ
λλ€. SemVerλ MAJOR.MINOR.PATCH νμμ μΈ λΆλΆμΌλ‘ ꡬμ±λ λ²μ λ²νΈλ₯Ό μ¬μ©ν©λλ€.
- MAJOR: νΈνλμ§ μλ API λ³κ²½ μ¬νμ λνλ λλ€. νΈνλμ§ μλ API λ³κ²½ μ¬νμ λ§λ€λ©΄ MAJOR λ²μ μ μ¦κ°μν€μμμ€.
- MINOR: κΈ°λ₯μ΄ μ΄μ λ²μ κ³Ό νΈνλλ λ°©μμΌλ‘ μΆκ°λμμμ λνλ λλ€. μ΄μ λ²μ κ³Ό νΈνλλ λ°©μμΌλ‘ κΈ°λ₯μ μΆκ°νλ©΄ MINOR λ²μ μ μ¦κ°μν€μμμ€.
- PATCH: μ΄μ λ²μ κ³Ό νΈνλλ λ²κ·Έ μμ μ λνλ λλ€. μ΄μ λ²μ κ³Ό νΈνλλ λ²κ·Έ μμ μ λ§λ€λ©΄ PATCH λ²μ μ μ¦κ°μν€μμμ€.
μλ₯Ό λ€μ΄ 1.2.3μΌλ‘ λ²μ μ΄ μ§μ λ λͺ¨λμ λ€μμ λνλ
λλ€.
- μ£Ό λ²μ : 1
- λΆ λ²μ : 2
- ν¨μΉ λ²μ : 3
SemVer λ²μ μ΄ν΄
package.json νμΌμμ μ’
μμ±μ μ§μ ν λ SemVer λ²μλ₯Ό μ¬μ©νμ¬ νμ© κ°λ₯ν λͺ¨λ λ²μ μ μ μν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μμ μ±μ νμμ±κ³Ό μλ‘μ΄ κΈ°λ₯ λ° λ²κ·Έ μμ μ μ΄μ μ μ»μΌλ €λ μꡬ μ¬μ΄μ κ· νμ λ§μΆ μ μμ΅λλ€.
λ€μμ λͺ κ°μ§ μΌλ°μ μΈ SemVer λ²μ μ°μ°μμ λλ€.
^(μΊλΏ): 맨 μΌμͺ½μ 0μ΄ μλ μ«μλ₯Ό μμ νμ§ μλ μ λ°μ΄νΈλ₯Ό νμ©ν©λλ€. μλ₯Ό λ€μ΄^1.2.3μ1.x.xλ‘μ μ λ°μ΄νΈλ νμ©νμ§λ§2.0.0μΌλ‘λ νμ©νμ§ μμ΅λλ€.~(νΈλ): λΆ λ²μ μ΄ μ§μ λ κ²½μ° λ§¨ μ€λ₯Έμͺ½ μ«μμ λν μ λ°μ΄νΈλ₯Ό νμ©ν©λλ€. μλ₯Ό λ€μ΄~1.2.3μ1.2.xλ‘μ μ λ°μ΄νΈλ νμ©νμ§λ§1.3.0μΌλ‘λ νμ©νμ§ μμ΅λλ€.~1κ³Ό κ°μ΄ μ£Ό λ²μ λ§ μ§μ νλ©΄>=1.0.0 <2.0.0κ³Ό λμΌνκ²2.0.0κΉμ§μ λ³κ²½ μ¬νμ νμ©ν©λλ€.>,>=,<,<=,=: λΉκ΅ μ°μ°μλ₯Ό μ¬μ©νμ¬ λ²μ λ²μλ₯Ό μ§μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄>=1.2.0 <2.0.0μ1.2.0(ν¬ν¨)κ³Ό2.0.0(μ μΈ) μ¬μ΄μ λ²μ μ νμ©ν©λλ€.*(λ³ν): λͺ¨λ λ²μ μ νμ©ν©λλ€. μ΄λ μΌλ°μ μΌλ‘ μμΈ‘ν μ μλ λμμ μ΄λν μ μμΌλ―λ‘ κΆμ₯λμ§ μμ΅λλ€.- λ²μ κ΅¬μ± μμμ
x,X,*: λΆλΆ λ²μ μλ³μλ₯Ό μ§μ ν λx,Xλλ*λ₯Ό μ¬μ©νμ¬ "λͺ¨λ "μ λνλΌ μ μμ΅λλ€. μλ₯Ό λ€μ΄1.x.xλ>=1.0.0 <2.0.0κ³Ό λμΌνκ³1.2.xλ>=1.2.0 <1.3.0κ³Ό λμΌν©λλ€.
μ:
package.json νμΌμμ:
{
"dependencies": {
"lodash": "^4.17.21",
"react": "~17.0.0"
}
}
μ΄ κ΅¬μ±μ νλ‘μ νΈκ° 4λ‘ μμνλ λͺ¨λ λ²μ μ lodash(μ: 4.18.0, 4.20.0) λ° react λ²μ 17.0μ λͺ¨λ ν¨μΉ λ²μ (μ: 17.0.1, 17.0.2)κ³Ό νΈνλ¨μ μ§μ ν©λλ€.
ν¨ν€μ§ κ΄λ¦¬μ: npm λ° Yarn
npm(Node Package Manager)κ³Ό Yarnμ JavaScriptμμ κ°μ₯ μΈκΈ° μλ ν¨ν€μ§ κ΄λ¦¬μμ λλ€. μ΄λ₯Ό ν΅ν΄ νλ‘μ νΈμμ μ’ μμ±μ μ€μΉ, κ΄λ¦¬ λ° μ λ°μ΄νΈνλ νλ‘μΈμ€λ₯Ό κ°μνν μ μμ΅λλ€.npm
npmμ Node.jsμ κΈ°λ³Έ ν¨ν€μ§ κ΄λ¦¬μμ λλ€. npm λ μ§μ€νΈλ¦¬, μ¦ μ€ν μμ€ JavaScript ν¨ν€μ§μ λ°©λν 리ν¬μ§ν 리μ μνΈ μμ©νκΈ° μν λͺ λ Ήμ€ μΈν°νμ΄μ€(CLI)λ₯Ό μ 곡ν©λλ€.
μ£Όμ npm λͺ λ Ή:
npm install:package.jsonνμΌμ μ μλ μ’ μμ±μ μ€μΉν©λλ€.npm install <package-name>: νΉμ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.npm update:package.jsonνμΌμ μ§μ λ SemVer λ²μλ₯Ό μΆ©μ‘±νλ μ΅μ λ²μ μΌλ‘ ν¨ν€μ§λ₯Ό μ λ°μ΄νΈν©λλ€.npm outdated: μ€λλ ν¨ν€μ§λ₯Ό νμΈν©λλ€.npm uninstall <package-name>: ν¨ν€μ§λ₯Ό μ κ±°ν©λλ€.
Yarn
Yarnμ npmλ³΄λ€ λ λΉ λ₯Έ μ€μΉ μκ°, κ²°μ μ μΈ μ’ μμ± ν΄κ²° λ° ν₯μλ 보μμ ν¬ν¨νμ¬ μ¬λ¬ κ°μ§ μ΄μ μ μ 곡νλ λ λ€λ₯Έ μΈκΈ° μλ ν¨ν€μ§ κ΄λ¦¬μμ λλ€.μ£Όμ Yarn λͺ λ Ή:
yarn install:package.jsonνμΌμ μ μλ μ’ μμ±μ μ€μΉν©λλ€.yarn add <package-name>: νλ‘μ νΈμ μ μ’ μμ±μ μΆκ°ν©λλ€.yarn upgrade:package.jsonνμΌμ μ§μ λ SemVer λ²μλ₯Ό μΆ©μ‘±νλ μ΅μ λ²μ μΌλ‘ ν¨ν€μ§λ₯Ό μ λ°μ΄νΈν©λλ€.yarn outdated: μ€λλ ν¨ν€μ§λ₯Ό νμΈν©λλ€.yarn remove <package-name>: νλ‘μ νΈμμ ν¨ν€μ§λ₯Ό μ κ±°ν©λλ€.
μ κΈ νμΌ: μ¬νμ± λ³΄μ₯
npmκ³Ό Yarnμ λͺ¨λ μ κΈ νμΌ(npmμ κ²½μ°package-lock.json, Yarnμ κ²½μ° yarn.lock)μ μ¬μ©νμ¬ νλ‘μ νΈμ μ’
μμ±μ΄ κ²°μ μ μΈ λ°©μμΌλ‘ μ€μΉλλλ‘ ν©λλ€. μ κΈ νμΌμ λͺ¨λ μ’
μμ±κ³Ό ν΄λΉ μ μ΄μ μ’
μμ±μ μ νν λ²μ μ κΈ°λ‘νμ¬ μκΈ°μΉ μμ λ²μ μΆ©λμ λ°©μ§νκ³ μ ν리μΌμ΄μ
μ΄ λ€μν νκ²½μμ μΌκ΄λκ² λμνλλ‘ ν©λλ€.
λͺ¨λ² μ¬λ‘: λͺ¨λ κ°λ°μ λ° λ°°ν¬ νκ²½μμ λμΌν μ’ μμ± λ²μ μ μ¬μ©νλλ‘ νλ €λ©΄ νμ μ κΈ νμΌμ λ²μ μ μ΄ μμ€ν (μ: Git)μ 컀λ°νμμμ€.
μ’ μμ± κ΄λ¦¬ μ λ΅
ν¨κ³Όμ μΈ μ’ μμ± κ΄λ¦¬λ μμ μ μ΄κ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ½λλ² μ΄μ€λ₯Ό μ μ§νλ λ° λ§€μ° μ€μν©λλ€. κ³ λ €ν΄μΌ ν λͺ κ°μ§ μ£Όμ μ λ΅μ λ€μκ³Ό κ°μ΅λλ€.
1. μ’ μμ±μ μ μ€νκ² κ³ μ
SemVer λ²μλ₯Ό μ¬μ©νλ©΄ μ μ°μ±μ μ»μ μ μμ§λ§ μ΅μ μνλ₯Ό μ μ§νλ κ²κ³Ό μκΈ°μΉ μμ μμμ λ°©μ§νλ κ² μ¬μ΄μ κ· νμ μ μ§νλ κ²μ΄ μ€μν©λλ€. μμ μ±μ΄ κ°μ₯ μ€μν κ²½μ° λ μ νμ μΈ λ²μ(μ: ^ λμ ~)λ₯Ό μ¬μ©νκ±°λ μ’
μμ±μ νΉμ λ²μ μ κ³ μ νλ κ²μ κ³ λ €νμμμ€.
μ: μ€μν νλ‘λμ μ’ μμ±μ κ²½μ° μ΅λ μμ μ±μ 보μ₯νκΈ° μν΄ νΉμ λ²μ μ κ³ μ νλ κ²μ κ³ λ €ν μ μμ΅λλ€.
{
"dependencies": {
"react": "17.0.2"
}
}
2. μ’ μμ± μ κΈ°μ μΌλ‘ μ λ°μ΄νΈ
λ²κ·Έ μμ , μ±λ₯ κ°μ λ° λ³΄μ ν¨μΉμ μ΄μ μ μ»μΌλ €λ©΄ μ΅μ λ²μ μ μ’ μμ±μ μ μ§νλ κ²μ΄ μ€μν©λλ€. κ·Έλ¬λ κ° μ λ°μ΄νΈ νμλ νκ·κ° λ°μνμ§ μμλμ§ νμΈνκΈ° μν΄ μ ν리μΌμ΄μ μ μ² μ ν ν μ€νΈνλ κ²μ΄ μ€μν©λλ€.
λͺ¨λ² μ¬λ‘: μ κΈ°μ μΈ μ’ μμ± μ λ°μ΄νΈ μ£ΌκΈ°λ₯Ό μμ½νκ³ μ μ¬μ μΈ λ¬Έμ λ₯Ό μ‘°κΈ°μ λ°κ²¬ν μ μλλ‘ μλνλ ν μ€νΈλ₯Ό μν¬νλ‘μ ν΅ν©νμμμ€.
3. μ’ μμ± μ·¨μ½μ μ€μΊλ μ¬μ©
μλ €μ§ λ³΄μ μ·¨μ½μ μ λν΄ νλ‘μ νΈμ μ’ μμ±μ κ²μ¬νλ λ° μ¬μ©ν μ μλ λ§μ λκ΅¬κ° μμ΅λλ€. μ’ μμ±μ μ κΈ°μ μΌλ‘ κ²μ¬νλ©΄ μ μ©λκΈ° μ μ μ μ¬μ μΈ λ³΄μ μνμ μλ³νκ³ ν΄κ²°νλ λ° λμμ΄ λ μ μμ΅λλ€.
μ’ μμ± μ·¨μ½μ μ€μΊλμ μλ λ€μκ³Ό κ°μ΅λλ€.
npm audit: νλ‘μ νΈμ μ’ μμ±μμ μ·¨μ½μ μ κ²μ¬νλ npmμ κΈ°λ³Έ μ 곡 λͺ λ Ήμ λλ€.yarn audit: Yarnμ μ μ¬ν λͺ λ Ήμ λλ€.- Snyk: ν¬κ΄μ μΈ μ·¨μ½μ κ²μ¬ λ° μμ μ‘°μΈμ μ 곡νλ λ리 μ¬μ©λλ νμ¬ λꡬμ λλ€.
- OWASP Dependency-Check: νλ‘μ νΈ μ’ μμ±μ μλ³νκ³ μλ €μ§ κ³΅κ°λ μ·¨μ½μ μ΄ μλμ§ νμΈνλ μ€ν μμ€ λꡬμ λλ€.
4. κ°μΈ ν¨ν€μ§ λ μ§μ€νΈλ¦¬ μ¬μ© κ³ λ €
μ체 λ΄λΆ λͺ¨λμ κ°λ°νκ³ μ μ§ κ΄λ¦¬νλ μ‘°μ§μ κ²½μ° κ°μΈ ν¨ν€μ§ λ μ§μ€νΈλ¦¬λ₯Ό ν΅ν΄ μ’ μμ± κ΄λ¦¬ λ° λ³΄μμ λ ν¨κ³Όμ μΌλ‘ μ μ΄ν μ μμ΅λλ€. κ°μΈ λ μ§μ€νΈλ¦¬λ₯Ό μ¬μ©νλ©΄ λ΄λΆ ν¨ν€μ§λ₯Ό νΈμ€ν νκ³ κ΄λ¦¬νμ¬ κΆνμ΄ μλ μ¬μ©μλ§ μ‘μΈμ€ν μ μλλ‘ ν μ μμ΅λλ€.
κ°μΈ ν¨ν€μ§ λ μ§μ€νΈλ¦¬μ μλ λ€μκ³Ό κ°μ΅λλ€.
- npm Enterprise: npm, Inc.μμ μ 곡νλ μμ© μ νμΌλ‘, κ°μΈ λ μ§μ€νΈλ¦¬ λ° κΈ°ν μν°νλΌμ΄μ¦ κΈ°λ₯μ μ 곡ν©λλ€.
- Verdaccio: κ²½λμ μ λ‘ κ΅¬μ± κ°μΈ npm λ μ§μ€νΈλ¦¬μ λλ€.
- JFrog Artifactory: npm λ° κΈ°ν ν¨ν€μ§ νμμ μ§μνλ λ²μ© μν°ν©νΈ 리ν¬μ§ν 리 κ΄λ¦¬μμ λλ€.
- GitHub ν¨ν€μ§ λ μ§μ€νΈλ¦¬: GitHubμμ μ§μ ν¨ν€μ§λ₯Ό νΈμ€ν ν μ μμ΅λλ€.
5. μ μ΄μ μ’ μμ± μ΄ν΄
μ μ΄μ μ’
μμ±μ νλ‘μ νΈμ μ§μ μ’
μμ±μ μ’
μμ±μ
λλ€. μ μ΄μ μ’
μμ±μ package.json νμΌμ λͺ
μμ μΌλ‘ μ μλμ§ μμ κ²½μ°κ° λ§μΌλ―λ‘ κ΄λ¦¬κ° μ΄λ €μΈ μ μμ΅λλ€.
npm ls λ° yarn whyμ κ°μ λꡬλ₯Ό μ¬μ©νλ©΄ νλ‘μ νΈμ μ’
μμ± νΈλ¦¬λ₯Ό μ΄ν΄νκ³ μ μ΄μ μ’
μμ±μμ μ μ¬μ μΈ μΆ©λ λλ μ·¨μ½μ μ μλ³νλ λ° λμμ΄ λ μ μμ΅λλ€.
μ£Όμ λ³κ²½ μ¬ν μ²λ¦¬
μ΅μ μ λ€νλλΌλ μ’ μμ±μ μ£Όμ λ³κ²½ μ¬νμ λΆκ°νΌν κ²½μ°κ° μμ΅λλ€. μ’ μμ±μμ μ£Όμ λ³κ²½ μ¬νμ΄ λμ λλ©΄ λ€μκ³Ό κ°μ λͺ κ°μ§ μ΅μ μ΄ μμ΅λλ€.
1. λ³κ²½ μ¬νμ μμ©νλλ‘ μ½λ μ λ°μ΄νΈ
κ°μ₯ κ°λ¨ν λ°©λ²μ μ λ²μ μ μ’ μμ±κ³Ό νΈνλλλ‘ μ½λλ₯Ό μ λ°μ΄νΈνλ κ²μ λλ€. μ¬κΈ°μλ μ½λ 리ν©ν°λ§, API νΈμΆ μ λ°μ΄νΈ λλ μ κΈ°λ₯ ꡬνμ΄ ν¬ν¨λ μ μμ΅λλ€.
2. μ’ μμ±μ μ΄μ λ²μ μΌλ‘ κ³ μ
λ¨κΈ°μ μΌλ‘ μ½λλ₯Ό μ λ°μ΄νΈνλ κ²μ΄ λΆκ°λ₯ν κ²½μ° κΈ°μ‘΄ μ½λμ νΈνλλ μ΄μ λ²μ μΌλ‘ μ’ μμ±μ κ³ μ ν μ μμ΅λλ€. κ·Έλ¬λ μ΄λ λ²κ·Έ μμ λ° μ κΈ°λ₯μ μ΄μ μ μ»μΌλ €λ©΄ κ²°κ΅ μ λ°μ΄νΈν΄μΌ νλ―λ‘ μμ μ루μ μ λλ€.
3. νΈνμ± κ³μΈ΅ μ¬μ©
νΈνμ± κ³μΈ΅μ κΈ°μ‘΄ μ½λμ μ λ²μ μ μ’ μμ± μ¬μ΄μ κ°κ²©μ μ’νλ μ½λ μ‘°κ°μ λλ€. μ΄λ λ 볡μ‘ν μ루μ μΌ μ μμ§λ§ κΈ°μ‘΄ κΈ°λ₯μ μμμν€μ§ μκ³ μ λ²μ μΌλ‘ μ μ§μ μΌλ‘ λ§μ΄κ·Έλ μ΄μ ν μ μμ΅λλ€.
4. λμ κ³ λ €
μ’ μμ±μμ λΉλ²ν μ£Όμ λ³κ²½ μ¬νμ΄ λμ λκ±°λ μ λλ‘ μ μ§ κ΄λ¦¬λμ§ μλ κ²½μ° μ μ¬ν κΈ°λ₯μ μ 곡νλ λ체 λΌμ΄λΈλ¬λ¦¬ λλ λͺ¨λλ‘ μ ννλ κ²μ΄ μ’μ΅λλ€.
λͺ¨λ μμ±μλ₯Ό μν λͺ¨λ² μ¬λ‘
μ체 JavaScript λͺ¨λμ κ°λ°νκ³ κ²μνλ κ²½μ° λ€λ₯Έ μ¬μ©μκ° λͺ¨λμ μ½κ² μ¬μ©νκ³ μ μ§ κ΄λ¦¬ν μ μλλ‘ λ²μ κ΄λ¦¬ λ° νΈνμ±μ λν λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ€μν©λλ€.
1. μλ§¨ν± λ²μ κ΄λ¦¬ μ¬μ©
λͺ¨λμ μ λ²μ μ 릴리μ€ν λ μλ§¨ν± λ²μ κ΄λ¦¬μ μμΉμ μ€μνμμμ€. μ μ ν λ²μ λ²νΈλ₯Ό μ¦κ°μμΌ κ° λ¦΄λ¦¬μ€μ λ³κ²½ νΉμ±μ λͺ ννκ² μ λ¬νμμμ€.
2. λͺ νν μ€λͺ μ μ 곡
λͺ¨λμ λν ν¬κ΄μ μ΄κ³ μ΅μ μ€λͺ μλ₯Ό μ 곡νμμμ€. μ 릴리μ€μ λͺ¨λ μ£Όμ λ³κ²½ μ¬νμ λͺ ννκ² λ¬Έμννκ³ μ λ²μ μΌλ‘ λ§μ΄κ·Έλ μ΄μ νλ λ°©λ²μ λν μ§μΉ¨μ μ 곡νμμμ€.
3. λ¨μ ν μ€νΈ μμ±
λͺ¨λμ΄ μμλλ‘ μλνκ³ μ 릴리μ€μμ νκ·κ° λ°μνμ§ μλλ‘ ν¬κ΄μ μΈ λ¨μ ν μ€νΈλ₯Ό μμ±νμμμ€.
4. μ§μμ μΈ ν΅ν© μ¬μ©
μ½λκ° λ¦¬ν¬μ§ν 리μ 컀λ°λ λλ§λ€ μλμΌλ‘ λ¨μ ν μ€νΈλ₯Ό μ€ννλλ‘ μ§μμ μΈ ν΅ν©(CI) μμ€ν μ μ¬μ©νμμμ€. μ΄λ₯Ό ν΅ν΄ μ μ¬μ μΈ λ¬Έμ λ₯Ό μ‘°κΈ°μ λ°κ²¬νκ³ μμλ 릴리μ€λ₯Ό λ°©μ§ν μ μμ΅λλ€.
5. λ³κ²½ λ‘κ·Έ μ 곡
λͺ¨λμ κ° λ¦΄λ¦¬μ€μμ λͺ¨λ μ€μν λ³κ²½ μ¬νμ λ¬Έμννλ λ³κ²½ λ‘κ·Έλ₯Ό μ μ§ κ΄λ¦¬νμμμ€. μ΄λ₯Ό ν΅ν΄ μ¬μ©μλ κ° μ λ°μ΄νΈμ μν₯μ μ΄ν΄νκ³ μ κ·Έλ μ΄λν μ§ μ¬λΆλ₯Ό κ²°μ ν μ μμ΅λλ€.
6. μ΄μ API μ¬μ© μ€λ¨
μ£Όμ λ³κ²½ μ¬νμ λμ ν λ μ΄μ APIλ₯Ό μ¦μ μ κ±°νλ λμ μ¬μ© μ€λ¨νλ κ²μ κ³ λ €νμμμ€. μ΄λ κ² νλ©΄ μ¬μ©μκ° κΈ°μ‘΄ μ½λλ₯Ό μμμν€μ§ μκ³ μ APIλ‘ λ§μ΄κ·Έλ μ΄μ ν μκ°μ λ² μ μμ΅λλ€.
7. κΈ°λ₯ νλκ·Έ μ¬μ© κ³ λ €
κΈ°λ₯ νλκ·Έλ₯Ό μ¬μ©νλ©΄ μ κΈ°λ₯μ μ¬μ©μ νμ μ§ν©μ μ μ§μ μΌλ‘ λ‘€μμν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λͺ¨λ μ¬μ©μμκ² κΈ°λ₯μ 릴리μ€νκΈ° μ μ μ μ¬μ μΈ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°ν μ μμ΅λλ€.
κ²°λ‘
JavaScript λͺ¨λ λ²μ κ΄λ¦¬ λ° νΈνμ± κ΄λ¦¬λ κ°λ ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯νλ©° μ μΈκ³μ μΌλ‘ μ‘μΈμ€ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνλ λ° νμμ μ λλ€. μλ§¨ν± λ²μ κ΄λ¦¬μ μμΉμ μ΄ν΄νκ³ , ν¨ν€μ§ κ΄λ¦¬μλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νκ³ , 건μ ν μ’ μμ± κ΄λ¦¬ μ λ΅μ μ±νν¨μΌλ‘μ¨ μκΈ°μΉ μμ μμ μνμ μ΅μννκ³ μ ν리μΌμ΄μ μ΄ λ€μν νκ²½μμ μκ°μ΄ μ§λ¨μ λ°λΌ μμ μ μΌλ‘ μλνλλ‘ ν μ μμ΅λλ€. λͺ¨λ μμ±μλ‘μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ JavaScript μνκ³μ λν κΈ°μ¬κ° μ μΈκ³ κ°λ°μμκ² κ°μΉ μκ³ μ½κ² ν΅ν©λ μ μμ΅λλ€.