vue前端项目优化方案

部署环境
@vue/cli 4.5.13 、nginx、 dockerfile、 k8s CI\CD 本次针对的是vue
cli脚手架进行webpack相关的配置, 包含到nginx 和dockerfile

一、包体积优化

分隔js  

代码分隔出来的js文件名 /* webpackChunkName: "register" */     {
    path: '/401',
    component: () => import(/* webpackChunkName: "401" */'@/views/error-page/401'),
    hidden: true   },
 配置打包名字
 
configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      filename: './static/js/[name].js',
      chunkFilename: './static/js/[name].js'
    }
}

没有用到hash,固定名字下面需要配合缓存解决,css本来想用插件但是用了更简单的方案
css也配置去掉hash,上面的 output 配置也可以去掉看个人要求

支持GZIP

安装 compression-webpack-plugin  npm i compression-webpack-plugin -D
 
// 顶部加入
const CompressionPlugin = require('compression-webpack-plugin')


 configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      filename: './static/js/[name].js',
      chunkFilename: './static/js/[name].js'
    },
    // GZIP
    plugins: [
      new CompressionPlugin({
        algorithm: 'gzip',
        test: /\.(js|css)$/, // 匹配文件名
        threshold: 81920, // 对超过10k的数据压缩
        deleteOriginalAssets: false, // 不删除源文件
        minRatio: 0.8 // 压缩比
      })
    ]
// ........其他的配置
}

一半的人会报错: ERROR TypeError: Cannot read property ‘tapPromise’ of
undefined 最后发现是是compression-webpack-plugin版本问题,
compression-webpack-plugin 默认安装的是 7 版本的 先执行卸载命令->npm uninstall
compression-webpack-plugin 执行安装命令->npm i
compression-webpack-plugin@5.0.1 -D

缓存问题解决

nginx配置协商缓存,加入一下配置
gzip_static on;
 add_header Cache-Control no-cache;  
 
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  sendfile        on;
  keepalive_timeout  65;
  gzip_static on;
  server {
    listen       80;
    server_name  localhost;
    add_header Cache-Control no-cache;
    location / {
      add_header Cache-Control no-cache;
      root   /app;
      index  index.html;
      try_files $uri $uri/ /index.html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
  }
}

 

无用包去除

npm install -g depcheck 项目中运行 depcheck 即可
下面才是重点 这里检查只是为了减少npm i的工作量

Unused dependencies

  • driver.js
  • print-js
  • react-scripts
  • showdown

// 这里我建议别动尤其ts项目
Unused devDependencies

  • @vue/cli-plugin-babel
  • @vue/cli-plugin-eslint
  • @vue/cli-plugin-unit-jest
  • @vue/test-utils
  • autoprefixer
  • babel-core
  • babel-eslint
  • html-webpack-plugin
  • node-sass
  • sass-loader
  • script-ext-html-webpack-plugin
  • serve-static
  • svg-sprite-loader

//下面才是重点 找出src下面无用的vue文件或者无用的引用 删除才能减少打包体积

Missing dependencies

  • husky: ./package.json
  • qs: ./src/utils/http.js
  • lodash: ./src/utils/http.js
  • clearfix: ./src/styles/mixin.scss
  • scrollBar: ./src/styles/mixin.scss
  • relative: ./src/styles/mixin.scss
  • pct: ./src/styles/mixin.scss
  • direction: ./src/styles/mixin.scss
  • if: ./src/styles/mixin.scss
  • triangle: ./src/styles/mixin.scss
  • tui-editor: ./src/components/MarkdownEditor/index.vue
  • body-parser: ./mock/mock-server.js

注意:package.json的无用依赖去除不会减少打包体积,src下的无用 import才是影响包体积原因

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一种达成这些目标的计划。无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的效益,提高效率并减少浪费。 风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据驱动的方法有助于减少不确定性,提高决策的准确性。 团队协作: 复杂的问题通常需要多个人的协同努力。方案提供了一个共同的框架,帮助团队成员理解各自的职责和任务,促进协作并确保整个团队朝着共同的目标努力。 监控与评估: 方案通常包括监控和评估的机制,以确保实施的有效性。通过定期的评估,可以及时调整方案,以适应变化的环境或新的挑战。 总体而言,方案的作用在于提供一种有序、有计划的方法,以解决问题、实现目标,并在实施过程中最大化资源利用和风险管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值