네이버 박재성
2015.4.29
2009년 Miško Hevery의 개인 프로젝트로 시작.
처음 개발시 웹 개발자를 대상으로 하지 않았고,
개발은 모르지만 HTML은 이해하는
디자이너와 같은 사람들을 대상으로 함.
첫 AngularJS 프로젝트 : Google Feedback
기간 | LOC | |
---|---|---|
GWT | 3명 x 6개월 = 18MM | 17,000 |
AngularJS | 1명 x 3주 = 0.75MM | 1,000 |
컴파일은 DOM트리를 순회하면서 지시를 찾아 매칭하고(Compile 과정), 이후 지시자와 스코프를 결합(Link 과정)해 모델의 변경을 뷰에 출력하는 일련의 처리 작업을 의미
구분 | 종류 | 크기(byte) | Total(byte) |
---|---|---|---|
DOM 제어(Jindo) | HTML | 1,164 | 4,951 (100%) |
JavaScript | 3,787 | ||
AngularJS | HTML | 2,059 | 3,161 (63.84%) |
JavaScript | 1,102 |
← click to refresh →
Angular JS Usage Statistics
“Angular is mostly being used by people from a Java background because its coding style is aimed at them. Unfortunately they aren’t trained to recognise Angular’s performance problems.”
Angular 2.0 - “I don’t think Angular will survive the rewrite.”
100개 목록 데이터가 HTML에 포함되어 처리되는 경우
← click to refresh →
데이터 편차에 따른 처리 속도
One-Way Data Binding vs. Two-Way Data Binding
<body ng-app="myApp">
<div ng-controller="myControllerList">
<ul>
<li ng-repeat="fruit in fruits">
<span>{{fruit.name}}</span> / <span>{{fruit.qty}}</span>
</li>
</ul>
<button onclick="location.reload()">reload</button>
</div>
<script type="text/javascript" src="https://code.angularjs.org/1.3.8/angular.min.js"></script>
<script type="text/javascript">
angular.module("myApp",[])
.controller("myControllerList", function($scope) {
$scope.fruits = [
{ name: '메론', qty: 9 },
{ name: '망고', qty: 3 },
{ name: '바나나', qty: 1 }
];
});
</script>
</body>
*FOUC(Flash Of Unstyled Content) -
http://en.wikipedia.org/wiki/Flash_of_unstyled_content
양방향 데이터 바인딩을 위해 모델로 지정된 요소에
여래 개의 이벤트가 바인딩 된다.
“Google does not use Angular in production for their flag apps like Gmail or Gplus.”
muchas gracias