Comments (4)
Yeah I was thinking in adding some kind of hook to optionally use devalue
instead of JSON.stringify
. I think it would work for this as well π€
I'll have a look at it tomorrow probably.
from vite-ssr.
Thanks a lot!
from vite-ssr.
@yaquawa So I actually misunderstood what you needed here. What I meant was a hook to modify initialState
instead of body
. However, you might not need that body hook:
Harlem is basically adding <script>window.__harlemState = state</script>
to the DOM, which overlaps with the role of Vite SSR (serializing state as well).
You can use the new state transformer hook (more docs in readme) to move Harlem's state to Vite SSR initial state:
function transformState(state) {
if (import.meta.env.SSR) {
state.harlem = getHarlemState()
return JSON.stringify(state)
} else {
// Restore Harlem's state to its place
window.__harlemState = JSON.parse(state.harlem)
return state
}
}
The problem is that they don't provide a "getHarlemState" function out of the box but it can be easily done by using another function they provide:
function getHarlemState() {
const script = getBridgingScript()
return script.slice(script.indexOf('=') + 1)
}
It would be nice if they provide getState
and setState
directly so it can be integrated with other tools easily. Maybe they would be open for a PR?
Tell me if this works for you (the transformState hook is implemented in 0.6.8).
from vite-ssr.
Good to know that, thanks for the detail!
Also I've noticed that I could just write a little plugin for this using the transformIndexHtml hook.
from vite-ssr.
Related Issues (20)
- manualChunks errors in version 0.17.1 HOT 1
- Cannot read property 'ssrUtils' of undefined HOT 1
- Add support for streaming
- vueuse/head version
- δΈι’ζ―ζηζ₯ιδΏ‘ζ― δΉεθΏθ½η¨η°ε¨ε°±δΈθ‘δΊ HOT 6
- vite-ssr doesn't appear to be written in CJS, but also doesn't appear to be a valid ES module (i.e. it doesn't have "type": "module" or an .mjs extension for the entry point). Please contact the package author to fix. HOT 1
- vite-ssr build runs in development mode HOT 2
- vire-ssr has unmet peer dependency warnings
- Internal server error: render is not a function HOT 1
- Error isFunction is not a function from defineComponent called from ClientOnly component. HOT 2
- Unable to request data to set header title in hook function 'onServerPrefetch', page has already completed rendering before await HOT 1
- @vueuse/head 1.x versions Rendering problem
- What should I do if the client repeatedly renders after SSR?
- How to get request headers in Vercel HOT 1
- Bug: bad SSR index.html rendering. HOT 1
- Vue on client don't start lifecycle. HOT 1
- Failed to load url __vite-optional-peer-dep:@vueuse/head:vite-ssr HOT 1
- name export commafy not found
- Does this repo support code splitting?
- Vite 5 support 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 vite-ssr.