JSer.info #166 - JavaScript test runnerのKarma v0.12.0がリリースされました。
Jasmine 2.0.0のサポートやSourcemapによるスタックトレースの書き換えがサポートされました。
sourceMap
サポートを使うと、例えばkarma-traceur-preprocessorではtraceurで変換したコードをテストとして実行しますが、そのテストで失敗した時に表示するスタックトレースは変換前のコードを出せるようになります。
(Preprocessorsとなるmoduleがsourcemapに対応している必要があります)
JavaScript test frameworkであるMocha 1.18.0がリリースされました。
メインとなるのはmochaがpromisesのテストをサポートしたことですが、詳細はMochaがPromisesのテストをサポートしました | Web scratchで紹介しています。
上記の記事でも紹介していますが、PromisesのテストはPromises自体の強力なエラーハンドリングによって、逆にテストが面倒になってしまう部分があります。(そのためtest framework側がサポートした)
そのようなPromisesのエラーハンドリングについてMaking Change.org — Promises and Error Handlingという記事では、エラーハンドリングを中心にガイドライン的なものが書かれています。(Guideline 4がまさにmochaのテストの例と同じです)
A Year with Browserify - ÆFLASH という記事では、browserifyで実際に開発してみてのTipsが色々書かれています。
npmの機能を活用する方法やビルドの高速化、既存ライブラリとの組み合わせ等ちょっと触って気になる部分については大体書かれている気がします。
Browserifyに興味をもった方は一度読んでみると参考になる部分が多いと思います。
ヘッドライン
WebStorm 8 Beta (build 134.1503) | JetBrains WebStorm Blog
WebStorm 8βリリース。
Angular/Dartのサポート改善、デバッガーでJSONのinspectが出来るように、ES6 modulesのサポート、Terminalで256-colorのサポート、Spy-jsの改善等
Chutzpah - Chutzpah 3.2 – A smarter approach to compilation - Matthew Manela - Farblondzshet in Code
VSのTest runner拡張であるChutzpah 3.2 リリース。
TypeScript等のaltJSのサポート、テストパターンを指定してのテスト実行、Require.jsのサポート改善
bower/CHANGELOG.md at master · bower/bower
Bower 1.3.0リリース。
opt-inで統計データの収集するBower Insight、パッケージがAMD/CJS/globalなのかを示すmoduleType
の追加、installの前後にhook scriptを設定可能に、SVNのサポート
Karma - Changelog
Karma 0.12.0 リリース。
Jasmine 2.0のサポート、ファイル監視のパフォーマンス改善、sourcemapのサポート(スタックトレースの書き換え)
mocha/History.md at master · visionmedia/mocha
mocha 1.18.0リリース。
promiseのテストをサポート。
https://github.com/azu/mocha-support-promise promiseオブジェクトをreturnするだけで良くなる
- Adding promise support to runnables (and thus tests). by domenic · Pull Request #329 · visionmedia/mocha
- azu/mocha-support-promise
- MochaがPromisesのテストをサポートしました | Web scratch
The Pure Blog — Pure 0.5.0 Release Candidate 1
Pure 0.5.0 RC1 リリース
アーティクル
A Year with Browserify - ÆFLASH
Browserifyでの開発についてよくまとまってる。
npmで管理できるメリット、npm linkやnodeモジュールでの依存関係の解決がそのまま利用できる。
既存ライブラリがある場合のビルドを高速化する方法としてshimやビルド自体を分ける事、バージョンが異なるライブラリの依存をaliasで解決。
gruntでのビルド、相対パスが深くなるのをaliasMappingsでフラットにする方法などよくまとまっている。
Node.jsのrequireをインライン化、無駄なuse strictを取り除くモジュールを書いた | Web scratch
require
で読み込むファイルのインライン化 と 無意味な "use strict"
を削除するnode moduleについて。 JavaScript ASTを使った書き換えの方法について
Unit Test like a Secret Agent with Sinon.js
Sinon.JSのspy、stub、mock、fake serverを使ったテストの書き方についてのチュートリアル
ExpressJS 4.0: New Features and Upgrading from 3.0 ♥ Scotch
ExpressJS 4.0 rc1リリース。
ExpressJS 4.0での変更点等についてまとまってる。
Lesser-Known JavaScript Debugging Techniques
特定のプロパティやイベントやメソッドが呼ばれた時にログ、ブレークポイントを貼れるユーティリティライブラリについて
Naming JavaScript Functions - @rjzaworski
無名関数と名前付き関数式とのスタックトレースの比較。
また関数として分ける場合の命名規則について書かれてる
Making Change.org — Promises and Error Handling
Promisesのエラーハンドリングについて。
rejectする時はエラーオブジェクトを渡す、onRejectが呼ばれないパターンとcatch
の活用、finally
はcleanupに使う、done
を呼ぶことで次の処理に移る場合はエラーの時も忘れずに呼ぶ
Async Programming Part 3: Finally - Brian Cavalier
Promisesでのエラーハンドリングのプラクティス。try-catchとpromiseの場合の違い。
otherwise
は catch
と同じ。
promiseを処理するfinally的なものを書くときに、渡した値を捨てないようにする
iOS 7.1: new minimal UI mode and old bugs on Safari | Breaking the Mobile Web
iOS7.1のSafariのminimal-uiとその他バグについて
スライド、動画関係
ES6 - episode 1
ES6の機能を紹介してるスクリーンキャスト
ES6 - Next Generation Javascript
ES6の新しいsyntaxについてのスライド.
syntaxの紹介、ES5との違い、サポートブラウザの状況がよくまとまってる。
特に...
の使い方についてユースケース、Generatorの使い方、Typed objects、module構文について詳しい
MVC in vanilla javascript on Vimeo
ライブラリを使わないで、Model,View,CollectionというBackbone.jsっぽい要素を使ったアプリを作るスクリーンキャスト
The Phenomenal Fluent 2014
JavaScriptのAPIデザインについてのスライド。
サイト、サービス
emadurandal/emberjs-guides-japanese-translation
Ember.js Guides の日本語訳
Sinon.JS - hifive
Sinon.JSのAPIリファレンス的なサイト。 それぞれのメソッドの解説等も書かれてる
ソフトウェア、ツール、ライブラリ関係
marmelab/gremlins.js
ウェブアプリのMonkey testingライブラリ。
ストレステストの細かいロジックやログ等も設定出来るようになってる
t32k/stylestats
CSSのサイズやルール/セレクタ数等のメトリクス的な情報を出してくれるコマンドラインツール
azer/prova
tape + browserifyなtest runner。
テストの失敗の表示に prettify-error を使ったりして見やすくしてる
azer/memdiff
BDDなテストを書く感じで書けるnode.jsのメモリリークの調査ライブラリ。
termi/es6-transpiler
ES6をES5に変換する実装。
traceur-compilerと違って、no runtime libraryで実行出来るようする等の目標が挙げられている
書籍関係
You Don’t Know JS: Scope and Closures - O’Reilly Media
JavaScriptのスコープとクロージャー周りについてだけ扱った書籍
Amazon: Sass&Compass徹底入門 CSSのベストプラクティスを効率よく実現するために [大型本]: Wynn Netherland, Nathan Weizenbaum, Chris Eppstein, Brandon Mathis, 石本 光司 (株式会社サイバーエージェント), 株式会社トップスタジオ
2014年3月18日発売
Sass and Compass in Actionの翻訳本