如何告诉 svelte bundle 在现有页面中呈现的位置 dom
How to tell svelte bundle where to render in existing page dom
我们知道可以在构建时定义要渲染 svelte 的目标。但是是否可以告诉捆绑包在 HTML 文件中的 运行 时间(加载捆绑包时)呈现。
<html>
<body>
<div id="id1"> </div>
<div id="id2"> </div>
<script>
// how to tell the bundle to load at id1 and id2
</script>
<script defer src='/mycustomsveltething/bundle.js'></script>
</body>
</html>
在构建时,我们对加载 svelte-app 的上下文一无所知,甚至连 ID 都不知道。
用例
我们在 svelte 中构建了一个表单。现在我们想将它添加到一个服务器端渲染页面,许多服务器端渲染页面甚至在一个服务器端渲染页面上多次。
如果你在服务器渲染它的那一刻必须渲染它(这样你的后端可以以某种方式解决这个问题)你可以在页面中创建一种配置对象:
<script>
window.myapp.renderTarget = 'id1';
</script>
<script defer src='/mycustomsveltething/bundle.js'></script>
然后在应用本身中使用此值:
// main.js
import App from './App.svelte';
const app = new App({
target: window.myapp.renderTarget
});
export default app;
它帮助了我。
在 html
<script defer src='/mycustomsveltething/bundle.js'></script>
和我需要的地方
<div id="id1"></div>
在 js 中
import App from './App.svelte';
const app = new App({
target: document.querySelector('#id1'),
props: {
name: 'world'
}
});
export default app;
我们知道可以在构建时定义要渲染 svelte 的目标。但是是否可以告诉捆绑包在 HTML 文件中的 运行 时间(加载捆绑包时)呈现。
<html>
<body>
<div id="id1"> </div>
<div id="id2"> </div>
<script>
// how to tell the bundle to load at id1 and id2
</script>
<script defer src='/mycustomsveltething/bundle.js'></script>
</body>
</html>
在构建时,我们对加载 svelte-app 的上下文一无所知,甚至连 ID 都不知道。
用例
我们在 svelte 中构建了一个表单。现在我们想将它添加到一个服务器端渲染页面,许多服务器端渲染页面甚至在一个服务器端渲染页面上多次。
如果你在服务器渲染它的那一刻必须渲染它(这样你的后端可以以某种方式解决这个问题)你可以在页面中创建一种配置对象:
<script>
window.myapp.renderTarget = 'id1';
</script>
<script defer src='/mycustomsveltething/bundle.js'></script>
然后在应用本身中使用此值:
// main.js
import App from './App.svelte';
const app = new App({
target: window.myapp.renderTarget
});
export default app;
它帮助了我。 在 html
<script defer src='/mycustomsveltething/bundle.js'></script>
和我需要的地方
<div id="id1"></div>
在 js 中
import App from './App.svelte';
const app = new App({
target: document.querySelector('#id1'),
props: {
name: 'world'
}
});
export default app;