Hoppa till innehåll

Svelte

Sitevision supports both server and client side rendering with Svelte.

index.js

render(App, [props])

@soleil-se/app-util/server/svelte/5
@soleil-se/app-util/server/svelte/4
@soleil-se/app-util/server/svelte/3
@soleil-se/app-util/server/svelte Deprecated

Get a HTML string for rendering a universal Svelte application. If a client bundle is available the server rendered HTML will be hydrated and not completely re-rendered.

Returns: String - HTML for rendering a Svelte application.

ParamTypeDefaultDescription
[App]SvelteSvelte app to be rendered.
[props]Object{}Props that will be passed to the app.

Universal

Render an app with both server and client code.

index.js
import router from '@sitevision/api/common/router';
import { render } from '@soleil-se/app-util/server/svelte/5';
import App from './App.svelte';
router.get('/', (req, res) => {
const props = { foo: 'bar' };
const html = render(App, props);
res.agnosticRender(html, props);
});

SSR

Render an app with only server side code.

index.js
import router from '@sitevision/api/common/router';
import { render } from '@soleil-se/app-util/server/svelte/5';
import App from './App.svelte';
router.get('/', (req, res) => {
const props = { foo: 'bar' };
const html = render(App, props);
res.send(html);
});

CSR

Render an app with only client side code.

index.js
import router from '@sitevision/api/common/router';
router.get('/', (req, res) => {
const props = { foo: 'bar' };
res.agnosticRender('', props)
});

main.js

render(App, { target, props })

@soleil-se/app-util/client/svelte/5
@soleil-se/app-util/client/svelte/4
@soleil-se/app-util/client/svelte/3
@soleil-se/app-util/client/svelte Deprecated

Renders a client side Svelte application.

Returns: Initialized Svelte component.

ParamTypeDefaultDescription
AppSvelteComponentSvelte app root component.
[settings]Object{}Settings object.
[settings.target]ElementTarget where app should be mounted.
[settings.props]ObjectRoot component props.
[settings.intro]BooleanfalseIf true, will play transitions on initial render, rather than waiting for subsequent state changes.
[settings.hydrate]Booleantarget.hasChildNodes()Instructs Svelte to upgrade existing DOM (usually from server-side rendering) rather than creating new elements. By default the app will hydrate when the target has any child nodes.
main.js
import { render } from '@soleil-se/app-util/client/svelte/5';
import App from './App.svelte';
export default (props, target) => {
render(App, { props, target });
};

Mount the app in another element:

main.js
import { render } from '@soleil-se/app-util/client/svelte/5';
import App from './App.svelte';
export default (props) => {
render(App, { props, target: document.querySelector('#mount_app_here') });
};