一、利用路由懒加载
1.装置插件npm install --save-dev @babel/plugin-syntax-dynamic-import
2.批改babel.config.js文件
module.exports = { presets: [ '@vue/app' ], "plugins": [ [ '@babel/plugin-syntax-dynamic-import' ] ]}
3.vue.config.js减少如下配置,勾销prefetch和preload
chainWebpack(config) { config.plugins.delete('preload') config.plugins.delete('prefetch')}
二、压缩资源文件(vue 前端打包 chunk-vendors文件过大的问题)
1.装置插件(指定版本为@5.0.1,过高的版本会报错:Cannot read property 'tapPromise' of undefined)
npm i compression-webpack-plugin@5.0.1
2.批改vue.config.js
const webpack = require('webpack')const CompressionWebpackPlugin = require('compression-webpack-plugin')const productionGzipExtensions = ['js', 'css']const isProduction = process.env.VUE_APP_ENV_NAME === 'production'module.exports = { configureWebpack: { plugins: [ new CompressionWebpackPlugin({ algorithm: 'gzip', test: /\.(js|css|less)$/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 minRatio: 0.8, // deleteOriginalAssets: true // 删除源文件 }) ], },}
3.后端配置nginx
# gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; server { listen 80; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; root /usr/share/nginx/html; location / { # 用于配合 browserHistory 应用 try_files $uri $uri/ /index.html; # 如果有资源,倡议应用 https + http2,配合按需加载能够取得更好的体验 # rewrite ^/(.*)$ https://preview.pro.loacg.com/$1 permanent; } location /api { proxy_pass https://preview.pro.loacg.com; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; }}server { # 如果有资源,倡议应用 https + http2,配合按需加载能够取得更好的体验 listen 443 ssl http2 default_server; # 证书的公私钥 ssl_certificate /path/to/public.crt; ssl_certificate_key /path/to/private.key; location / { # 用于配合 browserHistory 应用 try_files $uri $uri/ /index.html; } location /api { proxy_pass https://preview.pro.loacg.com; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; }}