Vue-cli-service Build详解

一、安装并使用vue-cli-service build

Vue-cli-service build是一个基于webpack构建的命令行工具,用于将Vue应用程序编译为静态文件。使用它之前,需要安装Vue-cli。首先,使用npm安装Vue-cli:

npm install -g vue-cli

然后,在Vue项目所在目录下,执行以下命令即可使用Vue-cli-service build:

vue-cli-service build

执行完这个命令后,会在项目目录下自动生成一个dist目录,里面包含了编译后的所有文件。可以把这些文件直接发布到服务器上,以部署Vue应用程序。

二、Vue-cli-service build的配置选项

Vue-cli-service build支持一些配置选项,用于定制化编译过程。在使用Vue-cli-service build时,可以加上一些选项,来定制化编译过程,比如:

 vue-cli-service build --mode development

这个选项可以指定编译模式为开发模式。除此之外,还有很多配置选项可以使用,具体如下。

1. –mode

指定编译模式,可选值有development、production和test。

2. –dest

指定输出目录,默认为dist。

3. –modern

启用现代模式构建。现代模式构建会生成两个版本的文件,一个是ES6模块版本,另一个是传统版本。浏览器如果支持ES6模块,则会自动加载ES6版本,否则加载传统版本。

4. –target

指定编译目标,可选值有’app’和’lib’。app表示编译为应用程序,lib表示编译为库,供其他项目使用。

5. –formats

指定编译出的库的格式,可选值有’umd’、’cjs’、’amd’、’system’、’esm’和’iife’。

6. –name

指定生成的库的名称。

7. –no-clean

不执行清理操作。这个选项用于保留之前的生成的文件,以方便调试。

8. –watch

启用监听模式,即监听文件的变化,自动重新编译。用于开发模式下的编译。

三、Vue-cli-service build的webpack配置

Vue-cli-service build的底层是基于webpack的,因此,Vue-cli-service build也支持一些webpack的配置,以实现更加精细化的构建。Vue-cli-service build会自动生成一个webpack配置文件,默认在项目的根目录下生成一个vue.config.js文件。我们可以在这个文件中添加webpack的配置选项,来定制化编译过程。

module.exports = {
  chainWebpack: config => {
    // 添加新的svg loader
    const svgRule = config.module.rule('svg');
    svgRule.uses.clear();
    svgRule.
      use('vue-svg-loader').
        loader('vue-svg-loader').
        options({
          svgo: {
            plugins: [],
            removeDoctype: true,
            removeComments: true
          }
        });
  }
};

上面的代码演示了添加一个新的svg loader的webpack配置,这个loader将会把SVG图像转换为Vue组件,以便在Vue模板中使用。

四、Vue-cli-service build的优化

Vue-cli-service build不仅支持配置选项和webpack配置,还支持一些优化选项,以提高构建的效率和文件的大小。

1. 压缩代码

可以使用UglifyJSPlugin来压缩代码:

const UglifyJSPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new UglifyJSPlugin()
    ]
  }
}

2. 提取公共代码

可以使用SplitChunksPlugin来提取公共代码,减少文件的大小:

module.exports = {
  configureWebpack: {
    optimization: {
      splitChunks: {
        chunks: 'all'
      }
    }
  }
}

3. 去除无用CSS

可以使用PurifyCSSPlugin来去除无用的CSS:

const PurifyCSSPlugin = require('purifycss-webpack');
const glob = require('glob-all');

module.exports = {
  configureWebpack: {
    plugins: [
      new PurifyCSSPlugin({
        paths: glob.sync([
          // 需要进行CSS tree shaking的文件
          path.join(__dirname, './src/*.vue')
        ])
      })
    ]
  }
}

4. 图片压缩

可以使用imagemin-webpack-plugin来压缩图片:

const ImageminPlugin = require('imagemin-webpack-plugin').default;

module.exports = {
  configureWebpack: {
    plugins: [
      new ImageminPlugin({
        test: /\.(jpe?g|png|gif|svg)$/i,
        cacheFolder: path.resolve(__dirname, 'cache'),
        optimizeCache: true,
        pngquant: {
          quality: '95-100'
        },
        svgo: null,
        plugins: [
          imageminMozjpeg({
            quality: 80,
            progressive: true
          })
        ]
      })
    ]
  }
}

5. 启用gzip压缩

可以使用CompressionWebpackPlugin来启用gzip压缩:

const CompressionWebpackPlugin = require('compression-webpack-plugin');
module.exports = {
  configureWebpack: {
    plugins: [
      new CompressionWebpackPlugin({
        algorithm: 'gzip'
      })
    ]
  }
}

如果需要压缩更多的文件类型,可以增加一个数组,比如:

new CompressionWebpackPlugin({
  filename: '[path].gz',
  algorithm: 'gzip',
  test: /\.(js|css|html|svg)$/,
  threshold: 10240,
  minRatio: 0.8,
  deleteOriginalAssets: false
})

五、Vue-cli-service build的性能优化

除了上面的优化选项之外,还有一些性能优化需要注意。

1. 避免在模板中使用无法缓存的表达式

一些表达式,比如Math.random(),会导致模板的结果无法缓存,因此需要避免在模板中使用这些表达式。

2. 使用懒加载

对于一些大型的组件或者页面,可以使用Vue的异步组件和路由懒加载来提高加载速度,减少初始下载大小:

const Login = () => import('./views/Login.vue');
const Home = () => import('./views/Home.vue');
const User = () => import('./views/User.vue');

const router = new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/',
      component: Home
    },
    {
      path: '/user/:id',
      component: User
    }
  ]
});

3. 图片处理

为了减少加载时间和提高性能,可以对图片进行处理。比如,可以压缩图片、减少图片的分辨率等等。可以使用一些自动化的工具,比如ImageOptim和TinyPNG。

4. 避免使用不必要的插件和库

有些插件和库可能会对性能造成影响,因此在使用它们时需要谨慎。千万不要使用不必要的插件和库。

5. 充分利用缓存

利用浏览器缓存可以提高加载速度,减少带宽消耗。因此,在开发时需要充分利用缓存,比如通过设置Expires和Cache-Control响应头等。

六、总结

本文详细介绍了Vue-cli-service build的使用、配置选项、webpack配置、优化选项以及性能优化。通过本文的介绍,读者可以理解和掌握Vue-cli-service build的使用和相关知识,进一步提高Vue应用程序的构建效率和性能。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/311588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-05 13:24
下一篇 2025-01-05 13:24

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论