Vue-CLI项目启动和打包优化

Vue打包后加载太,访问时间太久,记录项目的整个优化过程 通过对打包之后的文件大小进行分析,发现其中three.js,echarts等模块占用空间比较大,同时我对代码进行了排查,发现对这两个模块都是进行的全部引入,但是实际上很多东西都没有使用,于是我对这些模块进行删减,改为部分引入,从而减少包文件的大小,同时将一些没有使用的模块进行删除,从而优化整体包文件的大小。经过以上配置之后,你会发现打包之后的dist/js文件夹里面出现了一些.gz格式的文件,这个就是拆解压缩之后文件包,他们文件都比较小,之后我们还需要nginx的配置文件进行配置,配置代码如下。 阅读详情

如果使用 Vue-CLI 创建的项目启动和打包过程过慢,可以尝试以下几种优化方法。

1. 升级 Node.js 版本

Node.js 的版本有时也会影响 Vue-CLI 项目的启动和打包速度,建议将 Node.js 升级到最新版本(如果项目有依赖对于node版本要求,谨慎升级)。新版本的 Node.js 通常会优化一些性能问题,并且在某些情况下可以提高项目的构建速度。

2. 使用 yarn

如果使用 npm 安装依赖时速度较慢,可以尝试使用 yarn。yarn 使用了并行下载和缓存等优化技术,可以大幅提高依赖包的安装速度。

3. 使用 CDN 引入第三方库

对于一些常用的第三方库,可以考虑使用 CDN 引入,这样可以避免每次打包时都要重新下载这些库,从而提高打包速度。例如:

html

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

4. 使用 gzip 压缩

对于一些较大的静态资源,可以考虑启用 gzip 压缩。gzip 压缩可以减小文件大小,并且可以提高文件传输速度。可以使用 Webpack 中的 compression-webpack-plugin 插件来启用 gzip 压缩。

5. 优化 Webpack 配置

可以通过优化 Webpack 配置来提高 Vue-CLI 项目的启动和打包速度。例如:

  • 使用 Webpack 的 HappyPack 插件来开启多线程构建,提高构建速度。

  • 使用 Webpack 的 DllPlugin 插件来提前打包一些常用的依赖包,从而提高打包速度。

  • 对于一些不常用的第三方库,可以考虑使用 external 配置来避免打包这些库,从而减小打包体积。

6. 拆分代码

对于一些较大的模块或者组件,可以考虑将它们拆分成更小的模块或组件,从而减小单个模块或组件的打包体积。可以使用 Webpack 中的代码分割和动态导入功能来实现拆分代码。

以上是一些常用的 Vue-CLI 项目启动和打包优化方法,可以根据具体情况进行选择和调整。

7. 使用 PWA

使用 PWA(Progressive Web Apps)可以将 Web 应用程序转变为类似原生应用的形式,提供离线访问、推送通知、主屏幕快捷方式等功能,从而提高应用的用户体验。Vue-CLI 3 提供了 PWA 插件,可以快速地将应用转换为 PWA 形式。

8. 使用懒加载

懒加载是指将某些组件或路由在需要时才进行加载,从而减少初始加载时间。Vue-CLI 3 中内置了懒加载的配置项,只需要将组件或路由的 import() 语句包裹在函数中即可实现懒加载。例如:

javascript

const Foo = () => import('./Foo.vue')

9. 使用 Tree Shaking

Tree Shaking 是指将代码中未使用的部分从最终的打包结果中删除,从而减小打包体积。Vue-CLI 3 中使用了 Webpack 4,自带支持 Tree Shaking。可以使用 ES6 的 import/export 语法或者动态 import() 语法来实现 Tree Shaking。

10. 使用 PurgeCSS

PurgeCSS 是一种用于删除未使用 CSS 的工具,可以将不必要的 CSS 从最终的打包结果中删除,从而减小打包体积。Vue-CLI 3 中可以使用 PurgeCSS 插件来实现。

javascript

// vue.config.js
const PurgecssPlugin = require('purgecss-webpack-plugin')
const glob = require('glob-all')
const path = require('path')

module.exports = {
  configureWebpack: {
    plugins: [
      new PurgecssPlugin({
        paths: glob.sync([
          path.join(__dirname, './src/**/*.html'),
          path.join(__dirname, './src/**/*.vue'),
          path.join(__dirname, './src/**/*.js')
        ])
      })
    ]
  }
}

11. 配置 CDN 加速

将静态资源(如图片、字体、JS/CSS 文件等)放在 CDN 上,可以有效地加速网站的访问速度,减少加载时间。Vue-CLI 3 中可以使用 copy-webpack-plugin 插件将静态资源复制到指定的目录,并配合 publicPath 和 externals 配置项使用 CDN 加速。

javascript

// vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin({
        patterns: [
          {
            from: path.join(__dirname, 'src', 'assets'),
            to: path.join(__dirname, 'dist', 'assets')
          }
        ]
      })
    ],
    output: {
      publicPath: 'https://cdn.example.com/',
      filename: '[name].[contenthash].js'
    },
    externals: {
      vue: 'Vue',
      'vue-router': 'VueRouter',
      vuex: 'Vuex'
    }
  }
}

在上述配置中,将静态资源复制到 dist/assets 目录下,指定了 publicPath 为 CDN 地址,使用了 contenthash 作为文件名的一部分(保证每个文件都有唯一的文件名),并将 Vue、Vue Router、Vuex 等库设为 externals,使用时从 CDN 加载。

12. 使用 Vite

Vite 是一种新型的前端构建工具,与传统的 Webpack 不同,采用了 ES Module 的方式加载模块,从而实现了更快的启动和重载速度。Vue-CLI 3 中也可以使用 Vite 来构建项目,只需要将项目中的 package.json 文件中的 "vue": "^3.0.0" 改为 "vite": "^2.0.0",并执行 npm install,即可使用 Vite。

json

// package.json
{
  "dependencies": {
    "vite": "^2.0.0"
  }
}

13. 使用 Nginx 反向代理

Nginx 是一种高性能的 Web 服务器,可以用作 Vue-CLI 项目的反向代理,提高应用的访问速度和并发能力。可以通过修改 Nginx 的配置文件来实现反向代理。

nginx

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

以上配置将 example.com 的访问请求转发到本地的 8080 端口,从而实现反向代理。

14. 代码拆分

对于大型的项目,代码拆分也是提高打包速度的有效方式之一。Vue CLI 4 中默认开启了代码拆分功能,即将不同的页面和路由组件打包为不同的 chunk,可以根据需要按需加载,从而减少首次加载的时间。

代码拆分可以通过以下几种方式实现:

  • 使用 Vue CLI 4 自带的代码拆分功能,开启 splitChunks 配置项,根据需要配置不同的 chunk。

  • 使用 webpack-bundle-analyzer 插件,可视化分析代码中各个模块的大小和依赖关系,从而优化拆分方案。

  • 使用 dynamic import 实现按需加载,将一些不常用的组件和功能单独打包,按需加载时再动态加载。

下面是一个使用 dynamic import 实现按需加载的例子:

javascript

const router = new VueRouter({
  routes: [
    {
      path: '/about',
      component: () => import('./views/About.vue')
    },
    {
      path: '/login',
      component: () => import('./views/Login.vue')
    }
  ]
})

在这个例子中,About 和 Login 组件会在第一次访问对应路由时才会被加载,从而减少首次加载的时间。

15. 缓存

为了提高页面的加载速度,我们可以使用浏览器缓存技术。在开发过程中,需要注意以下几点:

  • 对于静态资源,如图片、样式和脚本等,可以通过配置缓存控制头(Cache-Control 和 ETag 等)来实现缓存。

  • 对于动态生成的 HTML 页面,可以通过设置 HTTP 响应头中的 Expires 和 Cache-Control 等来实现缓存。

在 Vue CLI 中,可以通过配置 webpack 的 output.filename 和 output.chunkFilename 来实现缓存。

javascript

output: {
  filename: '[name].[contenthash].js',
  chunkFilename: '[name].[contenthash].js'
}

其中,[contenthash] 会根据文件的内容生成一个哈希值,当文件内容改变时,哈希值也会改变,从而实现缓存更新。

16. 压缩和优化

我们还可以对代码进行压缩和优化,从而减小文件的体积和加载时间。Vue CLI 默认开启了代码压缩和优化功能,但我们也可以通过以下方式进一步优化:

  • 使用 webpack-bundle-analyzer 插件分析代码体积和依赖关系,从而进一步优化代码拆分方案。

  • 使用 babel 和相关插件实现代码的转译和优化,从而兼容更多的浏览器和提高性能。

  • 使用 tree shaking 和 dead code elimination 等技术,从代码中删除不需要的部分,从而减小文件体积。

  • 使用 CDN 加速静态资源的加载速度

17. 使用Preset(预设)

vue-cli提供了许多可配置的preset(预设),可以根据自己的需求选择合适的preset来优化项目。例如,可以选择vue-router预设,以快速添加路由功能;也可以选择vuex预设,以快速添加状态管理功能。选择合适的预设可以减少手动配置的工作量,提高开发效率。

18. 开启Tree Shaking

Tree Shaking是一种代码优化技术,可以去除未使用的代码,减少打包体积。在vue-cli创建的项目中,可以通过配置webpack的optimization选项来开启Tree Shaking。在vue.config.js文件中加入如下代码:

yaml

module.exports = {
  configureWebpack: {
    optimization: {
      usedExports: true
    }
  }
}

19. 懒加载路由

在应用中,可能存在一些路由组件只有在特定条件下才会被加载。这时,可以使用路由的懒加载功能,按需加载路由组件,减少首屏加载时间。在vue-router中,可以使用import函数实现路由懒加载。例如:

javascript

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

20. 配置babel缓存

babel是一个JavaScript编译器,可以将ES6+的代码转换为ES5代码,以兼容低版本浏览器。在vue-cli创建的项目中,默认会使用babel-loader来处理JavaScript代码。可以通过babel-loader的cacheDirectory选项来开启缓存,以提高编译速度。在vue.config.js文件中加入如下代码:

arduino

module.exports = {
  chainWebpack: config => {
    config.module
      .rule('js')
      .use('babel-loader')
      .loader('babel-loader')
      .tap(options => {
        // 修改官方默认配置,开启缓存
        options.cacheDirectory = true
        return options
      })
  }
}

通过以上方法的使用,可以有效地优化 Vue-CLI 项目的启动和打包速度,并减小打包体积。但需要注意的是,不同的项目和场景可能需要不同的优化方案,需要根据具体情况进行选择和调整。

【实战篇】基于vue-cli创建的项目进行打包优化 一、前言 阅读完该文章大概需要2.5min。 读完该篇文章你能学到 vue-cli默认做了哪些优化? 在cli的基础上我们又能做哪些优化vue.config.js中如何配置一些常用的pluginloader vue-cli的出现,让我们省掉了配置webpack的时间。也就是说,一个不懂webpack的人,也能直接上手开发。比如file-loader, url-loader会提前为我们配置好。 性能方面,vue-cli也默认尽可能多的帮我们做了优化,比如cache-loader会在项目 阅读详情

相关推荐

Vue - 项目编译速度、性能优化打包体积优化

Vue.js 项目中,可以使用 Vuex 来管理应用程序的状态,在应用程序中经常需要获取相同的数据,因此可以使用 Vuex 的缓存技术来缓存请求过的数据,在下次请求时直接从缓存中获取数据,从而减少服务器的请求次数,提高用户体验。productionSourceMap的作用在于定位问题,打包时会生成.map文件,在生产环境就可以在浏览器查看到输出的信息具体是在哪一行,但相应的包的体积也会变大,也会影响构建速度,将其设置为false则不生成.map文件。当绑定的表达式为真值时,该元素会被渲染到页面中;

iotjin的专栏 3619

我是如何把vue项目启动时间从70s优化到7秒的

可怕的启动时间 公司的产品是一个比较大的后台管理系统,而且使用的是webpack3的vue模板项目,单次项目启动时间达到了70s左右 启动项目都够吃一碗豆腐脑了,可是没有豆腐脑怎么办,那就优化启动时间吧! 考虑到升级webpack版本的风险还是比较大的,出了一点问题都得找我,想想还是先别冒险,稳妥为主,所以我选择了通过插件来优化构建时间。 通过查阅资料,提升webpack的构建时间有以下几个方向: 多进程处理文件,同一时间处理多个文件 预编译资源模块,比如把长时间不变的库提取出来做预编译,构建的时候直接

CRMEB小程序商城的博客 8758

Electron开发 —— 简单demo之整合vue

总得有个开始 前置条件: Electron开发 —— 简单demo vue开发 —— 简单demo vscore编辑器(非必须,自选喜欢即可) 本系列始终以win系统描述、maclinux各大发行版操作基本相同,命令或许不同,请自行查阅官网 一:步骤: 1. 利用上一章节的demo,以及之前的vue开发系列,vue项目开发有2种模式,一种脚手架CLI生成,一种直接js引用,此处因为利用上一章...

qq_16670995的博客 1278

Vue项目卡顿加载?这些优化技巧告诉你!

前端开发是一个快速发展的领域,每天都会涌现出新的技术工具。在实现功能的同时,开发人员面临着许多挑战如代码可维护性,加载时间,访问速度,构建速度等问题。这些挑战可能直接影响网站的性能用户体验,需要采取一些优化措施来改善问题。在本文中,我们将探讨一些前端项目优化的具体措施,旨在帮助开发人员提高项目效率,升级用户体验。综合各方面来说 就是。

web全栈开发的博客 1万+

vue遇到老的项目启动打包速度怎么办? webpack-低版版本-编译启动速度打包速度优化方案

vue项目vue-cliwebpack版本太低项目启动如何优化,开启 terser-webpack-plugin 代码压缩,开启摇树优化,watchOptions 忽略node_modules,production 模式关闭 devtool的sourcemap,开启cache缓存,以及辅助工具webpack-bundle-analyzer,speed-measure-webpack-plugin,实现vue-cli低版本项目启动打包速度以及项目体积终极优化

qq_42389674的博客 5966

vue2+electron项目搭建

vue2项目添加electron,可打包为客户端

couch potato的博客 872

前端-调优】vue-cli前端工程webpack启动构建打包优化记录-6分钟至29秒

vue-cli启动打包项目,jenkins上构建频繁,无法忍受这么的速度,所以利用webpack来优化vue-cli的默认配置,开启多线程,利用缓存,充分榨干服务器性能!

Ric的博客 2066

Cooking 教程:轻量级前端构建工具指南

Cooking 是由饿了么前端团队开发的一款高效且灵活的前端构建工具,旨在简化Web应用的打包、编译以及优化流程。它支持现代前端开发的各种需求,包括但不限于CSS预处理器、JavaScript transpiling、文件合并、压缩等。Cooking强调配置的灵活性,让用户能够以最少的学习成本搭建起适合自己项目的构建环境。 ## 项目快速启动 要快速开始使用Cooking,首先确保你的系统已经

gitblog_00376的博客 1043

alias cli3 配置_vue-cli3项目创建-配置-发布

首先需要安装vue-cli3,并初始化一个项目官方教程初始化项目需默认安装router及vuex源码项目预览 登录账号密码随意填 项目接口用的是easy-mock的服务,偶尔会500造成接口请求报错,如果遇到就等一会重新试下~~效果预览效果预览一、Vue-cli3安装成功并启动Vue-cli3安装成功并启动二、删除替换多余文件及代码1.修改文件--src/App.vue2.修改文件--src/ro...

weixin_36251916的博客 231

创建第一个vue项目

1,配置node环境 2,打开cmd切换到node安装目录,安装vue-cli:vue-cli会自动按照项目结构在你本地初始化一个项目,当然不用该工具,手动建文件夹配置js等也可以的,但是vue-cli 一行命令就自动生成了多方便呢 npm install vue-cli -g 3,切换到工作目录,在该目录下使用vue-cli初始化一个项目 vue init webpack projectTest #自定义的项目名 4,使用node.js部署测试运行 cd projectTest np

weixin_41609327的博客 589

Vue开发整理:打包,移动端适配,scss安装

一、打包时路径静态资源路径配置 1.router.js中更改base const router = new VueRouter({ mode: 'history', base: '/wx/', //两边都需要加/ routes: [] }) 2.vue.config.js中增加 module.exports = { publicPath: '/wx/static' //静态资源打包路径 } 二、vue脚手架使用scss 1.什么是CSS 预处理器? SCSS是一种CSS预处理

Darker0305的博客 673

Vue3官网使用及简介

Vue3带来了什么 性能的提升 打包大小减少41% 初次渲染快55%,更新渲染快133% 内存减少54% … 源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现Tree-Sharking … 拥抱TypeScript Vue3可以更好的支持TypeScript 新的特性 Composition API(组合API) setup配置 ref与reactive watch与watchEffect provide与inject

sinat_29304113的博客 1万+

学习二十四、Vite 简介

Vite Vite 是一个面向现代浏览器的一个更轻、更快的 Web 应用开发工具 它基于 ECMAScript 标准原生模块系统 (ES Modules) 实现 项目依赖 Vite @vue/compiler-sfc ES Module 现代浏览器都支持 ES Module (IE 不支持) 通过下面的方式加载模块 支持模块的 script 默认延迟加载 类似于 script 标签设置 defer 在文档解析完成后,触发 DOMContentLoaded 事件前执行

qq_40289624的博客 961

vue-cli4打包最强优化(10M变300kb)

一、去除生产环境sourceMap sourceMap资源映射文件,存的是打包前后的代码位置,方便开发使用,这个占用相当一部分空间 module.exports = { // 根据你的实际情况更改这里 publicPath, assetsDir: 'assets', lintOnSave: true, productionSourceMap: false, } 二、对资源文件进行压缩 需要下载 compression-webpack-plugin cnpm i compression

田兴的博客 2万+

基于vue-cli开发项目打包启动优化实录

说在前面 随着项目逐渐开发完善,项目工程越来越大,每次修改完前端代码等待编译的时间很长,严重影响开发效率,所以针对项目打包启动编译过程进行了研究以及改进,本文会以叙事的口吻来逐步介绍优化的过程思路,希望能帮助有相同问题或者类似问题的小伙伴一些启发。 首先给大家看一看最初项目打包以及启动所需的时间: 项目打包项目启动: 改动后项目重新编译: 打包过程中会输出一系列的打包日志,每时每刻都在处理哪些内容,在经过一番思考过后我准备从这个点下手,发现到底是哪些操作影响了构建效率。 cache-loade

Run_youngman的博客 2736

项目vue-cli4打包以及优化

一、vue项目打包: 可以执行一下代码,在vue-cli中自有打包指令,进行打包,但是为了打包后的大小考虑,还需要在项目的开始前以及结束后,进行相应的操作,对项目打包进行优化,是项目的所占体积变小 npm run build //使用npm打包 cnpm run build //使用cnpm打包 yarn build //使用yarn打包 二、项目开始前的配置: 在项目根路径下创建vue.config.js文件,以修改webpack配置。 1. 配置跨域 使用vue-

zy的博客 2850

vue-cli3打包优化

vue-cli3.0相对于2.0,已经给我们优化了很多了,大家可以打开项目里的node_modules,找到@vue/cli-serve, 这里也说一点,如果你想更深入的了解vue而不仅仅是停留在应用层是一定要去看这些node_modules的。看它里面是怎么配置以及怎么封装的,学习它的思想。 正因为3.0已经做了一些默认的配置,我们进行的进一步优化以及其它配置都放在vue.config.js...

欧阳的技术博客 1566

vue-cli4打包优化(webpack优化

项目开始时webpack配置 vue-cli3以后,我们修改webpack配置,需要自己在项目根路径下创建vue.config.js文件 配置proxy跨域 使用vue-cli开发项目,在本地开发环境中,如果遇到跨域问题,可以通过配置peoxy的方式解决跨域问题 module.exports = { devServer: { open: false, // 自动启动浏览器 host: '0.0.0.0', // localhost port: 6060, // 端口号 h

weixin_46057188的博客 2191
上一篇: 云网络订单模块流量染色功能浅谈
下一篇: Flink CDC 如何简化实时数据入湖入仓
云开发者联盟
博客等级 码龄5年 539粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值