í í늿 êž°ë° íë¡ ížìë ìœë ìì±ì ìŽì , 구í ì ëµ, ë구 ë° ëªšë² ì¬ë¡ë¥Œ íìíì¬ íšìšì ìŽê³ íì¥ ê°ë¥í ì¹ ê°ë°ì ë¬ì±íë ë°©ë²ì ìì볎ìžì.
íë¡ ížìë ìœë ìì±: í í늿 êž°ë° ê°ë° ë§ì€í°íêž°
ì€ëë ë¹ ë¥Žê² ë³ííë ì¹ ê°ë° í겜ììë íšìšì±ê³Œ íì¥ì±ìŽ ê°ì¥ ì€ìí©ëë€. íë¡ ížìë ìœë ìì±, í¹í í í늿 êž°ë° ê°ë°ì ê°ë° 죌Ʞ륌 ê°ìííê³ , ë°ë³µì ìž ìì ì ì€ìŽë©°, ëê·ëªš íë¡ì íž ì ë°ì ê±žì³ ìœë ìŒêŽì±ì ì ì§íë ê°ë ¥í ì ê·Œ ë°©ìì ì ê³µí©ëë€. ìŽ ì¢ í© ê°ìŽëììë íë¡ ížìë ìœë ìì±ì ê°ë , ìŽì , 구í ì ëµ, ìžêž° ìë ë구 ë° ëªšë² ì¬ë¡ë¥Œ ìŽíŽëŽ ëë€.
íë¡ ížìë ìœë ìì±ìŽë 묎ììžê°?
íë¡ ížìë ìœë ìì±ì 믞늬 ì ìë í í늿ìŽë ëª ìžë¡ë¶í° íë¡ ížìë ìœë륌 ìëìŒë¡ ë§ëë 곌ì ì ëë€. ê°ë°ìë ìŒë°ì ìž UI 컎í¬ëíž, ë°ìŽí° ë°ìžë© ëë API ìížìì©ì ìí ìœë륌 ìëìŒë¡ ìì±íë ëì , ìœë ìì±êž°ë¥Œ ì¬ì©íì¬ ì¬ì¬ì© ê°ë¥í í í늿ì êž°ë°ìŒë¡ ìŽë¬í ììë€ì ìì°í©ëë€. ìŽ ì ê·Œ ë°©ìì íìí ìì©êµ¬ ìœë(boilerplate code)ì ìì í¬ê² ì€ì¬ ê°ë°ìê° ì í늬ìŒìŽì ì ë ë³µì¡íê³ ì°œìì ìž ìž¡ë©Žì ì§ì€í ì ìëë¡ í©ëë€.
í í늿 êž°ë° ê°ë°ì í íëŠ¿ìŽ ìì±ë ìœëì 구조ì ë¡ì§ì ì ìíë í¹ì ì íì ìœë ìì±ì ëë€. ìŽë¬í í í늿ì ë°ìŽí° ì í, UI ì€íìŒ ëë API ìëí¬ìžížì ê°ì í¹ì ì구 ì¬íì ë°ëŒ ì¶ë ¥ì ì¬ì©ì ì ìíêž° ìíŽ ë§€ê°ë³ìíë ì ììµëë€.
íë¡ ížìë ìœë ìì±ì ìŽì
1. ìì°ì± í¥ì
ìœë ìì±ì UI 컎í¬ëíž ìì±, íŒ ìì±, ë°ìŽí° ë°ìžë© 구í곌 ê°ì ë°ë³µì ìž ìì ì ìëíí©ëë€. ìŽë ê°ë° ìê°ì í¬ê² ëšì¶ìí€ê³ ê°ë°ìê° ë ë³µì¡íê³ ì ëµì ìž ìì ì ì§ì€í ì ìê² íŽì€ëë€.
ìì: ìë§ì íŒìŽ ìë ì¹ ì í늬ìŒìŽì ì ììíŽ ë³Žìžì. ê° íŒì ìëìŒë¡ ë§ëë ëì , ìœë ìì±êž°ë í í늿곌 ë°ìŽí° ì€í€ë§ë¥Œ êž°ë°ìŒë¡ íŒì ìì±í ì ììµëë€. ìŽë¥Œ íµíŽ ê°ë° ìê°ì ëª ìê° ëë ë©°ì¹ ê¹ì§ ì ìœí ì ììµëë€.
2. ìœë ìŒêŽì± ê°ì
í í늿ì ì¬ì©í멎 ìì±ë ìœëê° ë¯žëŠ¬ ì ìë ìœë© íì€ ë° ìí€í ì² íšíŽì ì€ìíëë¡ ë³Žì¥í©ëë€. ìŽë ë ìŒêŽì± ìê³ ì ì§ë³Žìíêž° ì¬ìŽ ìœëë² ìŽì€ë¡ ìŽìŽì ž ì€ë¥ ë° ë¶ìŒì¹ì ìíì ì€ì ëë€.
ìì: ì¬ë¬ ê°ë°ìê° ì°žì¬íë ëê·ëªš íë¡ì ížë¥Œ ì§ííë ê°ë°íì ìê°íŽ ë³Žìžì. ìœë ìì±ì ì¬ì©í멎 몚ë ê°ë°ìê° ëìŒí ìœë© ì€íìŒê³Œ íšíŽì ë°ë¥Žëë¡ ë³Žì¥íì¬ ë ê· ìŒí ìœëë² ìŽì€ë¥Œ ë§ë€ ì ììµëë€.
3. ì€ë¥ ê°ì
ìœë ìì±ì ìëííšìŒë¡ìš ìžì ì€ë¥ì ìíìŽ í¬ê² ì€ìŽëëë€. í í늿ì ì² ì í í ì€ížëê³ ê²ìŠëìŽ ìì±ë ìœëê° ì 뢰í ì ìê³ ë²ê·žê° ììì 볎ì¥í©ëë€.
ìì: ë°ë³µì ìž ìœë륌 ìëìŒë¡ ìì±í멎 ì€íë ë ŒëŠ¬ì ì€ë¥ê° ë°ìíêž° ìœìµëë€. ìœë ìì±ì ì격íê² í ì€ížë 믞늬 ì ìë í í늿ì ì¬ì©íì¬ ìŽë¬í ìíì ì ê±°í©ëë€.
4. ë ë¹ ë¥ž íë¡í íìŽí
ìœë ìì±ì ì ìí íë¡í íìŽí곌 ì€íì ê°ë¥íê² í©ëë€. ê°ë°ìë Ʞ볞 UI ììì ë°ìŽí° ë°ìžë©ì ë¹ ë¥Žê² ìì±íì¬ ë€ìí 컚ì ì í ì€ížíê³ ëììžì ë°ë³µí ì ììµëë€.
ìì: ê°ë°íì ìí ë°ìŽí°ë¡ Ʞ볞 UI íë¡í íì ì ì ìíê² ìì±íì¬ ìŽíŽêŽê³ììê² ìë¡ìŽ êž°ë¥ì ìì°í ì ììµëë€.
5. í¥ìë ì ì§ë³Žìì±
ë³ê²œìŽ íìí ë í í늿ì ì ë°ìŽížíê³ ìœë륌 ë€ì ìì±í ì ììµëë€. ìŽë í¹í í¬ê³ ë³µì¡í ì í늬ìŒìŽì ì ê²œì° ìœëë² ìŽì€ë¥Œ ì ì§ë³Žìíê³ ì ë°ìŽížíêž° ìœê² ë§ëëë€.
ìì: API ìëí¬ìžížê° ë³ê²œë멎, í í늿ì ì ë°ìŽížíì¬ ìë¡ìŽ ìëí¬ìžížë¥Œ ë°ìíê³ ìœë륌 ë€ì ìì±í ì ììµëë€. ìŽë ê² í멎 API륌 ì¬ì©íë 몚ë ìœëê° ìëìŒë¡ ì ë°ìŽížë©ëë€.
6. íì¥ì±
ìœë ìì±ì ì í늬ìŒìŽì íì¥ íë¡ìžì€ë¥Œ ëšìíí©ëë€. Ʞ졎 í í늿ì êž°ë°ìŒë¡ ìë¡ìŽ êž°ë¥ê³Œ 컎í¬ëížë¥Œ ì ìíê² ìì±í ì ììŒë¯ë¡ ìœë íì§ìŽë ìŒêŽì±ì ì íŽíì§ ìê³ ì í늬ìŒìŽì ì ì±ì¥ìí¬ ì ììµëë€.
ìì: ì í늬ìŒìŽì ìŽ ì±ì¥íšì ë°ëŒ ìœë ìì±ì ì¬ì©íì¬ ìë¡ìŽ êž°ë¥ê³Œ 컎í¬ëížë¥Œ ë¹ ë¥Žê² ì¶ê°í ì ììµëë€. ìŽë¥Œ íµíŽ ì í늬ìŒìŽì ì ìœë íì§ì ì íŽíì§ ìê³ íšìšì ìŒë¡ íì¥í ì ììµëë€.
í í늿 êž°ë° ìœë ìì±ì ìë ë°©ì
í í늿 êž°ë° ìœë ìì±ì ìŒë°ì ìŒë¡ ë€ì ëšê³ë¥Œ í¬íší©ëë€:
- í í늿 ìì±: ìì±ë ìœëì 구조ì ë¡ì§ì ëª ìíë ì¬ì¬ì© ê°ë¥í í í늿ì ì ìí©ëë€. ìŽë¬í í í늿ì Handlebars, Mustache ëë EJSì ê°ì ë€ìí í í늿 ìžìŽë¡ ìì±ë ì ììµëë€.
- ë°ìŽí° ì ë ¥: ë°ìŽí° ì€í€ë§, API ìëí¬ìžíž ëë UI êµ¬ì± ìµì 곌 ê°ì ë°ìŽí° ì ë ¥ì í í늿ì ì ê³µí©ëë€.
- ìœë ìì±: ìœë ìì±êž° ë구륌 ì¬ì©íì¬ í í늿곌 ë°ìŽí° ì ë ¥ì ì²ëЬíê³ ìµì¢ ìœë ì¶ë ¥ì ìì±í©ëë€.
- íµí©: ìì±ë ìœë륌 Ʞ졎 ìœëë² ìŽì€ì íµí©í©ëë€.
ìì:
Handlebars í í늿ì ì¬ì©íì¬ React 컎í¬ëížë¥Œ ìì±íë ê°ëší ìì륌 ìŽíŽë³Žê² ìµëë€:
í í늿 (component.hbs):
import React from 'react';
interface {{componentName}}Props {
{{#each props}}
{{name}}: {{type}};
{{/each}}
}
const {{componentName}}: React.FC<{{componentName}}Props> = ({ {{#each props}}{{name}}, {{/each}} }) => {
return (
<div>
<h1>{{componentName}}</h1>
{{#each props}}
<p>{{name}}: { {{name}} }</p>
{{/each}}
</div>
);
};
export default {{componentName}};
ë°ìŽí° ì ë ¥ (data.json):
{
"componentName": "UserCard",
"props": [
{
"name": "name",
"type": "string"
},
{
"name": "age",
"type": "number"
}
]
}
ìì±ë ìœë (UserCard.tsx):
import React from 'react';
interface UserCardProps {
name: string;
age: number;
}
const UserCard: React.FC = ({ name, age }) => {
return (
<div>
<h1>UserCard</h1>
<p>name: { name }</p>
<p>age: { age }</p>
</div>
);
};
export default UserCard;
íë¡ ížìë ìœë ìì±ì ìí ìžêž° ë구
1. Yeoman
Yeomanì ìë¡ìŽ íë¡ì ížë¥Œ ììíë ë° ëìì 죌ë ì€ìºíŽë© ë구ë¡, ìì°ì±ì ì ì§íë ë° ëììŽ ëë ëªšë² ì¬ë¡ì ë구륌 ì ê³µí©ëë€. ë€ìí íë ììí¬ì ëŒìŽëžë¬ëŠ¬ë¥Œ ìí ìì±êž° ìíê³ë¥Œ ì ê³µíì¬ íë¡ì íž êµ¬ì¡°, UI 컎í¬ëíž ë±ì ì ìíê² ìì±í ì ììµëë€.
2. Hygen
Hygenì í í늿곌 컀맚ë ëŒìž ìží°íìŽì€(CLI)륌 ì¬ì©íì¬ ìœë륌 ìì±íë ê°ëšíê³ ë¹ ë¥ž ìœë ìì±êž°ì ëë€. ê°ë³ê³ Ʞ졎 íë¡ì ížì ìœê² íµí©í ì ììµëë€.
3. Plop
Plopì íë¡ì ížì© ìì±êž°ë¥Œ ìœê² ë§ë€ ì ìë ë§ìŽí¬ë¡ ìì±êž° íë ììí¬ì ëë€. í í늿곌 í롬íížë¥Œ ì ìí ì ììŽ ì¬ì©ì ì ë ¥ì êž°ë°ìŒë¡ ìœë륌 ìœê² ìì±í ì ììµëë€.
4. 컀ì€í CLI ë구
ë§ì íì¬ì ì¡°ì§ì í¹ì ì구ì ë§ë ë§ì¶€í CLI ë구륌 ê°ë°í©ëë€. ìŽë¬í ë구ë ì¡°ì§ì ìœë© íì€ ë° ìí€í ì² íšíŽì ì€ìíë ìœë륌 ìì±íëë¡ ë§ì¶€íë ì ììµëë€.
5. ìšëŒìž ìœë ìì±êž°
ìíížìšìŽë¥Œ ì€ì¹íì§ ìê³ ë ìœë ì€ëí«ê³Œ 컎í¬ëížë¥Œ ìì±í ì ìë ìë§ì ìšëŒìž ìœë ìì±êž°ê° ììµëë€. ìŽë¬í ë구ë ë¹ ë¥ž íë¡í íìŽí곌 ì€íì ì¢ ì¢ ì ì©í©ëë€.
íë¡ ížìë ìœë ìì±ì ìí ëªšë² ì¬ë¡
1. ì¬ì¬ì© ê°ë¥í í í늿 ì€ê³
ì¬ë¬ íë¡ì ížìì ì ì°íê³ ì¬ì¬ì© ê°ë¥í í í늿ì ë§ëìžì. í¹ì ì구 ì¬íì ë°ëŒ ì¬ì©ì ì ìí ì ìëë¡ í í늿ì ë§€ê°ë³ìííìžì.
2. í í늿 ìžìŽ ì¬ì©
ë°°ì°ê³ ì¬ì©íêž° ì¬ìŽ í í늿 ìžìŽë¥Œ ì ííìžì. ìžêž° ìë ìµì ìŒë¡ë Handlebars, Mustache, EJSê° ììµëë€.
3. ê°ë° ìí¬íë¡ì°ì ìœë ìì± íµí©
컀ì€í CLI ëª ë ¹ìŽ ëë ì€í¬ëŠœížë¥Œ ìì±íì¬ ê°ë° ìí¬íë¡ì°ì ìœë ìì±ì íµí©íìžì. ìŽë¥Œ íµíŽ ê°ë°ìë íìì ë°ëŒ ìœë륌 ìœê² ìì±í ì ììµëë€.
4. í í늿 ë²ì êŽëЬ
í í늿ì ë²ì êŽëЬ ìì€í (ì: Git)ì ì ì¥íì¬ ë³ê²œ ì¬íì ì¶ì íê³ ë€ë¥ž ê°ë°ìì íì íìžì.
5. í í늿 묞ìí
í íëŠ¿ìŽ ìŽë»ê² ìëíê³ ìŽë»ê² ì¬ì©íëì§ ì€ëª íêž° ìíŽ ëª ííê² ë¬žìííìžì. ìŽë¥Œ íµíŽ ë€ë¥ž ê°ë°ìê° í í늿ì ë ìœê² ìŽíŽíê³ ì¬ì©í ì ììµëë€.
6. í í늿 í ì€íž
í í늿ì ì² ì í í ì€ížíì¬ ì ííê³ ì 뢰í ì ìë ìœë륌 ìì±íëì§ íìžíìžì. ìŽë ì€ë¥ ë° ë¶ìŒì¹ì ìíì ì€ìŽë ë° ëììŽ ë©ëë€.
7. 볎ì ê³ ë €
ìžë¶ API ëë ì¬ì©ì ì ë ¥ê³Œ ìíž ìì©íë ìœë륌 ìì±í ëë 볎ì ìí¥ì ê³ ë €íìžì. ìì±ë ìœëê° ìì íê³ ì·šìœì ì ì ë°íì§ ìëë¡ íìžì.
íë¡ ížìë íë ììí¬ íµí©
1. React
Reactë ì¬ì©ì ìží°íìŽì€ë¥Œ 구ì¶íêž° ìí ìžêž° ìë JavaScript ëŒìŽëžë¬ëЬì ëë€. ìœë ìì±ì ì¬ì©íì¬ React 컎í¬ëíž, í , 컚í ì€ížë¥Œ ìì±í ì ììµëë€. Yeoman ë° Hygen곌 ê°ì ë구ë React íë¡ì ížì© ìì±êž°ë¥Œ ì ê³µí©ëë€.
2. Angular
Angularë ë³µì¡í ì¹ ì í늬ìŒìŽì ì 구ì¶íêž° ìí í¬êŽì ìž íë ììí¬ì ëë€. Angular CLIë 컎í¬ëíž, ìë¹ì€, 몚ë ìì±ì ìí ëŽì¥ ìœë ìì± êž°ë¥ì ì ê³µí©ëë€.
3. Vue.js
Vue.jsë ì¬ì©ì ìží°íìŽì€ë¥Œ 구ì¶íêž° ìí ì ì§ì ìž íë ììí¬ì ëë€. ìœë ìì±ì ì¬ì©íì¬ Vue 컎í¬ëíž, ëë í°ëž, íë¬ê·žìžì ìì±í ì ììµëë€. Vue CLI ë° Plop곌 ê°ì ë구ë Vue.js íë¡ì ížì© ìì±êž°ë¥Œ ì ê³µí©ëë€.
ì€ì ì¬ë¡
1. ì ììê±°ë íë«íŒ
ì ììê±°ë íë«íŒì ìœë ìì±ì ì¬ì©íì¬ ìí ëª©ë¡ íìŽì§, ì¥ë°êµ¬ë, ê²°ì íŒì ìì±í ì ììµëë€. í í늿ì ë€ìí ìí ì í, íµí, ê²°ì ë°©ë²ì ì²ëЬíëë¡ ë§€ê°ë³ìíë ì ììµëë€. ìœë ìì±ì ì¬ì©í멎 ê°ë°ìŽ ê°ìíëê³ , UI ìŒêŽì±ìŽ ê°íëë©°, ë€ìí ê²°ì íëŠì ëí A/B í ì€ížë¥Œ ìœê² ìíí ì ììµëë€.
2. ìœí ìž êŽëЬ ìì€í (CMS)
CMSë ìœë ìì±ì ì¬ì©íì¬ ìœí ìž êŽëŠ¬ë¥Œ ìí ìœí ìž í í늿, íŒ íë, ì¬ì©ì ìží°íìŽì€ë¥Œ ìì±í ì ììµëë€. í í늿ì êž°ì¬, ëžë¡ê·ž ê²ì묌, ìŽë¯žì§ì ê°ì ë€ìí ìœí ìž ì íì ì²ëЬíëë¡ ë§€ê°ë³ìíë ì ììµëë€. í í늿 êž°ë° ìœë ìì±ì íµíŽ ì¬ë¬ ì§ìì ëí íì§í륌 ìœê² 구íí ì ììµëë€.
3. ë°ìŽí° ìê°í ëì볎ë
ë°ìŽí° ìê°í ëì볎ëë ìœë ìì±ì ì¬ì©íì¬ ë°ìŽí° ìì€ë¥Œ êž°ë°ìŒë¡ ì°šíž, ê·žëí, í ìŽëžì ìì±í ì ììµëë€. í í늿ì ë€ìí ë°ìŽí° ì í, ì°šíž ì í, ìê°í ì€íìŒì ì²ëЬíëë¡ ë§€ê°ë³ìíë ì ììµëë€. 컎í¬ëížì ìë ìì±ì ëì볎ë ì ë°ì ê±žì³ ìŒêŽë ì€íìŒë§ì ì ì§íë ë° ëììŽ ë©ëë€.
곌ì ë° ê³ ë €ì¬í
1. í í늿ì ë³µì¡ì±
ë³µì¡í í í늿ì ì€ê³íë ê²ì í¹í í¬ê³ ë³µì¡í ì í늬ìŒìŽì ì ê²œì° ìŽë €ìž ì ììµëë€. ì ì§ë³Žìì±ì í¥ììí€êž° ìíŽ í í늿ì ëšìíê³ ëªšëììŒë¡ ì ì§íë ê²ìŽ ì€ìí©ëë€.
2. ìì±ë ìœë ëë²ê¹
ìì±ë ìœë륌 ëë²ê¹ íë ê²ì ìëìŒë¡ ìì±ë ìœë륌 ëë²ê¹ íë ê²ë³Žë€ ë ìŽë €ìž ì ììµëë€. í í늿곌 ìœë ìì± ê³Œì ì ëí ê¹ì ìŽíŽê° ì€ìí©ëë€.
3. í í늿 ì ì§ë³Žì
í í늿ì ì ì§ë³Žìíë ê²ì í¹í ë³ê²œìŽ íìí ë ìê°ìŽ ë§ìŽ ììë ì ììµëë€. í í늿ì ì ë°ìŽížíê³ í ì€ížíêž° ìí ëª íí íë¡ìžì€ë¥Œ ê°ì¶ë ê²ìŽ ì€ìí©ëë€.
4. ìœë ìì±ì ëí 곌ëí ì졎
ìœë ìì±ì 곌ëíê² ì졎í멎 Ʞ볞 ìœëì ëí ìŽíŽê° ë¶ì¡±íŽì§ ì ììµëë€. ê°ë°ìê° ì í늬ìŒìŽì ì ì ìŽíŽí ì ìëë¡ ìœë ìì±ê³Œ ìë ìœë© ì¬ìŽì ê· íì ë§ì¶ë ê²ìŽ ì€ìí©ëë€.
ê²°ë¡
íë¡ ížìë ìœë ìì±, í¹í í í늿 êž°ë° ê°ë°ì ìì°ì± í¥ì, ìœë ìŒêŽì± ê°ì , ì€ë¥ ê°ì, ë ë¹ ë¥ž íë¡í íìŽí, í¥ìë ì ì§ë³Žìì± ë° íì¥ì±ì í¬íšíì¬ ì¹ ê°ë°ì ìë¹í ìŽì ì ì ê³µí©ëë€. ì¬ë°ë¥ž ë구륌 ì¬ì©íê³ ëªšë² ì¬ë¡ë¥Œ ë°ë¥Žë©Ž ê°ë°ìë ìœë ìì±ì íì©íì¬ íšìšì ìŽê³ íì¥ ê°ë¥í ì¹ ì í늬ìŒìŽì ì 구ì¶í ì ììµëë€. 곌ì ì ê³ ë €ì¬íìŽ ìì§ë§, ìœë ìì±ì ìŽì ì ì¢ ì¢ ëšì ì ë¥ê°íë¯ë¡ íë ì¹ ê°ë° í겜ìì ê·ì€í ëêµ¬ê° ë©ëë€.
ìëíì íì ë°ìë€ìŽê³ í í늿 êž°ë° ìœë ìì±ìŒë¡ íë¡ ížìë ê°ë° íë¡ìžì€ë¥Œ ê°ìííìžì. ë¹ì ì íì í¥ìë íšìšì±ê³Œ ê°ì ë ìœë íì§ì ê°ì¬í ê²ì ëë€!