JavaScriptを嫌う方は一定層います。スクリプト言語なので型がなかったり、処理が非同期な部分があったりすることに起因するようです。サーバサイドを別言語で書いていたりすると、Webブラウザ向けだけJavaScriptを使わないといけないという制約も嫌がられます。 サーバサイドをGoで書いているのであれば使ってみたいのがJoyです。GoをJavaScriptに変換するライブラリです。

Joyの使い方

最も簡単なコードです。

package main

func main() {
  println("Joy to the world!")
}

これを変換すると次のようになります。多少冗長的な部分もありますが、それほど酷くないコードです。

$ joy main.go 
;(function() {
  var pkg = {};
  pkg["main"] = (function() {
    function main () {
      console.log("Joy to the world!")
    };
    return {
      main: main
    };
  })();
  return pkg["main"].main();
})()

JoyはGoとしても実行ができるのが特徴です。例えば以下のコードがあります。

package main

// Node struct
type Node struct {
  NodeName string
}

func main() {
  var nodes []Node

  nodes = append(nodes, Node{
    NodeName: "div",
  }, Node{
    NodeName: "strong",
  })

  for i, node := range nodes {
    println(i)
    println(node.NodeName)
  }

  for i := range nodes {
    println(i)
  }
}

Goとして実行します。

$ go run main.go
0
div
1
strong
0
1

変換したコードをNode.jsで実行します。

$ node main.js 
0
div
1
strong
0
1

JoyはDOMについても処理が可能です。すべてのGoライブラリが使える訳ではないので(基本的にはJoyが提供するライブラリになるでしょう)注意が必要ですが、Goに慣れた人であれば特に問題なく書けるでしょう。GoでJavaScriptの処理もまとめて書きたいという方はぜひ使ってみましょう。

JoyはGo製のオープンソース・ソフトウェア(GPL)です。

Introducing Joy matthewmueller/joy: A delightful Go to Javascript compiler