Hyperapp, React, Vue.jsで同じサンプルアプリを作ってサイズを比較してみた

私は脱jQuery(脱DOM操作)したい系の者で、 React, Vue.js, Hyperapp については初心者です。サンプルコードは公開しておりますが、正確さは保証いたしません。この記事は参考程度に読んで頂ければと思います。

作ったもの

以前に React, Vue.js で製作したRaspberry Piの無線LANをmicroSDで簡単に設定するためのツールを Hyperapp でも作ってみました

wpa-supplicant-conf-tool.png

ツールへのリンク: https://mascii.github.io/wpa-supplicant-conf-tool/

このツールはブラウザ上でSSIDとパスフレーズを入力してリストに追加するだけで簡単にRaspberry Piの無線LAN設定ファイル(wpa_supplicant.conf)を作成でき、これをPCでRaspbianの入ったMicroSDに書き込んでおくことでRaspberry Pi起動前から無線LANの設定ができるものです。

(Raspberry Piをお持ちの方には、一応実用的なツールとして使えるものとなっており、「サンプルアプリ」ではないのかもしれませんが、ToDoリストに毛が生えた程度のアプリのため、タイトルに「サンプルアプリ」というキーワードを入れております)

リポジトリ

https://github.com/mascii/hyperapp-wpa-supplicant-conf
https://github.com/mascii/react-wpa-supplicant-conf
https://github.com/mascii/vue-wpa-supplicant-conf

比較対象

  • サンプルアプリのソース(JavaScript)をwebpackでバンドルしたJSファイルのファイルサイズ
    • プロダクションビルド
    • UglifyJS による minify あり

バンドルするnpmパッケージ

サイズを比較してみた

サイズ(Bytes)
React 110293
Vue.js 76012
Hyperapp 12026

React と Hyperapp とで98KBも違いが出ました。

Hyperapp を使ってみた感想

  • Hyperappで作るとかなりサイズが小さくなることを確認できた
  • JSXが使えるため、Reactに慣れている方は苦労しないと思った(onclick のように camelCase でないといった違いはある)
  • 情報は少ないので大きな規模のプロダクトには不向きだと思うが、個人で小さなものを作るのには良いと思った
  • Flash領域が限られていたり、電池持ちなどの考慮が必要なIoT機器(Wi-Fiアクセスポイントとして機能できるESP32など)をWebサーバーとして機能させるといった使い方とは相性が良いのではないかと思った