Angular 1.5์์ ์ฌ์ฉํ ์ ์๋ ์๋ก์ด ๊ตฌ์ฑ ์์ ๋์ฐ๋ฏธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ ์์ ํธ๋ฆฌ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ์ ์ญ์ ์ผ๋ก ๋ฑ๋ก๋๊ธฐ ๋๋ฌธ์ ์ด๋ฆ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ๊ตฌ์ฑ ์์์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ข์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์์คํ์ด์ค ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํด ์ฃผ์๊ฒ ์ต๋๊น? ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ชจ๋
.module('app.account.details', [])
.component('app.account.details.edit', NameComponent);
๊ตฌ์ฑ ์์๋ ์ปดํ์ผ์ด๋ ๋งํฌ ๊ธฐ๋ฅ์ด ์๋ ์ง์๋ฌธ ๋ํผ์ผ ๋ฟ์ ๋๋ค. ๋ฐ๋ผ์ ์ง์๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๊ท์น์ ์ฌ์ฉํ์ญ์์ค.
๊ทธ๋ค์ ๋์ผํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด. ๊ตฌ์ฑ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ๋ฒ์๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋งํฌ ๊ธฐ๋ฅ์ ๋์ฒดํ๊ณ bindToController๋ ๊ธฐ๋ณธ์ ์ผ๋ก true์ ๋๋ค.
์ปดํฌ๋ํธ๋ก ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋๋ ํฐ๋ธ๋ก ๋ฌ์ฑํ ์ ์์ง๋ง ์ปดํฌ๋ํธ๊ฐ ์กด์ฌํ๋ ์ด์ ๋ Angular 2๋ก ์ฝ๊ฒ ์ ํํ๊ธฐ ์ํจ์ ๋๋ค.
์ฌ๊ธฐ์์ ๋ ๋ง์ ๊ธฐ๋ฅ์ ๋ํด ์ฝ์ ์ ์์ต๋๋ค. http://www.codelord.net/2015/12/17/angulars-component-what-is-it-good-for/
๊ทธ๋ผ ์ด๊ฒ ์ถ๊ฐ๋๋์?
์ด์ ๋ํ ์ ์์ด๋ ํํธ๊ฐ ์์ต๋๊น?
์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ @samithaf ๋ CSS ์ ํ๊ธฐ์ ๊ด๋ จํ์ฌ ์ ํํฉ๋๋ค.
์ ์ ์ฌ์ฉํ๋ค๊ณ ํด์ ์ ํ๋๋ ๊ฒ์ ์๋์ง๋ง(์: CSS ์ ํ๊ธฐ์์ ์ ์ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌํ ์ ์์) ๋ฒ๊ฑฐ๋กญ๊ณ ๊ด์ต์ ์ฝ๋งค์ด์ง ์์ต๋๋ค.
์ฌ๋๋ค์ ์๋
๋์ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ ์์์ -
๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ต๋๋ค.
@mackelito @blowsie @gkalpak ์ ๋ ๋๊ท๋ชจ ๊ธ์ต ์ ํ๋ฆฌ์ผ์ด์ (100K + LOC)์์ ๋ค์ ํจํด์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ง๊ธ๊น์ง๋ ๋ชจ๋ ๊ฒ์ด
const loginModule = angular.module('app.core.login', [])
.component('app.core.login', loginComponent)
.service('app.core.login.loginService', loginService);
@samithaf ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ์ด๋ป๊ฒ ์ฃผ์
ํฉ๋๊น? ['app.core.login.loginService' , function(loginService) {}]
์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํ์ญ๋๊น?
@blowsie ๋ก๊ทธ์ธ ์๋น์ค ์ํ ์ฌ์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class LoginController {
constructor($q, loginService) {
this.loginService = loginService;
}
/**
* <strong i="7">@method</strong> $onInit
* This lifecycle hook will be executed when all controllers on an element have been constructed and after their bindings are initialized
*/
$onInit() {
this.loginService.invalidateSession();
}
}
LoginController.$inject = ['$q', 'nw.core.login.loginService'];
export default LoginController;
์๋น์ค์๋ ๋งค์ฐ ์ข์ง๋ง ๊ตฌ์ฑ ์์์๋ ์ ๋ง ์ด์ํฉ๋๋ค.
<div><app.core.login></app.core.login></div>
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฃผ๋ณ ์ธ๊ณ์ ์ผ์นํ์ง ์์ต๋๋ค(๋ชจ๋๊ฐ @gkalpak์ด ๋งํ๋ฏ์ด -
๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค).
@samithaf ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ด๊ฒ์ผ๋ก ํ๋ฅญ
์ฌ๊ธฐ์ ํต์ฌ ๋ฌธ์ ๋ AngularJS ์ธ์ ํฐ๊ฐ ํ๋ฉด์ด๋ฏ๋ก ๋ชจ๋ ๊ตฌ์ฑ ์์์ ์ด๋ฆ์ ์ง์ ํ ๋ ์ ์ญ์ ์ผ๋ก ์๊ฐํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ Angular์์ ์์ ๋ ์ค๊ณ ๊ฒฐํจ์
๋๋ค. ๊ฑฐ์ ๋ชจ๋ ์ฌ๋์ด ์ฒ์๋ถํฐ ์ฌ์ฉํ๋ ํต์ฌ ๊ท์น(์ด๋ฆ ๊ณต๊ฐ์ ๊ฒฝ์ฐ -
์ ๋ณ๊ฒฝํ๋ ๊ฒ์ IMHO๋ก ๊ฐ๋ ๋ฐฉ๋ฒ์ด ์๋๋๋ค.
Angular DI๊ฐ ํํํ๊ธฐ ๋๋ฌธ์ ์ธ๊ธํ @MarcLoupias๋ , ์ฐ๋ฆฌ๋ ๋ง์ ๊ฒ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์์คํ์ด์ค ์์ด ๋ชจ๋ ์ด๋ฆ์ ์ ์ํ๋ฉด ์ฝ๊ฒ ๋ถ์์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. 10๊ฐ ์ด์์ ์คํฌ๋ผ ํ์ด ์์ ํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํนํ ๊ทธ๋ ์ต๋๋ค. ๋ด๊ฐ ์๊ฐํด ๋ธ ํด๊ฒฐ์ฑ ์ด ๊ด์ต์ ๋ง์ง ์๋๋ผ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ค๋ฅธ ์ข์ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์ต๋๋ค. Angular ํ์ด ์๋์ผ๋ก ๋ชจ๋์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ๋ค๋ฉด ์ข์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๊ฒ์ด angular 1.X์์ ์ผ์ด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ;)
๊ทธ๋ฌ๋ ๋ค์์คํ์ด์ค ์์ด ๋ชจ๋ ์ด๋ฆ์ ์ ์ํ๋ฉด ์ฝ๊ฒ ๋ถ์์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์, ์ธ์ ํฐ ์ด๊ธฐํ ๋จ๊ณ์์ ์ธ์ ํฐ ๋์์ ์ธ์ ํฐ์ ์ด๋ฏธ ์ ์ธ๋ ์๋น์ค๋ฅผ ๋ง์ง๋ง์ผ๋ก ์ ์ธํ ์๋น์ค๋ก ์๋์ผ๋ก ์ฌ์ ์ํ๋ ๊ฒ์ ๋๋ค.
10๊ฐ ์ด์์ ์คํฌ๋ผ ํ์ด ์์ ํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํนํ ๊ทธ๋ ์ต๋๋ค.
50๋ช ์ด์์ ๊ฐ๋ฐ์์ ๋น์ทํฉ๋๋ค!
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ค๋ฅธ ์ข์ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์ต๋๋ค.
์ฌ๋ฌ ์ฑ์ผ๋ก ๋น์ฆ๋์ค๋ฅผ ๋ถํ ํ์๊ฒ ์ต๋๊น? AngularJS๋ ์ด ์ธ์ ํฐ ๋ค์์คํ์ด์ค ์ค๊ณ ๊ฒฐํจ์ผ๋ก ์ธํด ๊ฑฐ๋ํ ํ๋ก์ ํธ์ ์ ํฉํ์ง ์์ต๋๋ค.