详解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日

相关文章

  • 从零实现一个vue文件解析器

    下面我将详细讲解从零实现一个Vue文件解析器的完整攻略。Vue文件是一种用于Vue.js框架的组件定义文件,其中包含Vue组件的所有相关信息,例如template、script和style等标签。 Vue文件解析器的实现过程主要包括以下几个步骤: 解析Vue文件内容,提取template、script和style标签的内容; 将提取出来的template、s…

    Vue 2023年5月27日
    00
  • Vue3 组件的开发详情

    Vue3 组件的开发详情 Vue3是Vue框架的新版本,相比于Vue2,Vue3在性能、开发体验、API设计等方面都有较大的提升。在Vue3中,组件的开发方式与Vue2基本一致,但也有一些变化。本文将详细讲解Vue3组件的开发过程,包括组件的定义、使用、响应式等细节。 组件的定义 在Vue3中,定义组件的方式与Vue2基本一致,只是Vue3使用的是defin…

    Vue 2023年5月27日
    00
  • vue3.0实现考勤日历组件使用详解

    vue3.0实现考勤日历组件使用详解 前言 考勤日历是一个在管理系统和应用中广泛使用的组件。本文将介绍如何使用Vue3.0来实现考勤日历组件。 步骤 1. 准备工作和安装依赖 在开始本文的实现之前,你需要已经安装好了Vue3.0并创建了一个Vue工程。在进行下一步之前,你需要确保以下依赖库已经安装好了: npm install –save vue-full…

    Vue 2023年5月28日
    00
  • Vue Element前端应用开发之常规Element界面组件

    下面我将为你详细讲解Vue Element前端应用开发之常规Element界面组件的完整攻略。 什么是Element UI组件库? Element UI是一个基于Vue.js开发的组件库,具有丰富的UI组件和交互行为,适用于快速开发,提供了一组优雅、高效的基础组件,极大地减轻了开发人员的工作量。 安装Element UI 安装Element UI的方式有以下…

    Vue 2023年5月28日
    00
  • Vue中的情侣属性$dispatch和$broadcast详解

    Vue中的情侣属性$dispatch和$broadcast详解 在Vue.js中存在两个情侣属性:$dispatch和$broadcast。它们的作用是让不同层级的组件之间进行通信。本文将详细讲解这两个属性的用法以及示例说明。 $dispatch $dispatch是向父级组件派发一个自定义事件,触发父级组件的自定义事件处理器。该属性接收两个参数:事件名称和…

    Vue 2023年5月27日
    00
  • 后台使用freeMarker和前端使用vue的方法及遇到的问题

    使用FreeMarker和Vue两种框架一起开发Web应用的方法并不复杂。下面是这个过程的详细攻略,其中包含了一些可能遇到的问题以及解决方案。 前置条件 使用FreeMarker和Vue的开发需要具备以下的前置条件: 熟悉Java Web开发的基础知识,了解Servlet和JSP的基础使用方法。 熟悉Vue框架的基础知识,了解Vue组件开发的基础知识。 熟悉…

    Vue 2023年5月27日
    00
  • Vue.js原理分析之observer模块详解

    以下是关于“Vue.js原理分析之observer模块详解”的完整攻略。 什么是observer模块 observer是Vue.js中的一个模块,它主要负责监听data数据的变化,并且通知相关视图更新。在Vue.js中,使用Object.defineProperty()方法来实现observer模块。 如何实现数据监听 首先需要使用Object.define…

    Vue 2023年5月27日
    00
  • 关于element-ui select 下拉框位置错乱问题解决

    下面我将为你详细讲解“关于element-ui select 下拉框位置错乱问题解决”的攻略: 问题描述 在使用 element-ui 的 select 下拉框组件时,发现下拉框在某些情况下会位置错乱,例如当 select 组件在页面顶部时,下拉框会出现在页面底部。这种情况下会影响用户的体验,因此需要解决。 解决过程 1、仔细排查样式 首先要对样式进行仔细排…

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