If you want to keep the node path with an incremental-dom approach you almost implement a regular virtual dom.
Le ven. 22 avr. 2016 à 15:20, jiyinyiyong <jiyinyiy...@gmail.com> a écrit : > Reading code from others is always challenging. I've tried incremental-dom > once, I suppose in the DOM the node path is already losing, which in > virtual DOM I can always keep the path. > > On Fri, Apr 22, 2016 at 6:15 PM Julien Eluard <julien.elu...@gmail.com> > wrote: > >> Currently I'm doing a one pass merge (similar to >> https://github.com/google/incremental-dom). I am considering moving to >> diff/patch to be able to diff in a service worker and patch in the main >> thread. >> You can find all details here: >> https://github.com/jeluard/hipo/blob/master/src/hipo/interpreter.cljs#L195 >> >> Le ven. 22 avr. 2016 à 11:59, jiyinyiyong <jiyinyiy...@gmail.com> a >> écrit : >> >>> I'm not a big fan of Hiccup actually. As you mention the diff/patch >>> library, what's your solution? I tried in my project and only got a very >>> simple solution with some bugs. How about yours? >>> >>> On Fri, Apr 22, 2016 at 3:58 PM Julien Eluard <julien.elu...@gmail.com> >>> wrote: >>> >>>> It's more a merge implementation based on hiccup syntax. You can use it >>>> to replace React, especially to create components. >>>> Maybe there is an opportunity to extract a generic diff/patch library? >>>> >>>> Le ven. 22 avr. 2016 à 03:19, jiyinyiyong <jiyinyiy...@gmail.com> a >>>> écrit : >>>> >>>>> So you created another React too? >>>>> >>>>> My projects are not yet stable, I will add examples later. >>>>> >>>>> On Thu, Apr 21, 2016 at 11:56 PM Julien Eluard < >>>>> julien.elu...@gmail.com> wrote: >>>>> >>>>>> Hi Jiyin Yiyong, >>>>>> >>>>>> nice to see some alternatives to React in Clojure! I have to dig more >>>>>> into your blog posts to understand your ideas but it definitively looks >>>>>> interesting. >>>>>> May I suggest to have some documentation/examples in raw >>>>>> ClojureScript to help people grasp the syntax? >>>>>> >>>>>> You might also be interested in some libraries I wrote: >>>>>> * https://github.com/jeluard/hipo create/reconciliate DOM nodes from >>>>>> hiccup syntax >>>>>> * https://github.com/jeluard/lucuma CustomElements boilerplate >>>>>> * https://github.com/jeluard/picada a collection of google material >>>>>> elements, built on both former libraries (WIP) >>>>>> >>>>>> Julien >>>>>> >>>>>> >>>>>> Le jeu. 21 avr. 2016 à 12:13, Jiyin Yiyong <jiyinyiy...@gmail.com> a >>>>>> écrit : >>>>>> >>>>>>> I want to see if anyone is already getting bored about React.js like >>>>>>> me. It's still fun to try React Native but React.js is old, its 2012 >>>>>>> technology(not quite sure about 2012, but old enough even 2013). React >>>>>>> is >>>>>>> not nicely decoupled, and not a great framework for animations. It's >>>>>>> becoming as useful and as mature like jQuery. I think we can go beyond. >>>>>>> >>>>>>> Well, I've been programming for 5 years only from learning C in >>>>>>> school and trying Python on my own(not counting course on Visual Basic >>>>>>> since it was only a course). I can't build a whole framework like React. >>>>>>> However, I can see some vision ahead and try them with my code. So they >>>>>>> are >>>>>>> Respo and Quamoit. Both are experimental project and in early >>>>>>> stages(Docs >>>>>>> not ready, sorry for that). Just hope they may be sources of >>>>>>> inspirations. >>>>>>> >>>>>>> Respo >>>>>>> >>>>>>> repo https://github.com/mvc-works/respo/ >>>>>>> example app https://github.com/Memkits/wanderlist/ >>>>>>> >>>>>>> Respo is like React but a lot simplified and decoupled. I >>>>>>> implemented a simpler DOM diff algorithm and bound events. By now I can >>>>>>> build very simple apps with it. I think the shiny parts are: >>>>>>> >>>>>>> * components are designed to fit with caching so that server side >>>>>>> rendering would be faster >>>>>>> * DOM diff/patching are decoupled, so possible to diff on server and >>>>>>> patch at clients >>>>>>> * element DSL in ClojureScript syntax, not JSX style >>>>>>> * component states are stored global, so not losing during hot >>>>>>> swapping >>>>>>> >>>>>>> You may find more on Hashnode and Youtube: >>>>>>> https://hashnode.com/@jiyinyiyong/stories >>>>>>> https://www.youtube.com/user/jiyinyiyong/videos >>>>>>> >>>>>>> Quamolit >>>>>>> >>>>>>> repo(alse example) https://github.com/Quamolit/quamolit >>>>>>> components source code >>>>>>> https://github.com/Quamolit/quamolit/tree/master/cirru-src/quamolit/component >>>>>>> >>>>>>> Quamolit is an experiment on canvas and it relies on Hit Regions >>>>>>> APIs to work, so not even usable for build real apps. The nice thing >>>>>>> is, in >>>>>>> React it's difficult to make nice animations, in declarative canvas >>>>>>> libraries there's no abstractions to compose components like React, >>>>>>> Respo >>>>>>> is maybe a way to combine them. You can browse the source code and take >>>>>>> a >>>>>>> look on my Youtube. >>>>>>> >>>>>>> For each component, there's functions of `init-state update-state >>>>>>> init-instant on-tick on-update on-unmount render`, you may see what's >>>>>>> going >>>>>>> on by the names. So besides **state**, Quamoit introduced **instant** as >>>>>>> the animations states, and it will be updated by **on-tick**(as >>>>>>> requestAnimationFrame calls) **on-update**(as global store and states >>>>>>> changes) **on-unmount**(as the component start leaving). >>>>>>> >>>>>>> Currently there are only videos and tweets(@jiyinyiyong) on >>>>>>> Quamolit. I will add post when it's more stable. >>>>>>> >>>>>>> Projects are in early stage and when I go back to work a weeks later >>>>>>> I will probably spend much time on them. I think my experience is not >>>>>>> enough for real world frameworks, I hope someone may pick my ideas and >>>>>>> use >>>>>>> them in their own projects. I used to write in Chinese at >>>>>>> segmentfault.com/blog/jiyinyiyong and I will later write on >>>>>>> Hashnode in English to see if someone is interested. >>>>>>> >>>>>>> Hope you like my ideas. Thanks. >>>>>>> >>>>>>> -- >>>>>>> Note that posts from new members are moderated - please be patient >>>>>>> with your first post. >>>>>>> --- >>>>>>> >>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "ClojureScript" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to clojurescript+unsubscr...@googlegroups.com. >>>>>> >>>>>> >>>>>>> To post to this group, send email to clojurescript@googlegroups.com. >>>>>>> Visit this group at https://groups.google.com/group/clojurescript. >>>>>>> >>>>>> -- >>>>>> Note that posts from new members are moderated - please be patient >>>>>> with your first post. >>>>>> --- >>>>>> >>>>> You received this message because you are subscribed to a topic in the >>>>>> Google Groups "ClojureScript" group. >>>>>> To unsubscribe from this topic, visit >>>>>> https://groups.google.com/d/topic/clojurescript/3AojzHsh3u0/unsubscribe >>>>>> . >>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>> clojurescript+unsubscr...@googlegroups.com. >>>>> >>>>> >>>>>> To post to this group, send email to clojurescript@googlegroups.com. >>>>>> Visit this group at https://groups.google.com/group/clojurescript. >>>>>> >>>>> -- >>>>> Note that posts from new members are moderated - please be patient >>>>> with your first post. >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "ClojureScript" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojurescript+unsubscr...@googlegroups.com. >>>>> To post to this group, send email to clojurescript@googlegroups.com. >>>>> Visit this group at https://groups.google.com/group/clojurescript. >>>>> >>>> -- >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> --- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "ClojureScript" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/clojurescript/3AojzHsh3u0/unsubscribe >>>> . >>>> To unsubscribe from this group and all its topics, send an email to >>>> clojurescript+unsubscr...@googlegroups.com. >>>> To post to this group, send email to clojurescript@googlegroups.com. >>>> Visit this group at https://groups.google.com/group/clojurescript. >>>> >>> -- >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "ClojureScript" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojurescript+unsubscr...@googlegroups.com. >>> To post to this group, send email to clojurescript@googlegroups.com. >>> Visit this group at https://groups.google.com/group/clojurescript. >>> >> -- >> Note that posts from new members are moderated - please be patient with >> your first post. >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "ClojureScript" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojurescript/3AojzHsh3u0/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> clojurescript+unsubscr...@googlegroups.com. >> To post to this group, send email to clojurescript@googlegroups.com. >> Visit this group at https://groups.google.com/group/clojurescript. >> > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescript@googlegroups.com. > Visit this group at https://groups.google.com/group/clojurescript. > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.