快速原型开发 @vue/cli 单个 .vue 文件入口的常见坑
2023-12-25 05:13:54
如果你是一位 Vue.js 开发者,那么你一定知道 @vue/cli。作为 Vue.js 官方提供的命令行工具,@vue/cli 为我们提供了非常便捷的开发入口。我们不仅可以通过它快速创建一个新的 Vue.js 项目,还能利用它安装各种各样的插件来扩展项目的特性。
在这些插件中,@vue/cli-service 绝对是重中之重。它不仅提供了许多开箱即用的功能,还允许我们通过修改配置文件来定制这些功能。
不过,当你不明白这些插件内部原理时,遇到问题很可能会到处乱撞,不得要领。这篇文章中我将和你分享我在使用单个 .vue 文件入口开发时遇到的坑,并提供一些解决方法,期望能帮助你在开发过程中少走弯路。
背景
在开始之前,我们先来了解一下什么是单个 .vue 文件入口开发。
传统的 Vue.js 开发方式是在一个 HTML 文件中引入 Vue.js 库,然后使用 Vue.js 的 API 来创建和操作 Vue 实例。
然而,随着 Vue.js 的发展,一种新的开发方式逐渐流行起来,那就是使用单个 .vue 文件作为入口。这种开发方式的最大好处是,它可以让我们在同一个文件中编写 HTML、CSS 和 JavaScript 代码,从而使代码更加简洁和易于维护。
问题
当我第一次使用单个 .vue 文件入口开发时,遇到了很多问题。其中最常见的问题包括:
- 找不到 .vue 文件
当我在命令行中运行 vue-cli-service serve
命令时,出现了这样的错误:
Error: ENOENT: no such file or directory, open 'E:\WebstormProjects\test\src\main.vue'
原来,这是因为我在配置文件 vue.config.js
中没有指定 .vue 文件的入口。在配置文件中添加如下代码即可解决问题:
module.exports = {
configureWebpack: {
entry: './src/main.vue'
}
}
- 样式无法生效
当我将样式写在 <style>
标签中时,发现样式并没有生效。后来我才知道,这是因为在默认情况下,@vue/cli-service 会将 <style>
标签中的样式编译成一个单独的 CSS 文件,然后将其引入到 HTML 文件中。
为了使样式能够生效,我们需要在配置文件 vue.config.js
中将 extractCSS
选项设置为 false
。
module.exports = {
configureWebpack: {
entry: './src/main.vue',
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
chunkFilename: '[id].css'
})
]
}
}
- 脚本无法执行
当我将脚本写在 <script>
标签中时,发现脚本并没有执行。后来我才知道,这是因为在默认情况下,@vue/cli-service 会将 <script>
标签中的脚本编译成一个单独的 JavaScript 文件,然后将其引入到 HTML 文件中。
为了使脚本能够执行,我们需要在配置文件 vue.config.js
中将 transpileDependencies
选项设置为 true
。
module.exports = {
configureWebpack: {
entry: './src/main.vue',
transpileDependencies: true
}
}
总结
以上是我在使用单个 .vue 文件入口开发时遇到的几个常见问题,以及解决方法。如果你也遇到了这些问题,不妨试试这些方法。
当然,除了这些问题之外,你可能还会遇到其他问题。此时,你可以在 Vue.js 官方文档中查找解决方案,或者在 Vue.js 论坛上寻求帮助。
希望这篇文章对你有帮助。