2016-03-30

React.rb

cuba-reactというのをRubyFlowで見かけたので、どんなものか覗いてみました。
CubaというWeb frameworkにreactをintegrateするものということのようで、 これ自体はCubaに合わせてtemplateを生成するもののようですが、生成されるtemplateに驚きがありました。

react.rb

class HelloWorld
    include React::Component
    def render
        h1 {"Hello, World!"}
    end
end

Document.ready? do
    React.render(React.create_element(HelloWorld), Element["#content"])
end

これはまるでHyaliteのサンプルコードと似ています。
どういうことか調べてみると、どうやらReact.rbというものを使っているのでした。

React.rbはOpalで動くReact.jsのラッパーでした。サイトもしっかりあってまじめに作られています。
first commitは

zetachang committed on 7 Feb 2015

ということで1年くらい前から開発していたようです。

似たようなプロダクトがこの世に存在していたのに、車輪の再発明をしてしまったのは私のsurvey力の至らなさです。
とはいえ、ラッパーではReact.js自体の実装に縛られます。HyaliteはあくまでReact.jsを参考にした独自の実装です(実はReact.jsからずいぶんと拝借していますが…)
今後いくらでも独自の路線に進むことができるので気をとりなおして次のことを考えていきたいです。