jsdom 2.0.0 릴리즈
DOM을 자바스크립트로 구현(Node.js에서도 동작하는 DOM 구현)한 jsdom 2.0.0이 릴리즈 됐습니다. 특별히 기능을 추가한 것이 아닌데도 2.0.0을 발표한 이유는 지금까지는 DOM Level 1, 2, 3로 나눠 구현하고 있었지만 향후는 Living Standard 모델로 구현해 나간다는 방침을 표하기 위해서라고 합니다. 버전 번호를 붙이는 것은 장점보다 단점이 많다고 판단하고 있으며 jsdom 내부에서도 level 별로 나누기가 힘든 수준에 이르렇기 때문에 Living Standard 모델로 바꾸는 듯 합니다. 따라서 내부적인 구조를 크게 변경하는 리팩토링을 하고 있다고 합니다. 하지만 사용자 인터페이스에는 큰 변화가 없을것으로 보입니다.
6to5 2.0.0 릴리즈
ES6 코드를 ES5로 변환하는 도구인 6to5 2.0.0(현 시점 2.2.0 까지 나와있습니다만)이 릴리즈됐습니다. Flow의 타입 어노테이션이 작성돼 있어도 패스하고 제거하도록 반영됐으며 ES5, 6의 Polyfill 라이브러리를 Core.js로 변경했습니다. 그리고 성능 개성 등이 이루어지고 있습니다. 자세한 내용은 CHANGELOG를 참고해주세요.
HTMLBars-A Feature-by-Feature Review
위 아티클에는 Ember가 차기 템플릿 엔진으로 채용한 HTMLBars 템플릿 엔진의 구조를 소개하고 있습니다. 현재 Ember는 Handlebars를 사용하고 있는데 이 엔진은 렌더링되기 까지 아래와 같은 흐름으로 동작합니다.
- Teamplte -> AST -> HTML String -> DOM
HTMLBars는 Handlebars의 문법과 거의 흡사하지만 렌더링되기 까지의 흐름이 다릅니다.
- Templatre(HTMLBars 컴파일)-> JavaScript 함수 -> DOM
React가 JSX(Template)에서 React.createElement와 같은 함수로 변환하는 것과 비슷하다고 생각하면 됩니다. 이와 같은 방식은 “HTML String” 파싱 작업을 제차 안해도되므로 성능 개선에 효과가 있다고 합니다.
릴리즈 소식
- Node v0.10.35 (Stable) : Node v0.10.35가 릴리즈됐습니다. 2014년 12월 23일자 소식에서 전해드렸던 루트 인증서 문제가 수정됐습니다.
- Ember.js – Ember.js 1.9.1 Released : Ember.js 1.9.1이 릴리즈됐습니다. 태그의 이스케이프는 자동으로 되고 있었지만 javascript: 등을 지정한 경우에도 XSS이 될 가능성이 있기 때문에 자동적으로 이스케이프 되도록 변경됐습니다.
- Release v1.5.0 · eslint/espree : esprima를 fork한 espreee의 1.5.0이 릴리즈됐습니다. JSX의 파싱을 지원합니다.
- Brackets 1.1 and Extract for Brackets 0.6 Now Available : Brackets 1.1이 릴리즈 됐습니다. 크로스 브라우저 라이브 프리뷰 기능을 시범적으로 지원합니다.
읽을거리
- Shape Security Labs: Announcing the Shift JavaScript AST Specification : SpiderMonkey AST는 내부 표현으로써 시작되었기 때문에 도구에서 다루기 힘든 부분이나 ES6의 지원 문제가 발생했습니다. “Shift” 프로젝트는 그 AST의 사양을 책정하는 프로젝트입니다. 현재 파서, 제너레이터, 벨리데이터(validator), SpiderMonkey AST에서의 변환 도구, Java의 구현 등이 공개(Shape Security)돼 있습니다.
- Fast-Forward Performance – The Future Looks Bright : 성능 개선과 측정에 필요한 API와 브라우저 지원 상태에 대해 정리돼 있습니다.
- Symbols in ECMAScript 6 : ES6의 Symbols에 대해 작성돼 있습니다. Symbol의 사용 방법, const Symbol()을 고유 값으로 이용, WeakMap과 구현한 프라이빗, 메타 값, iframe, 왜 문자열이 아니라 Symbol인지 등에 대해 설명합니다.
- Smashing Magazine의 성능 개선 사례 중 굉장한 건(일본어[구글번역]) : Smashing Magazine의 성능을 개선한 사례에 대해 작성돼 있습니다. Critical Rendering Path의 최적화, 성능 개선의 지표를 Speed Index <= 1000 하고 있다는 점 등을 소개합니다.
- Functional Reactive Programming with the Power of Node.js Streams : Node의 Stream과 FRP를 살펴볼 수 있는 아티클입니다. 리액티브 프로그래밍는 어떤 경우에 유용한지, FRP의 라이브러리로써 RxJS나 Bacon 그리고 Node의 Stream과 호환성을 높힌 Highland.js 라이브러리도 소개합니다.
- The state of the Web Notifications API : Web Notifications API의 events 위주의 사양이 W3C와 WHATWG가 서로 다르다는 것과 여러 브라우저에는 어떻게 구현돼 있는지 설명합니다.
- Javascript-globalization by rxaviers : ECMA i18n API나 FormapJS 등 국제화 라이브러리의 특징과 기능에 대해 정리돼 있습니다.
- Flux React의 현황 확인 편(일본어) : Flux와 React에 대한 슬라이드입니다. 아키텍처 옵저버 패턴, 단방향 데이터 흐름, 장/단점, View 라이브러리로 React를 선택한 이유에 대해서 설명합니다. 또 Flux로 구현 했을때의 차이점에 대해서도 이야기합니다.
라이브러리
- JSVerify : QuickCheck를 시행하는 라이브러리입니다. Mocha와 Jasmine을 지원합니다.
- azu/textlint : 텍스트나 마크다운 문법을 검증하는 도구입니다. ESLint 처럼 규칙을 자바스크립트를 이용해 확장할 수 있습니다.
- mapbox/pbf : protocol buffers를 구현한 경량 라이브러리입니다.
도서
- Knockout.js – O’Reilly Media : Knockout.js에 대한 도서입니다.
JSer.info를 번역하여 공유드리고 있습니다.
JSer.info는 JavaScript Weekly, Badass JavaScript, JsMag, A Minute With Brendan, The Changelog를 참고, 자바스크립트의 주요 소식을 공유하는 사이트입니다.
감사합니다.
0개의 댓글