Commit graph

63 commits

Author SHA1 Message Date
Jonathan Kelley
7cbb4d52dd wip: more modifications to templates 2022-10-21 18:54:14 -07:00
Jonathan Kelley
90982e0ccb wip: start to refactor out hot reloading from packages
Also implement alternative simpler template system
2022-10-20 09:56:09 -07:00
Demonthos
3b7b503333
Refactor Mutations and simplify Templates (#578)
* update mutations to be path based rather than renderer integrated
2022-10-18 14:42:45 -07:00
Demonthos
daeffd4149
pass clippy (#575) 2022-10-02 14:12:24 -07:00
Demonthos
047ed1e553
Subtree memorization / reactive templates (#488)
This commit adds subtree memoization to Dioxus.

Subtree memoization is basically a compile-time step that drastically 
reduces the amount of work the diffing engine needs to do at runtime by
extracting non-changing nodes out into a static "template." Templates 
are then understood by the various renderers in the ecosystem as a 
faster way of rendering the same items. 

For example, in the web, templates are simply a set of DOM Nodes created 
once and then cloned later. This is the same pattern frameworks like Lithtml
and SolidJS use to achieve near-perfect performance. 

Subtree memoization adds an additional level of complexity to Dioxus. The RSX
macro needs to be much smarter to identify changing/nonchanging nodes and
generate a mapping between the Template and its runtime counterparts.

This commit represents a working starter point for this work, adding support 
for templates for the web, desktop, liveview, ssr, and native-core renderers.
In the future we will try to shrink code generation, generally improve 
performance, and simplify our implementation.
2022-09-30 12:03:06 -07:00
Jonathan Kelley
356f37e9ee feat: arbitrary attributes 2022-05-05 16:50:33 -04:00
Jonathan Kelley
255f58af63 fix: ssr respects bool attrs 2022-01-10 01:32:32 -05:00
Alexandre Kirszenberg
b6903bf558 Enable clippy 2022-01-08 16:35:26 +01:00
Jonathan Kelley
c6e917c4a0 tweak: add palceholder as comment content 2022-01-07 00:37:28 -05:00
Jonathan Kelley
b3a774b284 tweak: always add spacing comments between textnodes 2022-01-07 00:37:04 -05:00
Jonathan Kelley
dbb6e9b4fe fix: lastnodewastext in ssr 2022-01-07 00:36:13 -05:00
Jonathan Kelley
bbb6ee10de feat: make hydration more robust 2022-01-07 00:33:09 -05:00
Jonathan Kelley
bd341f5571 fix: tests 2022-01-05 17:30:12 -05:00
Jonathan Kelley
420a30e5d4 feat: overhaul examples and clean things up 2022-01-03 00:42:17 -05:00
Jonathan Kelley
d1560450ba wip: remove runner on hook and then update docs 2022-01-02 02:15:04 -05:00
Jonathan Kelley
4c85bcfdc8 awesome: arbitrary expressions excepted without braces 2021-12-30 03:14:47 -05:00
Jonathan Kelley
3dc0e59876 fix: readme and examples syntax 2021-12-28 23:48:25 -05:00
Jonathan Kelley
b997b8ebbb feat: enable children properly 2021-12-21 00:46:10 -05:00
Jonathan Kelley
e2e4d431e1 wip: adjust memoization 2021-12-20 22:33:13 -05:00
Jonathan Kelley
4de16c4779 docs: update local examples and docs to support new syntaxes 2021-12-15 15:56:53 -05:00
Jonathan Kelley
ded9696930 wip: fix ssr 2021-12-14 22:48:20 -05:00
Jonathan Kelley
1e4a599d14 wip: rename fc to component 2021-12-09 21:19:31 -05:00
Jonathan Kelley
36d89beb34 wip: rename 2021-11-28 16:25:42 -05:00
Jonathan Kelley
93d4b8ca7c wip: some docs and suspense 2021-11-23 15:53:57 -05:00
Jonathan Kelley
a5f05d73ac wip: docs and router 2021-11-19 00:49:04 -05:00
Jonathan Kelley
fd93ee89c1 feat: upgrade syntax 2021-11-10 17:09:52 -05:00
Jonathan Kelley
1e6e5e611b wip: move examples around 2021-11-03 15:13:50 -04:00
Jonathan Kelley
cfc24f5451 feat: support innerhtml 2021-10-18 18:07:19 -04:00
Jonathan Kelley
d4dcb17567 wip: clean up and add lazy renderer 2021-10-18 17:46:31 -04:00
Jonathan Kelley
63568c546c feat: add more to ssr renderer 2021-10-18 12:53:56 -04:00
Jonathan Kelley
9726a065b0 feat: massage lifetimes 2021-10-16 17:37:28 -04:00
Jonathan Kelley
71f0df6374 publish: ssr 2021-09-24 22:15:50 -04:00
Jonathan Kelley
7bdad1e2e6 publish: move macro crate out of core 2021-09-24 21:46:23 -04:00
Jonathan Kelley
a2c7d17b05 feat: mvoe away from compound context 2021-09-21 13:42:52 -04:00
Jonathan Kelley
ff1398b943 wip: polish up some safety stuff and add suspense support in 2021-09-13 18:55:43 -04:00
Jonathan Kelley
c321532a6c feat: some docs, cleaning 2021-09-01 00:57:04 -04:00
Jonathan Kelley
31702dbf87 feat: wire up resource pool 2021-08-27 09:53:26 -04:00
Jonathan Kelley
f457b71131 feat: rebuild doesn't return errors 2021-08-24 15:12:20 -04:00
Jonathan Kelley
cdcd8611e8 wip: it works but the page is backwards 2021-08-24 12:43:46 -04:00
Jonathan Kelley
64f289a61c wip: back to vnode enum 2021-08-20 10:34:41 -04:00
Jonathan Kelley
cfa0247cbb wip: websys dom working properly 2021-07-30 17:04:04 -04:00
Jonathan Kelley
d618092e9d feat: a new vnode type for anchors 2021-07-29 18:04:09 -04:00
Jonathan Kelley
49856ccd68 wip: making progress on diffing and hydration 2021-07-28 21:46:53 -04:00
Jonathan Kelley
dfaf5adee1 Feat: solve some issues regarding listeners 2021-07-24 00:29:23 -04:00
Jonathan Kelley
f644d7c441 wip: move things into a "shared" object 2021-07-23 10:27:43 -04:00
Jonathan Kelley
1745a44d94 wip: cleanup 2021-07-21 17:05:48 -04:00
Jonathan Kelley
05c909f320 wip: some ideas 2021-07-18 03:54:42 -04:00
Jonathan Kelley
8f0bb5dc5b chore: cleanup workspace 2021-07-15 18:40:12 -04:00
Jonathan Kelley
f14d4ef7c2 wip: fix styling for ssr 2021-07-15 11:06:52 -04:00
Jonathan Kelley
00231adfa2 feat: code quality improvements for core 2021-07-15 04:09:28 -04:00