Front-end MV* Framework라고 한다. 이때 *는 Whatever(무엇이든)이라고 하나 우리는 그냥 기존에 알고있던 MVC의 개념으로 이해하면 된다. C말고 다른걸 쓰는게 있으면 바꾸면 되고.
angular에서 권장하는 구조는 다음과 같다.
https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub
구글에서 사용하는 가이드를 따르라고 한다. application의 복잡도에 따라 여러가지 구조를 제시하고 있다.
우리는 무난하게 angular.js의 tutorial에서도 사용중인 구조를 사용하면 된다.
Spring에 친숙한 개발자라면 DI를 많이 들어것이다. 사실 본인이 스프링에서만 써봐서 그렇기도 하다.
Anulgar에서는 각 service, controller에 의존성을 주입할 수 있다.
예를 들어보자.
var testControllers = angular.module('testControllers', []);
testControllers.controller('CtrlForDI', ['$scope',
function ($scope) {
$scope.testVal = 'mo im ma';
}]);;
위에서 보다시피 []안의 '$scope'란 문자열을 넣어주었고 그다음에 나오는 function에 이 $scope을 argument로 주었다.
$scope를 Controller에 injection해주는 구문이다.
Controller에서 Service를 호출할 때 사용하는 예제를 보면 더 쉽게 알 수 있다.
//service.js
var testService = angular.module('testService', []);
testService.factory("serviceDI", function() {
var msg = {
name : "DD"
};
return msg;
});
//controller.js
var testControllers = angular.module('testControllers', []);
testControllers.controller('CtrlForDI', ['$scope', 'serviceDI'
function ($scope) {
$scope.testVal = 'mo im ma';
$sopce.getVal = serviceDI.name;
}]);;
//getVal은 DD라는 문자열 값을 갖는다.
사용방법은 간단하다. 이미 정의한 service를 controller에서 문자열로 []에 argument로 넣어주면 된다.
Angular의 DI에 대해 더 자세한 이해를 하고 싶다면 다음 페이지를 보면 된다.