AngularJS 2는 올해 릴리징된 프론트엔드 도구 중 가장 쿨하고 섹시한 도구라고 독자는 믿고있습니다.
AngularJS 2를 실무환경에 적용함으로 얻는 이점.
AngularJS 2와 1의 차이점과 성능.
그리고 ReactJS와 AngularJS 2를 비교하여 퍼포먼스 데이터를 보여줍니다.
마지막으로 AngularJS 2 사용을 위한 번들러(Bundler) 그 중 Webpack, Systemjs, JSPM에 대해서도 안내합니다.
해당 자료는 XECon 2016에 발표되었습니다.
19. // 변수 정의
var content = 'New Item';
var message = 'Hello World';
var newDomObj = document.createElement('a');
// DOM 삽입
newDomObj.href = '#';
newDomObj.innerHTML = content;
document.body.appendChild(newDomObj);
// 이벤트 바인딩
newDomObj.addEventListener('click', function (event) {
event.preventDefault();
alert(message);
});
Vanilla JS
20. var app = angular.module('app', [
])
.controller('MainCtrl', function ($scope) {
// 변수 정의
$scope.content = 'New Item';
$scope.message = 'Hello World';
// 이벤트 바인딩
$scope.onClick = function ($event) {
$event.preventDefault();
alert($scope.message);
};
});
AngularJS 1
31. $(function () {
// 동적 HTML 태그 정의.
var elem = $('<input type="text" placeholder="An Example" value="Example" />');
// 동적 태그를 Body 하위에 삽입.
elem.appendTo('body');
// HomeWorks INPUT 컴포넌트 정의.
elem.input();
});
jQuery
32. var app = angular.module('app', [])
.directive('input', function () {
return {
restrict: 'E',
priority: 3,
link: function (scope, elem, attrs) {
elem.input();
}
};
});
AngularJS 1
Input 키워드 감지
대상이 Element 타입인 것만 체크
탐색된 대상에 전용 함수 수행.
38. 검색 엔진 최적화 (SEO)
정의
검색 제공업체 (Naver, Google) 등에서
웹 서버 페이지들을 크롤링 하는 부분에 포커스
이슈
SPA 특성 상 정적 페이지를 남기지 않기 때문에
검색 엔진이 동적 자바스크립트를 인식하기 어려운 문제
39. 검색 엔진 최적화 (SEO)
AngularJS 1 버전의 Hashbang 해시뱅 (#!) 사용 시 SEO가 어려움.
HTML5의 <base>를 이용한 동적 URL의 경우,
서버 사이드 랜더링으로 정적 페이지를 별도로 추가하여 진행.
?_escaped_fragment 및 <meta name=“fragment” />는
2015. 10 Google에서 Officially Deprecated 항목.
41. AngularJS 2
타입 스크립트 (Typescript)와 AngularJS 2
AngularJS 1 vs AngularJS 2
번들러(Bundler)와 Webpack
42. AngularJS 2
2016년 5월 3일 AngularJS 2 RC 버전 발표.
2016년 11월 17일 2.2.1 Released.
AngularJS 2는 Typescript”도” 지원하는 컴포넌트 기반 프레임워크.
43. Typescript
Typescript는 AngularJS 2에서 지원하는 언어의 종류.
Microsoft사에서 2012년 발표된 Javascript 확장형 언어.
AngularJS 2에서는 Google과 Microsoft의 콜라보레이션.
Typescript는 이름에 맞게 타이핑 언어의 특성을 가짐.
45. Typescript
OOP 기반의 컴포넌트 작성에 대한 문제 해결.
런타임에서 발생하는 오류를 타입기반 특성으로 미연에 방지.
모듈의 다형성, 상속에 대한 요구사항 지원.
46. class Alpaca {
// Private member variables.
private message: string = 'boowoo~ boowoo!!';
// Alpaca class's constructor.
constructor() {
console.log(this.bark());
}
// Member function
bark(): string {
return this.message;
}
}
Typescript
47. AngularJS 2
타입 스크립트 (Typescript)와 AngularJS 2
AngularJS 1 vs AngularJS 2
번들러(Bundler)와 Webpack
48. AngularJS 2 AngularJS 1
Component 기반
HTML5 Base URL 사용
Typescript를 통한 OOP 지원
Renderer 지원
Javascript, Typescript, Dart 지원
Scope, Controller, Directive 기반
HTML5 Base URL 사용, 해시 뱅 사용
OOP 미지원, 대체 디자인 패턴 지원
jQuery lite 빌트-인
56. AngularJS 2
타입 스크립트 (Typescript)와 AngularJS 2
AngularJS 1 vs AngularJS 2
번들러(Bundler)와 Webpack
57. AngularJS 2와 번들러(Bundler)
AngularJS 2를 Typescript로 개발 할 경우,
컴포넌트 모듈 별 Javascript 를 분리하고
Import를 통해 호출하게 되는데,
이때, Import는 브라우저에서 지원하는 기능이 아니기 때문에
번들러(Bundler) 사용이 필수적.
58. 번들러(Bundler)의 배경
ECMA6, Typescript 도입으로 인해 요구사항이 더욱 높아짐.
모듈 단위로 js 파일을 분리하고,
Import 등으로 해당 컴포넌트/클래스를 불러오는 과정에서
번들러(Bundler)는 Import를 지원하지 않는 브라우저에 사용 됨.