JSer.info #236 - jQuery 3.0α가 릴리즈 됐습니다.
아직 알파 버전이지만 .show()
, .hide()
의 구조와 jQuery.Deferred가 Promise/A+ 호환되도록 변경됐습니다. 그리고 2.x에서 deprecated 됐던 메서드를 삭제하는 등의 변경이 이루어지고 있습니다.
또, 이전에 단념했던 requestAnimationFrame를 사용한 애니메이션이 jQuery 3.0에서 활성화 됐습니다.
.show()
와.hide()
는 이미 많은 부분에서 사용하고 있기 때문에 알파 버전에서 어떻게 동작하는지 테스트하고 피드백을 해보면 좋을 것 같습니다.
A Formal Commitment to New Language Features에는 JavaScript의 Lint 도구 JSHint의 향후 방침에 대해 작성돼 있습니다.
ES6+의 코드를 변환하는 도구인 Babel은 차기 ECMAScript의 제안(Stage 0 포함)도 Stage 옵션으로 사용 가능하도록 돼 있습니다.
이 Stage 옵션으로 사용할 수 있는 구문 등은 지나치게 새롭기 때문에 JSHint 등의 도구에서 해석하기 위해서는 먼저 코드 자체가 통과하지 않으면 안됩니다.
JSHint는 유명한 파서 라이브러리인 esprima나 acorn을 사용하지 않고 내부적으로 별도의 파서를 가지고 있기 때문에 새로운 구문을 대응하는 비용이 큽니다.
또 JSHint에서 아직 불안정한 Stage 1: Proposal의 기능을 지원하면 향후 문제가 될 가능성이 있기 때문에 Stage 2: Draft 이후의 기능만 experimental로써 지원할 것이라는 방침 등에 대해 작성돼 있습니다.
조금 더 자세한 내용은 별도의 페이지에 작성해 놓았습니다. 관심있으신 분은 참고하시길 바랍니다.
이 이야기에서 재미있는 것은 JSHint와 같은 도구도 ECMAScript의 사양 책정 프로세스를 의식해 개발 흐름을 바꿔 나간다는 점 인것 같습니다.
ECMAScript의 사양 책정 프로세스나 Stage 같은 이야기는 나중에도 여러번 언급될 것 같습니다. 따라서 이를 잘 정리해 공유하고 싶습니다. 좋은 아이디어가 있다면 말씀해주세요.
아래 영상(슬라이드)은 러시아어이긴 하지만 사양 책정 프로세스를 재미있게 잘 풀어서 이야기해주고 있습니다.
헤드라인
jQuery 3.0 and jQuery Compat 3.0 Alpha Versions Released | Official jQuery Blog
blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/
jQuery 3.0α와 jQuery Compat 3.0α가 릴리즈됐습니다.
.show()
와 .hide()
의 성능을 개선했고, jQuery.Deferred가 Promise/A+와 호환되며, 비권장이었던 jqXHR.success, jqXHR.error, jqXHR.complete와 이벤트 등록 메서드인 .load
, .unload
, .error
를 삭제했습니다. 그리고 undocument한 메서드를 밖에서 접촉할 수 없도록 변경했고, 애니메이션에서 다시 requestAnimationFrame을 사용할 수 있도록 변경됐습니다. 또, 커스텀 셀렉터를 개선했습니다.
아티클
Introducing Incremental DOM — Google Developers — Medium
medium.com/google-developers/introducing-incremental-dom-e98f79ce2c5f
메모리 사용량을 낮추고 템플릿에서 닫는 태그가 없는 요소 등도 유도(motivation)되는 Google의 DOM 라이브러리(WIP) 입니다.
Diff 계산을 위해 Virtual DOM 처럼 전체적인 DOM Tree 구조를 메모리에 유지하지 않고, 불필요한 객체를 생성하지 않도록 하여 1 pass로 변경을 끝내 메모리의 효율을 높이고 있습니다.
canvas - JS로 Instagram의 사진 필터를 만들기까지 - Qiita
qiita.com/KENJU/items/78c0034d7e93fbe8f95a
Instagram과 비슷한 사진 필터를 Canvas로 구현하는 방법을 소개합니다. 또 많은 비용이 필요한 처리를 Web Worker 내에서 실시하는 방법도 설명합니다.
Developer Edition 41: View source in a tab, screenshot elements, HAR files, and more ✩ Mozilla Hacks – the Web developer blog
Firefox 41의 개발자 도구에서 개선된 부분을 소개합니다.
How fast are web workers? ✩ Mozilla Hacks – the Web developer blog
hacks.mozilla.org/2015/07/how-fast-are-web-workers/
WebWorker나 ShareWorker의 실행 비용과 메시지 전송 속도에 관해 이야기합니다.
a d3.js design pattern — Medium
medium.com/@billautomata/a-d3-js-design-pattern-16a6503dc86f
D3.js를 사용한 코드를 작성할 때의 디자인 패턴에 대해 작성돼 있습니다.
A Formal Commitment to New Language Features
jshint.com/blog/new-lang-features/
Babel 등을 이용해 ES.next의 기능을 사용해 볼 수 있지만, JSHint가 지나치게 새로운 구문을 지원하지 않는 이유에 대해 작성돼 있습니다.
자세한 내용은 JSHint: A Formal Commitment to New Language Features - JSer.info에 작성했습니다.
You Might Not Need Underscore | Reindex
www.reindex.io/blog/you-might-not-need-underscore/
Underscore.js와 같은 일을 하는 메서드를 어떻게 ES5, ES6로 작성할 수 있는지 비교하여 정리하고 있습니다.
React on ES6+ · Babel
babeljs.io/blog/2015/06/07/react-on-es6-plus
React를 주제로 ES6나 ES.next 기능을 소개합니다. 구체적으로 ES5로 작성한 코드가 어떻게 달라지는지 React.js를 예로 들어 설명합니다.
ES6 Promise Anti-Patterns and Best Practices
www.datchley.name/promise-patterns-anti-patterns/
Promise의 안티 패턴
Javascript Async Control Flow
kaye.us/javascript-async-control-flow/
ES.next의 async/await를 소개합니다. 또 이와 같은 것을 task.js나 co를 사용하여 당장 사용해 볼 수 있다고 합니다.
UI Testing with React Components | Toptal
www.toptal.com/react/how-react-components-make-ui-testing-easy
React Component의 테스트 방법에 대해 작성돼 있습니다.
Testing JavaScript Modules with Tape
ponyfoo.com/articles/testing-javascript-modules-with-tape
tape, proxyquire, Sinon.JS을 사용한 테스트에 관해 작성돼 있습니다.
tape를 사용한 테스트 작성법, proxyquire와 Sinon.JS를 사용한 Mock을 소개합니다.
슬라이드, 영상
▶ "Процесс стандартизации ECMAScript", Сергей Рубанов, MoscowJS 23 - YouTube
www.youtube.com/watch?v=5HNrQJsv4gU
ECMAScript의 사양을 책정하는 TC39의 프로세스를 소개하는 동영상과 슬라이드입니다.
≈≈≈ 라는 임시의 새로운 구문을 예를 들어 어떤 프로세스로 책정되는지 소개합니다.
사이트, 서비스, 문서
V8 JavaScript Engine
V8에 관해 보다 자세한 정보를 다루는 공식 블로그입니다.
WebGLStudio.js
WebGL 에디터입니다.
Jam3/math-as-code
여러가지 수학 공식이나 수식을 JavaScript로 표현하는 치트 시트입니다.
소프트웨어, 툴, 라이브러리
RReverser/babel-plugin-asm-js
github.com/RReverser/babel-plugin-asm-js
asm.js에 컴파일하는 Babel plugin 입니다.
IjzerenHein/autolayout.js
github.com/IjzerenHein/autolayout.js
iOS의 AutoLayout과 Visual Format Language 적 구현체를 가진 JavaScript 라이브러리입니다.
서적
High Performance Mobile Web - O'Reilly Media
shop.oreilly.com/product/0636920035060.do
2015년 7월 발매, 모바일 웹 사이트의 성능에 관해 다루는 도서입니다.