JavaScript
sprockets
Espruino

EspruinoでJSを分割して書くときはSprocketsが良いのではないか

More than 3 years have passed since last update.

Espruinoでも多少凝ったものを書こうとするとプログラムが結構な長さになってきますね。そうなるとだんだんJSを分割して書きたくなってくる訳です。「Espruinoで動く」を前提条件にすると、sprocketsなんか良いのではないのかと思いましたので紹介します(今更)


mobule/requireでの分割は何かと面倒

Espruinoではnode.jsのように各機能をモジュールとして記述して、requireで利用することができます。ただしこの方法には制約があり、USB起動の場合はインターネットでアクセスできる場所に、スタンドアロンで利用している場合はSDカードに、各種モジュールファイルを配置しておかなければなりません。汎用で使えるライブラリを記述するのであれば多少目はつむれるかもしれませんが、アプリ固有のビジネスロジック的なものを分割記述するのに、これはなかなか面倒です。


そこで sprockets

と、いうことで分割したJSファイルをビルドして一つにまとめるというアプローチが欲しくなってくる訳ですが、ご存知の通りJSが走るのはEspruinoの上なので、生成されるファイルは可能な限りプレーンなjavascriptであることが望ましいです。

そこで sprocketsです。

//= require "./hoge.js"

var hoge = new Hoge();

JSファイルの上部のようなコメントを記述すると、sprocketsでビルドしたときに、hoge.jsの内容をそっくりそのままもってきてくれます。それでいて、2度以上同じファイルに対する読み込みが記述してあっても一度しか読み込まないのでその辺りも気にせずにすみます。


Example

Githubにサンプルプロジェクトとして上げてみました。READMEを見れば使えるかと思います。build.shには簡単なビルドコマンドが記述してあります。

srcフォルダ直下を常に監視して、変更があったら自動でビルドするようにするステップについては今後書こうかと思っています。