Comments (12)
Alright, after over a year now, this has finally been merged! I'm satisfied that capsules are basically feature-complete for now, and v0.4.0 will follow very closely on the heels of this. There are a few tiny little things I want to clean up, and then v0.4.0-rc.1 should be ready!
from perseus.
Given that static exporting is going to take us to v0.3.0, this won't be included until v0.4.0 (or maybe later).
from perseus.
Okay, this will be worked on for v0.4.0 along with engines (tracked by #59). That's going to be a very big release!
from perseus.
Alright, I've designed this up to the final part, which is removing the smallest part of the DOM possible to go from one page state to the next (which is reasonably complex). With the current idea, network requests would be reduced, but I still have a bit more design to do. Nonetheless, this will definitely ship in v0.4.0, and I'll aim to support proc macros that can turn any Sycamore component into an island (capsule, island, terminology is still in flux), which would slow down builds, but allow very aggressive optimization of rendering.
from perseus.
Alright, somewhat incredibly, this system is complex enough that basically anything that impacts the build process in any way whatsoever blocks it. I'm going to prioritize #150 and #221 before tackling the weeds of this, though there is a basis in my local branch now. I fully intend to release v0.4.0 by the end of November (saying this here to hold myself accountable!), most certainly with some sort of capsules system! (It won't be half-baked, don't worry, I intend for this to work properly and effectively with the new state platform and the improved build system.)
from perseus.
I don't think this will make it to v0.2.0, but it'll be ready for v0.3.0 when that's released. Note that metadata modification will be included in v0.2.0 though.
from perseus.
I'm also looking forward to this. that's who a real SPA application supposed to render pages with the help of DOM Diffing or VDOM.
from perseus.
I'm seeing the tremendous work you've been doing, 1000s Kudos, I did few readings, I will keep you update with the new developments
from perseus.
Thank you very much! Yeah, if you have any ideas for this, please let me know!
from perseus.
Okay, if we use the shadow DOM for this (and hope that Sycamore can manage that), we're good! The only two problems now (again, this is all in theory still) are to do with the ergonomics of having to wrap every island in Island()
and having to declare the islands that a template (or another island) uses. The latter is the priority for me, I want to be able to avoid that. We need a way to get all the islands being used in the app somehow, and the current design has each template declare its dependencies. There should be a more ergonomic way to do this, I'll have a think about it.
from perseus.
Okay, with the changes in #223 and the renaming of the #[template_rx]
macro, which basically 'stabilizes' Perseus' reactive state platform in my eyes, I'm going to (finally) start work on this!
I don't expect a shadow DOM system to make it to v0.4.0, but I reckon the basics of this system definitely will. (Though dependency declaration will likely be a persistent issue for a while.)
from perseus.
Also, as a brief update on the shadow DOM system: right now, it is completely unnecessary. The Perseus capsules system allows developers to split pages up into atomic units that can be independently loaded, cached, and preloaded through the state store, which can store an arbitrary number of pages and widgets in memory. These can then be all frozen for immediate thawing. WebAssembly is fast enough that a shadow DOM layer is just not needed. Also, widget properties make this very complex to implement (since a widget can be used in different ways in different places).
from perseus.
Related Issues (20)
- `perseus export --serve` does not work in 0.4.0-beta.12 HOT 7
- perseus serve -w stuck on infinite loop when using build.rs build script. HOT 6
- Failed to compile while running `cargo clippy` HOT 5
- ReactiveState derive macro panics when used on newtype structs HOT 2
- Nested static aliases fail with exporting HOT 8
- Cannot deploy a perseus app using beta.19 HOT 2
- Populate `lang` attribute on root `html` element when translator is present. HOT 2
- Incremental generation is broken for a template named index in the beta.19 HOT 4
- Build state function with non-`Clone` state results in suboptimal compiler error HOT 3
- Using the translation feature as well as having global build state causes an error when the user navigates directly to the root page (or any valid page) when not including the locale in the path. HOT 1
- Failed to run `cargo install perseus-cli` without the `--locked` flag HOT 4
- Using the builder pattern `input().bind_value(...)` perseus panics HOT 5
- Using global state in a Capsule as well as a Template leads to unreachable code being reached at build-time HOT 2
- Vectors do not work in `ReactiveState` HOT 4
- [Router] [Bug] When using `.incremental_generation()`, you cannot navigate to a new route on the same page. HOT 3
- When trying to run a perseus app with docker, it gets: `Error: asset './dist/render_conf.json' not found in store` HOT 2
- Fail proceed 'perseus build' after upgraded to v0.4.1 HOT 3
- Build-time state can be user or "segment" specific, and it's actually easy to setup HOT 3
- Missing </body></html> HOT 1
- perseus-cli/0.4.2 crate is missing the tests folder HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from perseus.