返回

快速原型开发 @vue/cli 单个 .vue 文件入口的常见坑

前端

如果你是一位 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 论坛上寻求帮助。

希望这篇文章对你有帮助。