[번역] Angular JS 1.4에서 무엇이 달라질까?

Cédric Exbrayat의 포스팅을 번역한 글 입니다.

 

Angular 팀에서는 지금 2.0 버젼 디자인 작업을 열심히 하는 중이지만, 이게 1.X 버젼 작업을 그만 뒀다는 뜻은 아니에요. 반대로: PATE BACON DARWIN이 전체 팀의 리더를 맡아서, 1.3 버젼 유지보수와 1.4 버젼 릴리즈를 위한 작업을 하고있어요. 1.4 버젼은 ngConf 즈음 해서 나올 것임으로, 2월 말이나 3월 초에 나올것으로 예상되네요. 그리고 1.5버젼은 15년 가을 쯤 해서 릴리즈 될 예정이구요.

그래서 1.4버젼에서는 무엇이 달라질까요? 한번 살쳐봅시다.

일러두기 : 저는 특별한 정보원에서 이 정보들을 얻은게 아니에요. 저는 단지 여러분들에게 상상과 영감을 주기 위해서, Public Design DocumentsGithub, AngularJS 1.4 Planning Meeting video를 보고 작성한 글이에요. 그러니까, 1.4버젼에 이것들이 포함되지 않더라도 너무 화내지 마세요 😉

Router

가장 큰 변화중의 하나는 새로운 router에요. 여러분이 알지도 모르겠는데, AngularJS는 분리되어 있는 모듈 안의 기본 router ( 작동은 하는데 좀 제한적인 )로 작동해요. 여러분께서는 아마 강력하고, 인터넷에 올라오는 다른 ngRoute 모듈 (예를 들면, ui-router)과 교체 가능할 정도로 아름답게 모듈화 된 새로운 router를 필요로 할지도 모르겠네요. 2.0 릴리즈에서는 커뮤니티 피드백,Durandal같은 프레임워크, 기타 다른 모듈들에서부터 영감을 받은 새로은 router가 들어갈거에요. 좋은 소식은, 이 새로운 router가 1.x 버젼에서도 호환 된다는 것이에요. Brian Ford가 지금 이 작업을 진행중이고, 여러분은 이 Sample app(phone-kitten)에서 early preview를 볼 수 있어요.

흥미로운 부분 잠시 보실까요?:

보면 알겠지만, component 방식을 사용하고 있죠. 이 방식은 이미 다른 JS 프레임워크들에서 사용되고 있고, 표준도 이런 방향으로 가고 있죠. Angular 2.0은 완벽하게 components 위주로 디자인 될 것이다 (1.x 버젼은 아니였음!). 이 새로운 router는 1.x 버젼에서 ‘component 방식’을 사용하게 할 것이며, 우리에게 다음 major version 사용을 위한 준비, 그리고 (아마도) 다음 major 버젼으로의 마이그레이션 시간도 줄여 줄 수 있겠죠. 진짜 1.4버젼에서 나올지 안나올지는 모르지만, 어쨌든 곧 나올거라는걸 예상할 수 있네요.

i18n

아마 아시겠지만, AngularJS에서 다국어 지원은 좀 약해요. 만약 당신이 좀 진지하게 뭘 좀 하고 싶으시면, angular-translate같은 개 쩌는 외부 모듈을 써야했죠. 그래서 Angular 팀은 다국어 지원과 관련해 검토중이고 우리는 새로 나올 모듈이 골치아픈 부분에서 우리를 도와줄거라고 예상할 수 있겠죠.

$http

$http service는 지금보다 유연하게끔 리팩토링 될 거구요, query parameter를 인코딩하는 service를 제공 할 지도 모르겠네요. (지금까지는 인코딩부분을 쉽게 오버라이드 하지 못했기 때문에 백엔드에서 특정 포멧을 요구할때 좀 골치아팠죠!)
또 XMLHttpRequest를 만들 수 있는 (당신이 지금 우리가 접근할 수 없는 기본 설정 이외에 것을 원한다면요) 서비스도 새로 생길것 처럼 보이네요.
테스트 측면에서는, 향상된 mock DSL을 위한 부분이 있네요. 지금은 $httpBackend mock을 써서 수동으로 expectation과 flush request를 작성해야 했는데, 1.4 버젼부터는 더 쎄진 DSL을 사용해서 이걸 더 단순하게 할 수 있을것처럼 보여요.

Forms

1.3에선, ngModelOptions라는 form에 관련된 신기능들이 많이 들어왔죠. (ngModelOption은 form의 필드마다 기능을 지정해 줄 수도 있게 해줬고, $asyncValidators로 비동기적으로 정보를 검증하게도 해줘요)
몇몇 예외상황에서의 문제를 고치고 퍼포먼스를 향상시키기 위해, 어쩌면 ngModelController의 API를 리팩토링 할지도 몰라요. 이게 아마 포맷팅과 검증을 더 쉽게 할수 있도록 해 줄지도 몰라요. (예를 들면, 여러개의 필드를 비교해서 다른 필드를 검증한다던지!)

Cookies

일단, 1.x와 2.x, 두 버젼에서 사용 가능한 더 강력한 $cookies 서비스 (아마 기존에 있는 라이브러리를 기반으로 새 모듈에 래핑할 것 같은데)가 나올거에요.
지금의 모듈은 쓸만 하지만, 만료시간이나 저장위치, 보안 쿠키 지원 등의 설정을 지원하지 않으니까요….

Small directive as components

웹 개발은 Component의 시대로 접어들고 있습니다. 우리는 이미 컴포넌트를 directive라는 형식으로 AngularJS에서 사용하고 있지요. Egghead라는 쩌는 시리즈를 찍은 Jojn Lindquist는 작은 directive를 만들기 위한 새로운 constructor를 제안했어요. (serivce가 provider의 짧은 버젼인것처럼요).

↑이거의 단축버젼으로, ↓요걸 제시했어요

좀 쩔 듯!

Tiny useful thins

작지만 유용한 개선사항인데요, 모듈을 두번 정의하면 경고창을 띄워 줄 거에요. 지금은 두번째 정의된 모듈이 살며시 첫번째 모듈을 지워서, 우리가 머리를 쥐어 뜯으며 에러를 찾게 만들죠.

limitTo 필터는 드디어 페이징을 지원 할 거에요.

몇몇 작업들은 더 모듈화된 코어와 작아지고 조합 가능한 모듈들로 대체될거에요. 이건 AngularJS를 세심하게 수정해서 쓰는 모바일 개발자들한테 개이득일거에요 (단지 필요한 모듈을 붙이면 되니까요!), 게다가 이 리팩토링 이후에, 몇몇 서비스들이 새로 만들어질거에요. 예를 들면 날짜와 시간을 관리하는 $time 같은거요. 그렇게 되면 test용 mock 만드는게 더 쉬워지게 되겠죠.

Docs도 메테리얼 디자인으로 개정될거구요.

게다가, 우리는 parser와 관련된 작업이 끝나고 IE8을 위한 legacy code가 삭제되면 퍼포먼스 문제가 향상될걸 기대해 볼 수 있죠.

결론적으로,  1.x버젼이 죽으려면 시간이 좀 걸릴것 같고, 이쁘고 흥미로운 것들은 계속 추가 될 것처럼 보이네여.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.