详解vue-cli 构建Vue项目遇到的坑

详解vue-cli 构建Vue项目遇到的坑

简介

vue-cli是Vue.js官方提供的一款构建工具,可以快速创建单页应用或组件库,提供webpack打包、ES6转译、热更新等功能,可以大大减轻开发者的工作量。然而,使用vue-cli创建项目时,也会遇到各种坑,这里将对一些常见的问题进行详解。

坑1:vue-cli3无法预览组件库

使用vue-cli3创建组件库时,如果直接运行npm run serve,会发现组件库无法预览,只有空白的页面。这是由于vue-cli3默认只打包了应用程序入口文件,而组件库主要提供的是组件,所以需要修改webpack的配置。

首先,安装vue-cli-service插件:

npm install @vue/cli-service --save-dev

然后,在package.json文件中,添加如下内容:

{
  "main": "dist/index.js",
  "files": [
    "dist"
  ],
  "scripts": {
    "build": "vue-cli-service build --target lib --name my-lib src/main.js",
    "serve": "vue-cli-service serve --open"
  },
  "peerDependencies": {
    "vue": "^2.5.0"
  }
}

修改webpack的配置,使其能够直接预览组件库:

module.exports = {
  configureWebpack: {
    output: {
      libraryExport: 'default'
    },
    externals: {
      vue: 'vue',
      'element-ui': 'element-ui',
      'vant': 'vant'
    },
    plugins: [
      new VueLoaderPlugin()
    ]
  },
  css: {
    extract: false
  }
}

最后运行npm run serve即可预览组件库。

坑2:Vue组件中的CSS不起作用

在Vue组件中,由于CSS样式是使用scoped修饰符包裹的,因此有时候会发现组件中的CSS样式不起作用。这是由于系统主题覆盖了组件中的CSS,需要使用/deep/或>>>修饰符才能使CSS样式生效。

例如,在以下组件中,按钮的样式无法生效:

<template>
  <div>
    <button class="my-button">按钮</button>
  </div>
</template>

<style>
  .my-button {
    background-color: red;
    color: #fff;
  }
</style>

需要在样式中使用/deep/或>>>修饰符才能生效:

<template>
  <div>
    <button class="my-button">按钮</button>
  </div>
</template>

<style scoped>
  /deep/ .my-button {
    background-color: red;
    color: #fff;
  }
</style>

示例说明

示例1:创建Vue项目时,无法安装依赖包

当使用vue-cli创建Vue项目时,有时候会出现安装依赖包失败的情况,例如:

npm WARN deprecated bfj-node4@5.3.1: Switch to the `bfj` package for fixes and new features!
npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/qiushuangying/.npm/_logs/2018-08-08T07_40_05_173Z-debug.log

这是由于npm的版本不兼容造成的,解决方法是升级npm的版本:

npm install npm@latest -g

然后再重新创建项目即可。

示例2:引入第三方组件库后,页面样式错乱

当使用第三方组件库,例如Element-UI、Vant等,引入页面后,有时候会发现原本正常的页面样式变得错乱。

这是由于第三方组件库的样式与当前系统主题不兼容,需要在main.js文件中修改全局样式:

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

import './assets/my-styles.css'

Vue.config.productionTip = false

new Vue({
  render: h => h(App)
}).$mount('#app')

在my-styles.css文件中,可以覆盖第三方组件库的样式,例如:

.el-button {
  color: #fff;
  background-color: #409EFF;
  border-color: #409EFF;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue-cli 构建Vue项目遇到的坑 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Nuxt3+ElementPlus构建打包部署全过程

    下面是Nuxt3+ElementPlus构建打包部署全过程的完整攻略。 Nuxt3+ElementPlus构建打包部署全过程 环境准备 Node.js:建议使用 LTS 版本,安装好后需配置 npm 淘宝镜像加速 IDE:推荐使用 Visual Studio Code,并安装好相关的插件 创建 Nuxt3 项目 执行以下命令,创建一个新的 Nuxt3 项目:…

    Vue 2023年5月28日
    00
  • 如何解决.vue文件url引用文件的问题

    当我们在Vue项目中使用Vue组件时,可能会遇到引用.vue文件中的资源文件的问题,如图片、css和js等文件,常见的错误会在浏览器控制台输出404错误,即找不到该文件。 要解决这个问题,可以按照以下步骤操作: 1. 使用相对路径引用 在.vue文件中引用图片、css和js文件时,应使用相对路径来引用,以确保引用成功。如果不使用相对路径,则可能找不到资源文件…

    Vue 2023年5月28日
    00
  • vue组件 非单文件组件的使用步骤

    使用vue组件的方法有两种:单文件组件和非单文件组件。 非单文件组件的使用步骤如下: 定义组件 定义非单文件组件有两种方法,一种是使用Vue.component()函数,另一种是使用全局的组件注册方法。 使用Vue.component()函数: Vue.component(‘my-component’, { template: ‘<div>{{ …

    Vue 2023年5月28日
    00
  • Vue3中操作ref的四种使用方式示例代码(建议收藏)

    首先请允许我先解释一下“Vue3中操作ref的四种使用方式示例代码(建议收藏)”这个题目的含义。 在Vue3中,ref是一个重要的API,用来跟踪组件中的响应式数据。而这篇文章则是介绍了ref的四种使用方式,并给出了相应的示例代码。这些示例代码可以帮助读者更好地理解ref的用法,并在日后的开发中更方便地应用ref。 接下来,我将为你详细讲解“Vue3中操作r…

    Vue 2023年5月27日
    00
  • vue中添加与删除关键字搜索功能

    下面是“vue中添加与删除关键字搜索功能”的完整攻略。 1.创建搜索框 首先,我们需要在页面上创建一个输入框,供用户输入搜索关键字。可以使用Vue中的v-model指令来实现双向数据绑定,将用户输入的关键字与Vue实例中的数据绑定起来。 示例代码: <template> <div> <input type="text&…

    Vue 2023年5月27日
    00
  • JS学习笔记之原型链和利用原型实现继承详解

    首先,需要了解JS中的对象和原型的概念。在JS中,每个对象都有一个隐式的原型指向其构造函数的原型,构成了原型链。原型链可以实现对象间的继承,利用原型链可以实现JS中的“类”的概念。 具体的实现继承的方式有两种,一种是通过构造函数的原型,另一种是通过call和apply方法。下面将对两种方式进行详细说明。 利用构造函数的原型实现继承 可以通过父类的构造函数添加…

    Vue 2023年5月28日
    00
  • Vue组合式API–setup中定义响应式数据的示例详解

    什么是Vue组合式API–setup?Vue 3.0中引入了新的组合式API–setup。setup选项是一个新的组件选项,用来代替Vue 2.x版本中的created和beforeCreate选项。setup选项中可以使用Vue3.0的新特性,如响应式数据、计算属性、watcher等。 Vue组合式API–setup中定义响应式数据的示例 在Vue …

    Vue 2023年5月28日
    00
  • Nuxt.js实现一个SSR的前端博客的示例代码

    下面就是“Nuxt.js实现一个SSR的前端博客的完整攻略”。 Nuxt.js简介 Nuxt.js 是一个基于 Vue.js 的通用应用框架,它可以帮助我们快速搭建一个 Vue.js 应用(如 SPA、SSR、静态 生成),并且还提供了自动化的构建和部署功能。 步骤 1. 创建项目 首先,我们需要安装 Node.js 和 Npm。然后,我们可以使用 Npm …

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部