Webpack 仅将主要部件与苗条捆扎在一起
我只想将主要组件捆绑在一个小巧的应用程序中,并使用我选择的容器将应用程序自己引导到一个脚本标记中 在Svelte模板(rollup和bootstrap)中,应用程序是main.js中的bootstrap,它导入App.Svelte。我只想捆绑App.svelte并自己实例化App类。目标是能够在我想要的任何平台上重用应用程序,并能够选择目标(例如:在CMS、SharePoint等中使用组件) 我们也要这样做:Webpack 仅将主要部件与苗条捆扎在一起,webpack,rollup,svelte,Webpack,Rollup,Svelte,我只想将主要组件捆绑在一个小巧的应用程序中,并使用我选择的容器将应用程序自己引导到一个脚本标记中 在Svelte模板(rollup和bootstrap)中,应用程序是main.js中的bootstrap,它导入App.Svelte。我只想捆绑App.svelte并自己实例化App类。目标是能够在我想要的任何平台上重用应用程序,并能够选择目标(例如:在CMS、SharePoint等中使用组件) 我们也要这样做: const app = new App({ target: document.
const app = new App({
target: document.body,
props: {}
});
我自己在index.html中的脚本标记中
我是webpack的新手,我找不到如何绑定并调用index.html中的App类。如果您检查Svelte的属性,您会注意到有一个选项可以编译为web组件,customElement。这就是您要查找的内容,以及标记选项。我终于找到了使用汇总的sveltejs/template start项目所需的内容 在main.js中,删除App类的实例化并导出该类
import App from './App.svelte';
export default App;
默认情况下,汇总生成将把main.js的默认导出存储在一个变量中,该变量在rollup.config文件(output->name)中命名
编辑index.html,将脚本放在正文中,然后添加脚本标记:
<body>
<div id="app-container"></div>
<script src='/bundle.js'></script>
<script>
var myapp= new app({
"target": document.getElementById("app-container"),
"props": {
"name": 'world'
}
})
</script>
</body>
你是说“customElement”吗?我明白了,但这并不能解释如何配置网页包或汇总,你能给我一个配置示例吗?我应该将app.svelte设置为入口点吗?如何在index.html中的脚本标记中获取导出的类?@2pha您是对的,我使用了确切的选项名进行了更新@PortePoisse如果您使用的是rollup,您应该有一个名为
svelte
的插件,您可以将这些选项添加到该插件中。App.svelte组件将是您的自定义元素。您可以找到更详细的指南,谢谢分享您的经验。顺便说一句,如果你正在浏览你的网页,你可以从“/src/App.svelte”导出{default}
entry: './src/App.svelte',
resolve: {
alias: {
svelte: path.resolve('node_modules', 'svelte')
},
extensions: ['.mjs', '.js', '.svelte'],
mainFields: ['svelte', 'browser', 'module', 'main']
},
output: {
path: __dirname + '/public',
filename: 'bundle.js',
chunkFilename: 'bundle.[id].js',
library: 'app',
libraryExport: 'default',
libraryTarget: 'var'
},
...