js_of_ocaml tips
make
js_of_ocamlではグローバルな名前空間に関数が置かれてしまう。
また、外部の型付けの弱いライブラリを呼び出すときには、OCamlの型をつけることも難しく、Js.Unsafe.eval_stringも若干冗長。
そこでOCamlで記述する範囲とは別にJavaScriptを書いて
intro.js
var foo; if (!foo) foo = {}; (function(){
outro.js
})();
xx_.js
function hoge() { }
xx.ml
open Js let hoge x = ...
そうしておいて最終的にmakeでまとめる。
Makefile
%.js: %.byte $(COMP) -noruntime $(JSFILES) $< $(OPTIONS) -o tmp.js cat intro.js $*_.js tmp.js outro.js > $@
デバッグ
ブラウザ依存部分を切り離しトップレベルやユニットテストでデバッグすることもできるけれど、どうしても最終的にはブラウザ上でJavaScriptのデバッグが必要になることもある。そこで出力JavaScriptにデバッグ情報を埋めるパッチを作った。
https://gist.github.com/3634430