All native targets are going to work more or less the same (because they share the source code internally);
HTML5 is a little different because of a few bugs (e.g. arr[1,0] works like arr[1][0] instead of storing extra rows in the same array object) but if you are marking "constructible" classes as @:nativeGen (thus not using the second row for metadata), it'll be largely unaffected.
For several of my extensions I've been using a scheme where native targets are covered by a GML file, and JS targets are covered by building the same project to JS (and updating the extension file definitions as a post-build step). Since GML is compiled to JS too, it can use Haxe-JS values without any issues.