mpvue——引入echarts打包vendor过大

25 篇文章 0 订阅
13 篇文章 0 订阅

有一个项目需要引入图表,当时有两种选择一种是mpvue-echarts,一种是F2,而我经过踩坑之后依然决然的选择了mpvue-echarts,简单快捷容易上手,主要之前用过比较熟悉。

import * as echarts from 'echarts/dist/echarts.min'

引入后再打包少了2M左右但是还是大啊,查看了webpack后发现,因为是开发环境,所以没进行UglifyJs压缩,所以解决的方法来了,引入UglifyJs插件

修改build目录下 的webpack.dev.conf.js配置文件

var UglifyJsPlugin = require('uglifyjs-webpack-plugin') new UglifyJsPlugin({ sourceMap: true })

 我是觉得还是大了好多,小程序独立包又限制2M,好尴尬吧,所以我们要尽量去控制属性的吧
 辣么 定制化官方echarts来了

勾选需要的组件压缩echarts.js然后去下载
 

<template>
  <!-- 历史价格走势 -->
  <div class="history-price">
    <view class="module-title">历史价格走势</view>
    <view class="history-content">
      <mpvue-echarts :echarts="echarts" :onInit="initChart" canvasId="historyChart"/>
    </view>
  </div>
</template>

<script>
// 实例引用
import echarts from 'echarts'
import mpvueEcharts from 'mpvue-echarts'
import { mapState } from 'vuex'

let chart = null

export default {
  data() {
    return {
      xAxisData: [],
      seriesData: [],
      echarts
    }
  },

  methods: {
    handleHistoryPriceData() {
      this.houseTrendData.forEach(item => {
        this.xAxisData.push(this.formatCategories(item.usemonth))
        this.seriesData.push(item.projectavgprice_anli)
      })
    },

    formatCategories(data) {
      const dataArr = data ? data.split('-') : []
      const [year, month] = dataArr
      const formatStr = year.substr(2, 4) + '-' + month
      return formatStr
    },

    initChart(canvas, width, height) {
      chart = echarts.init(canvas, null, {
        width: width,
        height: height
      })
      canvas.setChart(chart)
      // ECharts 配置项
      var option = {
        backgroundColor: '#fff',
        color: ['#37A2DA'],
        tooltip: {
          show: false
        },
        legend: {
          data: ['价格'],
          top: 20
        },
        grid: {
          containLabel: true
        },
        xAxis: {
          type: 'category',
          boundaryGap: true,
          axisLabel: {
            rotate: 45,
            interval: 0
          },
          data: this.xAxisData
        },
        yAxis: {
          x: 'center',
          type: 'value'
        },
        series: [
          {
            name: '价格',
            type: 'line',
            smooth: true,
            label: {
              show: true,
              offset: [10, 20],
              fontSize: 10
            },
            data: this.seriesData
          }
        ]
      }

      chart.setOption(option)

      // 返回 chart 后可以自动绑定触摸操作
      return chart
    }
  },

  mounted() {
    this.handleHistoryPriceData()
  },

  computed: {
    ...mapState('qrySuccess', {
      houseTrendData: state => state.houseTrendData
    })
  },

  components: {
    mpvueEcharts
  }
}
</script>

 实例下载肯定是最大包的,我这只需要折线,所以我需要引用echarts时替换掉就阔以了,

# 替换 echarts.min.js 文件

需要修改 node_modules 中 echarts -> dist -> echarts.min.js,

用项目里 第三方库定制化的 echarts.min.js替换原有

 最重要的一点差点忘了,

 resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      vue: 'mpvue',
      '@': resolve('src'),
      echarts: 'echarts/dist/echarts.min',
      flyio: 'flyio/dist/npm/wx',
      wx: resolve('src/utils/wx')
    },
    symlinks: false,
    aliasFields: ['mpvue', 'weapp', 'browser'],
    mainFields: ['browser', 'module', 'main']
  },

引入就有指向了,也阔以直接替换echarts.js 就省事了 不用处理了

根据引用\[1\]和引用\[2\]的内容,Uniapp在开发工具Hbuilder X中,如果在项目的page.json文件中编写分包管理的配置,不会影响其他平台的打包。分包加载是小程序的一种机制,可以将小程序的代码和资源分成多个子包,以便更好地管理和加载。小程序限制一个包不能超过2M,但可以分成9个子包,整个小程序的总大小不能超过20M。为了解决分包后主包超过2M的问题,可以在manifest.json文件中的mp-weixin节点下添加以下代码:"optimization": { "subPackages": true },这样就开启了分包优化,分包的js文件将不再打包到主包的vendor.js中。你可以参考引用\[2\]中提供的链接和引用\[3\]中的微信小程序分包管理文档来了解更多关于分包的详细信息。 #### 引用[.reference_title] - *1* *3* [uni-app 打包微信小程序 提示 包体积过大。无法上传,无法预览,无法手机在线调试。](https://blog.csdn.net/weixin_39793790/article/details/105147035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp 微信小程序打包 vendor.js过大 导致打包超过2M](https://blog.csdn.net/qq_36904182/article/details/118761161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值