4 ms·
Nim + Karax allow creating single-page applications without "magic": https://nim-lang.org/araq/karax.html https://nim-lang.org/araq/karax.html Working example
by nimmer 8y ago
Nim + Karax allow creating single-page applications without "magic":
https://nim-lang.org/araq/karax.html https://nim-lang.org/araq/karax.html
Working example: https://forum.nim-lang.org/ https://forum.nim-lang.org/
- renegadus 8y agoInteresting. Just for fun I created a side-by-side with Kweb of one of their simple examples. Here is kerax: var lines: seq[kstring] = @[] proc createDom(): VNode = result = buildHtml(tdiv): button: text "Say hello!" proc onclick(ev: Event; n: VNode) = lines.add "Hello simulated universe" for x in lines: tdiv: text x setRenderer createDom Here is the equivalent in Kweb: fun main() { Kweb(port = 2734) { doc.body.new { button().text("Say hello!").on.click { println("Hello simulated universe") } } } } This compiles and works.
- Matthias247 8y agoThe first seems to add new DOM nodes with text on every click. The second one doesn't. So they don't seem to be equivalent.
- renegadus 8y agoHmm, it seems to be adding things to a list but where is it adding a new DOM node?
- Matthias247 8y agoI would say in for x in lines: tdiv: text x Whenever the DOM gets rerendered, it iterates over the the lines (or the "model" in general), and creates DOM elements from it. At least it looks very similar to React and Angular code, and they do exactly this.
- renegadus 8y agoAh, you're right. Ok, I think I can do that fairly concisely in Kweb also, if I find a bit of time.