详解vue-cli之webpack3构建全面提速优化

标题

详解vue-cli之webpack3构建全面提速优化

简介

Vue-cli是Vue框架官方提供的脚手架工具,能够帮助我们快速搭建项目,减少开发成本。而webpack则是目前比较流行的打包工具。本攻略将介绍如何在Vue-cli中使用webpack3构建项目,并进行全面提速优化。

步骤

1. 安装vue-cli

首先,我们需要安装Vue-cli。在命令行中输入以下命令:

npm install -g vue-cli

2. 创建Vue项目

创建Vue项目很简单。在命令行中输入以下命令:

vue init webpack myproject

其中,myproject是项目名称,可以根据自己的需要进行修改。

3. 运行项目

创建好项目后,我们就可以运行项目了。在命令行中进入到项目目录下,输入以下命令:

npm run dev

然后在浏览器中打开 http://localhost:8080/ ,就可以看到项目的运行效果了。

4. 优化webpack配置文件

Vue-cli默认生成的webpack配置文件,性能并不是特别好。因此,我们需要进行一些优化。

4.1 使用CDN加速静态资源

使用CDN加速静态资源可以大大减轻服务器的负担,这对于大型项目来说尤为重要。

我们可以修改webpack.base.conf.js文件,将官方提供的CDN path替换成自己的CDN:

output: {
  path: config.build.assetsRoot,
  filename: utils.assetsPath('js/[name].[chunkhash].js'),
  chunkFilename: utils.assetsPath('js/[id].[chunkhash].js'),
  publicPath: 'https://cdn.example.com/' // 替换成你自己的CDN
},

4.2 使用DllPlugin插件

使用DllPlugin插件可以将第三方模块单独打包,减少构建时间。我们可以创建一个webpack.dll.conf.js文件,进行单独打包。

具体操作可以参考以下代码:

const path = require('path')
const webpack = require('webpack')

module.exports = {
  mode: 'production',
  entry: {
    vendor: [
      'vue',
      'vue-router',
      'lodash',
      'moment',
      'axios'
    ]
  },
  output: {
    path: path.join(__dirname, '../static/dll'),
    filename: '[name].dll.js',
    library: '[name]_library'
  },
  plugins: [
    new webpack.DllPlugin({
      path: path.join(__dirname, '../static/dll', '[name]-manifest.json'),
      name: '[name]_library'
    })
  ]
}

5. 结束语

使用以上方法,可以对Vue-cli项目进行全面的提速优化。当然,这还只是一个开始,我们可以根据项目需要,对webpack配置进行更加细致的优化。

示范代码

在第4节中,我们提到了如何进行webpack配置文件的优化。这里提供一个完整的webpack.base.conf.js的示范代码,供参考:

const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src')
    }
  },
  module: {
    rules: [
      {
        test: /\.(js|vue)$/,
        loader: 'eslint-loader',
        enforce: 'pre',
        include: [resolve('src'), resolve('test')],
        options: {
          formatter: require('eslint-friendly-formatter')
        }
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test')]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
        }
      }
    ]
  },
  node: {
    // prevent webpack from injecting useless setImmediate polyfill because Vue
    // source contains it (although only uses it if it's native).
    setImmediate: false,
    // prevent webpack from injecting mocks to Node native modules
    // that does not make sense for the client
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty'
  }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue-cli之webpack3构建全面提速优化 - Python技术站

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

相关文章

  • 详解关于Vue单元测试的几个坑

    我来详细讲解一下“详解关于Vue单元测试的几个坑”的完整攻略。 1. 前置条件 在进行Vue的单元测试之前,需要安装Vue Test Utils和Jest两个库,这两个库用于进行Vue单元测试的框架和运行环境。 安装Vue Test Utils和Jest: npm install –save-dev @vue/test-utils jest 2.安装Vue…

    Vue 2023年5月29日
    00
  • vue实现秒杀倒计时组件

    关于如何使用vue实现秒杀倒计时组件,以下是详细讲解: 1. 确认需求 在开始开发之前,我们需要先明确需求,确定倒计时组件的功能和样式要求。例如,我们的秒杀倒计时需要支持以下功能: 显示倒计时的小时、分钟和秒钟; 支持自定义倒计时的截止时间; 支持在倒计时结束时触发自定义回调事件; 样式需求:支持自定义组件的大小、字体样式和颜色等属性。 2. 开始开发 2.…

    Vue 2023年5月29日
    00
  • vue2.X组件学习心得(新手必看篇)

    Vue2.X组件学习心得(新手必看篇) 前言 Vue是一个非常流行且易于上手的JavaScript框架,对于初学者来说,学习Vue的组件化开发是一个很好的入门途径。本文将介绍Vue组件化开发的基础知识和一些实用技巧,让新手在学习Vue时能够更加轻松地掌握组件化开发。 基本概念 在Vue中,“组件”是指一个拥有预定义选项的实例,这些选项可以让我们定义组件的行为…

    Vue 2023年5月27日
    00
  • 使用FileReader API创建Vue文件阅读器组件

    使用FileReader API创建Vue文件阅读器组件的攻略包含以下步骤: 1. 创建Vue组件 我们首先需要创建一个Vue组件来显示和读取文件内容。下面是一个基本的Vue组件模板,用于显示文件内容: <template> <div> <textarea v-model="fileContent">&…

    Vue 2023年5月28日
    00
  • 详解Vue中使用v-for语句抛出错误的解决方案

    下面是详解Vue中使用v-for语句抛出错误的解决方案的完整攻略。 问题描述 在Vue中使用v-for语句时,有时会出现以下错误: [Vue warn]: Error in render: "TypeError: Cannot read property ‘xxx’ of undefined" 这个错误通常发生在v-for语句循环数据时,…

    Vue 2023年5月27日
    00
  • vue-cli3中vue.config.js配置教程详解

    下面就是对“vue-cli3中vue.config.js配置教程详解”的完整攻略。 使用vue-cli3创建Vue项目 首先,我们需要安装Vue的脚手架工具——vue-cli3,使用以下命令进行安装: npm install -g @vue/cli 安装完成后,我们可以使用以下命令来创建一个新的Vue项目: vue create my-project vue…

    Vue 2023年5月28日
    00
  • Vue实现答题功能

    Vue 实现答题功能的完整攻略包含以下步骤: 步骤一:设计数据结构 在 Vue 实现答题功能之前,我们首先需要设计数据结构。数据结构应该包含题目、选项、答案等信息。例如,以下是一个选择题的数据结构: const questions = [ { question: ‘以下哪个不是JavaScript的数据类型?’, options: [‘Undefined’,…

    Vue 2023年5月27日
    00
  • Vue.js 中的实用工具方法【推荐】

    首先,我们需要了解什么是Vue.js中的实用工具方法,Vue.js中的实用工具方法是指Vue.js框架提供的一些通用工具函数,可以帮助我们更轻松地实现一些常见的功能。这些工具方法大多数被封装在Vue.js的全局对象Vue上。 下面是Vue.js中常用的实用工具方法: Vue.nextTick() Vue在更新数据后,DOM并不会立即被更新,而是异步更新DOM…

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