关于gzip压缩 转载+siping项目代码

可以先看这个转载链接了解详情 我这里就补一下具体的代码

package.json文件先加一哈需要下载的插件和版本

  "devDependencies": {
    "compression-webpack-plugin": "^1.1.12",   giz用
    "uglifyjs-webpack-plugin": "^2.2.0",  去掉console.log之类的
    "webpack-bundle-analyzer": "^3.0.3"   看打包文件大小用
  },

vue.config.js文件

const CompressionPlugin = require("compression-webpack-plugin");
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");



 chainWebpack: (config) => {
    config.plugin("compressionPlugin").use(
      new CompressionPlugin({
        test: /\.(js|css|less)$/, // 匹配文件名
        threshold: 10240, // 对超过10k的数据压缩
        deleteOriginalAssets: false, // 不删除源文件
      })
    );

    config
      .plugin("gzip-plugin")
      .use("compression-webpack-plugin", [
        {
          filename: "[path].gz[query]",
          algorithm: "gzip",
          test: /\.js$|\.html$|\.json$|\.css$|\.ttf$|\.TTF$/,
          threshold: 0, // 只有大小大于该值的资源会被处理
          minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
          deleteOriginalAssets: false, // 删除原文件
        },
      ])
      .end();

    //依赖超过一定大小后被单独打包
    config.optimization.splitChunks({
      chunks: "all",
      maxInitialRequests: Infinity,
      minSize: 300000, // 依赖包超过300000bit将被单独打包
      automaticNameDelimiter: "-",
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name (module) {
            const packageName = module.context.match(
              /[\\/]node_modules[\\/](.*?)([\\/]|$)/
            )[1];
            return `chunk.${packageName.replace("@", "")}`;
          },
          priority: 10,
        },
      },
    });

  },


  configureWebpack: {
	optimization: {
      minimizer: [
        new UglifyJsPlugin({
          uglifyOptions: {
            // 删除注释
            output: {
              comments: false,
            },
            parallel: true,
            // 删除console debugger 删除警告
            compress: {
              warnings: false,
              drop_console: true, //console
              drop_debugger: false,
              pure_funcs: ["console.log"], //移除console
            },
          },
        }),
      ],
    },
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 Select 联动可以通过监听 Select 组件的 change 事件实现。具体实现步骤如下: 1. 在 data 中定义需要联动的数据列表,如下: ``` data() { return { provinces: [ { value: 'jilin', label: '吉林省' }, { value: 'liaoning', label: '辽宁省' }, { value: 'hebei', label: '河北省' } ], cities: { 'jilin': [ { value: 'changchun', label: '长春市' }, { value: 'jilin', label: '吉林市' }, { value: 'siping', label: '四平市' } ], 'liaoning': [ { value: 'shenyang', label: '沈阳市' }, { value: 'dalian', label: '大连市' }, { value: 'anshan', label: '鞍山市' } ], 'hebei': [ { value: 'shijiazhuang', label: '石家庄市' }, { value: 'tangshan', label: '唐山市' }, { value: 'baoding', label: '保定市' } ] }, selectedProvince: '', selectedCity: '' } } ``` 2. 在模板中使用 Select 组件,如下: ``` <template> <div> <select v-model="selectedProvince" @change="onProvinceChange"> <option value="">请选择省份</option> <option v-for="province in provinces" :value="province.value">{{ province.label }}</option> </select> <select v-model="selectedCity"> <option value="">请选择城市</option> <option v-for="city in cities[selectedProvince]" :value="city.value">{{ city.label }}</option> </select> </div> </template> ``` 3. 在 methods 中定义 onProvinceChange 方法,该方法会在省份选择发生变化时被调用,根据选中的省份,更新城市列表数据,如下: ``` methods: { onProvinceChange() { this.selectedCity = '' // 清空城市选择 } } ``` 这样,就可以实现 Vue3 Select 的联动效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值