当我昨天浏览文档时,我对Svelte真的很感兴趣,但我正在努力建立一个非常基本的项目,而且我似乎无法弄清楚我做错了什么。
我从以下 HTML 开始:
<!doctype html>
<html>
<head>
<title>My first Svelte app</title>
</head>
<body>
<main></main>
<script src='App.js'></script>
<script>
const application = new App({
target: document.querySelector( 'main' ),
data: {
name: 'world'
}
});
</script>
</body>
</html>
然后,我创建以下App.html
组件:
<div class="app">Hello {{name}}</div>
<div class="lines"></div>
<script>
export default {}
</script>
我跑了svelte compile --format iife App.html > App.js
,一切正常。
到目前为止,一切都很好!
现在,我创建了一个Line.html
包含以下内容的组件:
<div class="line">{{value}}</div>
<script>
export default {}
</script>
我像这样修改我的App.html
组件:
<div class="app">Hello {{name}}</div>
<div class="lines"></div>
<script>
import Line from './Line.html';
export default {
oncreate() {
const line = new Line({
target: document.querySelector( 'lines' ),
data: {
value: 'test'
}
});
}
}
</script>
我希望这段代码能够将类似的东西添加<div class="line">test</div>
到 DOM 作为<div class="lines"></div>
.
但是,当我编译此代码时收到以下警告:
No name was supplied for imported module './Line.html'.
Guessing 'Line', but you should use options.globals
当我尝试运行编译后的代码时,我只会在控制台中得到以下输出:
App.js:250 Uncaught ReferenceError: Line is not defined at App.js:250
index.html:10 Uncaught TypeError: App is not a constructor at index.html:10
我在这里做错了什么?
笔记
我也在Github 上提出了这个问题。