为什么要优化打包?
项目越做越大,依赖包越来越多,打包文件太大 单页面应用首页白屏时间长,用户体验差我们的目的
减小打包后的文件大小 首页按需引入文件 优化 webpack 打包时间优化方式
1、 按需加载
1.1 路由组件按需加载
const router = [ { path: '/index', component: resolve => require.ensure([], () => resolve(require('@/components/index'))) }, { path: '/about', component: resolve => require.ensure([], () => resolve(require('@/components/about'))) }]
1.2 第三方组件和插件。按需加载需引入第三方组件
// 引入全部组件import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)// 按需引入组件import { Button } from 'element-ui'Vue.component(Button.name, Button)
1.3 对于一些插件,如果只是在个别组件中用的到,也可以不要在 main.js 里面引入,而是在组件中按需引入
// 在main.js引入import Vue from vueimport Vuelidate from 'vuelidate'Vue.use(Vuelidate)// 按组件按需引入import { Vuelidate } from 'vuelidate'
2、优化 loader 配置
module: { rules: [ { test: //.js$/, loader: 'babel-loader?cacheDirectory', include: [resolve('src')] } ]}
3、优化文件路径——省下搜索文件的时间
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), } },
4、生产环境关闭 sourceMap
5、代码压缩
两种方法使用如下:
plugins: [ new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false } }, sourceMap: true, parallel: true }), new ParallelUglifyPlugin({ //缓存压缩后的结果,下次遇到一样的输入时直接从缓存中获取压缩后的结果并返回, //cacheDir 用于配置缓存存放的目录路径。 cacheDir: '.cache/', sourceMap: true, uglifyJS: { output: { comments: false }, compress: { warnings: false } } })]
新闻热点
疑难解答
图片精选