Virtual Dom support for Opal
requiments
This wrapper require to load virtual-dom first. For example you can use rails assets.
source 'https://rails-assets.org' do
gem 'rails-assets-virtual-dom'
end
usage
Server side (config.ru, Rakefile, Rails, Sinatra, etc.)
require 'opal-virtual-dom'
Browser side
require 'opal'
require 'virtual-dom' # javascript library
require 'browser' # not required
require 'virtual_dom' # opal wrapper
class SampleList
include VirtualDOM
def initialize(elements = [])
@elements = elements
end
def render
ul class: 'simple-list' do
@elements.each do |string|
li do
text string
end
end
end
end
end
$document.ready do
list = SampleList.new(%w(one two three)).render
back = SampleList.new(%w(three two one)).render
root_node = VirtualDOM.create(list)
$document.body.inner_dom = root_node
diff = VirtualDOM.diff(list, back)
VirtualDOM.patch(root_node, diff)
end