Fork me on GitHub

2013-12-23のJS: Jasmine 2.0、Promises x Generator、Koa、ストリーミングビルドシステムgulp

Edit on GitHub 編集履歴を見る

JSer.info #154 - JavaScripttテストフレームワークのJasmine2.0がリリースされました。(一つ前は1.3.x)

DailyJS: JavaScript Developer Survey 2013: Resultsのアンケートでは、Mochaに押されながらも利用者が一番多いテストフレームワークでした。

Jasmine2.0では破壊的な変更も多いですが、Mochaのようなdoneを使った非同期テストの対応やspyやassertionの改善、
custom matcherの仕組みの変更やレポーター画面変更や、Nodeの対応の改善等かなり幅広い変更が入っています。


 JavaScript Promises: There and back again - HTML5 Rocksという記事ではES6 Promisesについてよくまとまっています。
jQueryのDeferred等のPromisesライクなものを扱う方法や、thenやcatch、allといったメソッド等、Promisesを扱うのに必要な事について書かれているので一度読んでおくと思います。

KoaというNodeのExpressの次世代とも言えるようなウェブアプリケーションフレームワークが公開されました。
特徴的なのはES6のgeneratorをベースとしている事や、Core自体はひとつもミドルウェアが入ってないことなどが挙げられます。
これによりコードベースが小さくなることやエラーハンドリングのし易さなどより強固なウェブフレームワークを作る事を目的としています。

Generatorを使うとコードを非同期処理も同期的な感じにできて見やすく書けることや、
上記のPromisesの記事でも出ていますが、Promisesと合わせることで一つのtry-catch内に非同期処理を並べてまとめてエラーハンドリング出来たりする等、
コードの書き方も結構変えられる部分が出てきます。 


gulpというストリーミングベースのビルドシステムが公開されました。
(コマンドラインのパイプで繋いでいく感じをイメージするといいです) 

JavaScriptのビルドシステムというとGruntが大分定着した感じだと思いますが、
Gruntはひとつのタスクが複数の役割を持っていたり、コードで書きはしますが実際はオブジェクトの設定を並べる感じのものとなっています。 

gulpはオブジェクトの設定を並べる感じではなく、コードでパイプを繋いだタスクを定義して行く感じになっていて、
gulp自体が持つAPIもシンプルで、一つのプラグインは一つのことをするという原則を持たせています。
また、ストリーミングをベースとするので一時的フォルダなどを作らなくても良いことになります。 

以下でGruntとの違いなどについて説明されています。

gulpの根幹にあるストリーミングという概念については以下のドキュメントを参照するといいです。


ヘッドライン

JavaScript testing library ReleaseNote

Jasmine 2.0リリース。
mochaスタイル(done)の非同期テストに対応、RubyベースのCLIがNode/Gruntに変更、IE8未満は非サポート、spiesのsyntax変更等

JavaScript IDE ReleaseNote

Brackets Sprint 35 リリース.
Mac ChromeでのLive Preivewの改善、利用するJSとLESSを最適化して起動時間の改善等

jQuery ReleaseNote

jQuery 1.11.0と2.1.0 β3リリース.

JavaScript library ReleaseNote

Dojo 1.9.2リリース.
IE11サポート, Pointer Eventsへの対応.
Dojo2.0でDOH testsを http://intern.io/ に移行させる計画

node.js ReleaseNote

Node v0.10.24リリース.

PhoneGap ReleaseNote

PhoneGap 3.3.0リリース.
Android KitKat対応

XSS JavaScript library ReleaseNote

React v0.5.2, v0.4.2リリース.
XSS脆弱性に関するセキュリティ修正

JavaScript ReleaseNote

RxJS 2.2リリース.
ES5をサポートしてるブラウザがメインとなり、レガシーブラウザはrx.compat.jsでのpolyfill実装となる.
rx.asyncにPromisesとのブリッジの追加等

YUI ReleaseNote

YUI 3.14.1 リリース.
IE11、Android4.4対応

アーティクル

JavaScript Promise リファレンス

ES6 Promisesについて。
既存のPromiseライクも扱えるようにするPromise.cast、Promise.thenの使い方、エラーハンドリング、Promiseとeach、Promise.all、Generatorと合わせた場合について

JavaScript firefox デバック

Firefox DevToolsにEscキーでコンソールを分割表示する機能、jsの整形機能、デバッグ地のツールチップ、カラーピッカーの追加等

Chrome デバック

Chrome DevTools の最近アップデート内容についてのまとめ

node.js ECMAScript

Expressの人達により作られてるGeneratorsベースのKoaについて。
Generatorを使った書き方、エラーハンドリング、非同期処理、Key-value objectsのyeild等

JavaScript MVC まとめ

JavaScript MV*ライブラリ比較

CSS document 翻訳

CSS管理ルールのMultilayer CSSについてのドキュメント翻訳

CSS animation

CSSアニメーションとGPUレイヤーについて.
GPUを使った場合のアニメーションが何故高速なのか、また適応範囲が大きすぎるが逆に問題が起きるのかが見た目で分かりやすくまとまってる。

WebStorm JavaScript

WebStormの機能紹介まとめ

webworker

WebWorkerのTransferable Objectsについての解説.
データをコピーせずに所有権を渡す事でオーバーヘッドが少なくなる

JavaScript document Tools

JavaScriptのドキュメントツールの比較

サイト、サービス、ソフトウェア関係

node.js 歴史

タイムライン表示で振り返るNore,jsの歴史

github browser testing webservice

Visual Regression Testingサービス.
Githubのpull-requestと連動して、指定ブラウザでのスクリーンショットをissueに貼り付けて見た目を比較出来る。

Eclipse TypeScript plugin

TypeScriptサポートをするEclipseプラグイン

firefox デバック addon

Firefox Dev Toolsに選択中の要素のDOMオブジェクトを表示するボタンを追加するアドオン.
inspect($0)を行うのと同様の事をしてる。

ツール、ライブラリ関係

JavaScript Grunt console Tools

ストリーミングベースなビルドシステム.
Gruntのようにオブジェクトベースな設定ではなく、コードとして設定する方向が強くでてる。
またプラグインがひとつのアクションだけを持つように推奨されてる
http://travismaynard.com/writing/no-need-to-grunt-take-a-gulp-of-fresh-air

node.js web library

Expressの人たちが作ってるNodeのウェブフレームワーク.
Generatorが前提の構造になっており、Expressとアーキテクチャが違うので新規作成されてる。

CSS Tools

CSSプリプロセッサ.
CSS Variablesやcolor()、calc()などCSSの仕様策定が進められてる機能を使えるTranspiler的なツール

ECMAScript JavaScript i18n library

ECMAScript Internationalization API (ECMA-402) 互換のAPIを実装しているライブラリ

JavaScript DOM library

handlebarsを使ったテンプレートにpub/subなイベントやカスタムテンプレートのヘルパーを使えるライブラリ

Grunt

Gruntモジュールを遅延ロードする補助ライブラリ

TypeScript Tools

TypeScriptをLintするツール.
ESLintみたいにルールごとに実装されている

CoffeeScript TypeScript Tools

CoffeeScriptをTypeScriptに変換するツール.

JavaScript library

google-code-prettifyでシンタックスハイライトしたコードに、コメントで指定した部分にアノテーション的な表示を行えるライブラリ

書籍関係

JavaScript book

2014年2月発売
Dr. Axel による JavaScriptという言語の機能、ベストプラクティスやパターン、落とし穴等についての書籍

JavaScript book

2014年2月発売
ウェブアプリ開発についての書籍
https://github.com/semmypurewal/LearningWebAppDev

mobile ios Android book

2013年12月20日発売
Apache Cordova(PhoneGap)、WebViewアプリについての書籍
http://blog.asial.co.jp/1238

この記事へ修正リクエストをする
JSer.info Slackに参加する