vue打包优化dist文件过大,导致资源加载多、首页白屏问题

dist打包后经常遇到包过大,有的甚至超过10M等,这会导致我们项目在首次进入时,由于资源加载过多而导致页面白屏的情况,针对这种情况,我们可以对以下几个方便进行优化
一、设置productionSourceMap
在vue.config.js文件中,设置productionSourceMap为 false;表示生产环境不生成sorce map文件(source map 就是资源地图。其作用就是定位,用于定位浏览器控制台输出语句在项目文件的位置,以便于出现问题时快速找到问题位置。)
module.exports = {
	productionSourceMap: false
}
二、使用插件 compression-webpack-plugin( 顾名思义:对webpack打包文件进行压缩,达到减小包体积,提升访问速度的效果)
1.安装插件
npm install compression-webpack-plugin -D
2. 配置vue.config.js文件
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const isProduction = process.env.NODE_ENV === 'production';

module.exports = {
chainWebpack: config => {
    if (isProduction) {
      config.plugin('compression-webpack-plugin').use(new CompressionWebpackPlugin({
        test: /\.(js|css|scss)$/, // 匹配文件名
        threshold: 20480, // 对超过20k的数据压缩
        minRatio: 0.8,
        deleteOriginalAssets: true // 删除源文件
      }))
    }
  },
}

注意安装后使用过程中可能会报错,大致原因是因为版本不匹配造成,所以安装时最好指定版本 npm install compression-webpack-plugin@6.x -D

3.使用CDN加载常用资源图片等
1.对于常用的图片,可以放到cdn上进行访问,其一是可以减小打包体积;其二是通过cdn访问可以减轻服务器压力,提升性能
2.常用资源使用cdn配置,编辑vue.config.js文件
// 忽略生成环境打包的文件
var externals = {
  'vue': 'Vue',
  'vuex': 'Vuex',
  'vue-router': 'VueRouter',
  'element': 'Element',
  'moment': 'moment',
};

// 设置CND相关css和js地址
const cdn = {
  js: [
    'https://cdn.bootcdn.net/ajax/libs/vue/3.0.11/vue.global.js',
    'https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.6/vue-router.global.min.js',
    'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.0/vuex.global.min.js',
    'https://cdn.bootcss.com/element-ui/2.8.2/index.js',
    'https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js',
  ],
   css: [
    'https://cdn.bootcss.com/element-ui/2.8.2/theme-chalk/index.css',
  ]
}


module.exports = {
 // 扩展cdn
 config.plugin('html').tap(args => {
      args[0].cdn = cdn
      return args
    })
  config.externals(externals)
}
3.在public下index.html中引入
 <!-- cdn方式引入插件 -->
  <% if (process.env.NODE_ENV === 'production') { %>
    <% if (htmlWebpackPlugin.options.cdn.css) { %>
      <% for(var css of htmlWebpackPlugin.options.cdn.css) { %>
        <link href="<%=css%>" rel="preload" as="style">
        <link rel="stylesheet" href="<%=css%>" as="style">
      <% } %>
    <% } %>
    <% if (htmlWebpackPlugin.options.cdn.js) { %>
      <% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
        <link href="<%=js%>" rel="preload" as="script">
        <script src="<%=js%>"></script>
      <% } %>
    <% } %>
  <% } %>
4.使用路由懒加载(需要用到某个页面时,才去加载路由,减少一进首页就加载全部资源,造成首页加载缓慢)
具体方式 一:使用 import
component: () => import(‘xxxxx’) // 组件路径
方式二: 使用require
component: resolve => require(['xxx 组件路径'], resolve)
使用上述几个方式后,dist打包结果已经明显减小,首页打开速度也是杠杠的了…………
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将Vue打包文件(dist目录中的静态资源)整合进Golang的可执行文件中,可以使用go-bindata等工具来实现。 首先,需要将dist目录中的静态资源文件(如js、css、图片等)转化为Go代码。可以使用go-bindata这个go工具来实现,这个工具会将静态文件编译为Go代码,可以在程序中直接访问到。具体操作步骤如下: 1. 安装go-bindata工具: ```shell go get -u github.com/go-bindata/go-bindata/... ``` 2. 在项目根目录创建一个文件夹(如assets),用于存放生成的绑定数据文件。 3. 在终端中进入到dist目录下,执行以下命令将dist目录下的所有文件转化为Go代码,并输出到assets文件夹中: ```shell go-bindata -o ../assets/assets.go -pkg assets ./... ``` 4. 在Go代码中引入生成的assets.go文件,即可在代码中访问到dist目录中的静态资源文件。在代码中使用`assets.Asset(filename string)`方法来获取静态资源文件的内容。 接下来,需要将Vue打包文件整合进Golang的可执行文件,可以使用Go的embed包来实现,这个包在Go 1.16版本中新增。embed包可以将静态资源文件嵌入到可执行文件中,无需再依赖外部文件。具体操作步骤如下: 1. 在Go代码中引入embed包: ```go import "embed" ``` 2. 使用embed包的`//go:embed`指令将dist目录中的静态资源文件嵌入到可执行文件中。例如: ```go //go:embed dist/* var staticFiles embed.FS ``` 3. 在代码中可以通过`staticFiles`来访问嵌入的静态资源文件。 最后,将Golang代码编译为可执行文件时,dist目录中的静态资源文件会自动嵌入到可执行文件中。可以通过`go build`命令来编译项目: ```shell go build -o myapp main.go ``` 编译成功后,会生成可执行文件myapp,该文件中已经包含了dist目录中的静态资源文件,可以直接运行该文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值