canvas要素の面倒なところ

面倒かどうかだけで、優劣とかとは別の話。間違い・勘違いがあるかもしれません。

動的な色の指定が面倒くさい

context.fillStyle = 'rgba(255,255,255,' + alpha + ')';
context.strokeStyle = 'rgb(' + v + ',' + v + ',' + v + ')';

文字列連結とかきれいじゃないように感じる。素直に関数なりライブラリなりを使えばいいのだけれども、書き捨てコードでは面倒くさい。

楕円が描けない

arcでは正円しか描けない。
scale(1,2)とかで楕円っぽくなるけれども、strokeの場合は線の太さも変わってしまう。ベジエで近似すればいいけど面倒くさい。

ドメインの画像を一度でも書き込むとgetImageDataできなくなる

この辺り。セキュリティ上、別ドメイン(別オリジン)の画像をdrawImageで描画することはできるけれども、そこからgetImageDataとかでピクセル単位のデータをとることはできない。createPatternでパターン化したりはできるが、そのパターンで別のcanvasに書き込んだらそっちも道連れになる(はず)。面倒くさい。

アンチエイリアスを制御できない

たまにアンチエイリアスなしの線とか文字、補間しない画像拡大とかを使いたい時もある。ビットマップフォントとか。ピクセル操作を使えばなんとかなるけれども面倒くさい。