[英]Vue 3 with Vite rendering blank page when not using App.vue
设置
我已经在基于 Arch 的操作系统上使用vite初始化了一个新项目。
当我尝试从vue docs创建简单的计数器时,elemet 不会呈现。
代码
索引.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="counter">
Counter: {{ counter }}
</div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
main.js
import { createApp } from 'vue'
var CounterApp = {
data() {
return {
counter: 0
}
},
mounted() {
setInterval(() => {
this.counter++
}, 1000)
}
}
createApp(CounterApp).mount('#counter')
当我检查元素时,它被注释掉:
问题
这是为什么? 以及如何解决错误?
这样做会替换正常的挂载过程,并将根元素视为App
组件的模板字符串。 由于模板字符串需要运行时编译器,因此您需要使用完整的构建。 应该有一个控制台警告。
为避免在完整构建时增加应用程序的大小(约 30%),建议保持安装点不变,并为App
组件提供自己的适当模板:
索引.html
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
main.js
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
应用程序.vue
<template>
<div id="counter">
Counter: {{ counter }}
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
counter: 0
}
},
mounted() {
setInterval(() => {
this.counter++
}, 1000)
}
}
</script>
默认情况下,运行时编译器不包含在 Vue 构建中。 要包含它,请添加以下resolve.alias
配置:
vite.config.js
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
vue: 'vue/dist/vue.esm-bundler.js',
},
},
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.