vue上线前项目优化

1.项目优化策略
  • 生成打包报告
  • 启用第三方cdn
  • element-ui按需加载
  • 路由懒加载
  • 首页内容定制
2.具体优化
2.1 进度条-nprogress

yarn add nprogress

import NProgress from 'nprogress'

// 进度条开始,一般放在请求拦截器中
NProgress.start()

// 进度条结束,放在响应拦截器中
NProgress.done()
2.2 移除console

yarn add ‘babel-plugin-transform-remove-console’ --dev //安装开发依赖

// babel.config.js全局共享

// 项目发布阶段需要用到的bable插件
const prodPlugins=[]

if (process.env.NODE_ENV ==='production'){
  prodPlugins.push('transform-remove-console')
}

module.exports = {
    plugins:[
    ...prodPlugins,
    ]
}
2.3 通过vue ui查看生成报告
2.4 指定不同模式打包入口(chainWebpack、configWebpack)
// vue.config.js
module.exports = {
    chainWebpack: config => {
        config.when(process.env.NODE_ENV === 'production', config => {
            config.entry('app').clear().add('./src/main-prod.js')
        })

        config.when(process.env.NODE_ENV === 'development', config => {
            config.entry('app').clear().add('./src/main-dev.js')
        })
    }
}
2.5 通过externals加载外部资源(cdn外链)
// vue.config.js
module.exports = {
    //修改打包入口文件
    chainWebpack: config => {
        // 发布模式
        config.when(process.env.NODE_ENV === 'production', config => {
            config.entry('app').clear().add('./src/main-prod.js')

            //cdn加载外部资源,只在生产环境使用
            config.set('externals', {
                vue: 'Vue',
                'vue-router': 'VueRouter',
                axios: 'axios',
                echarts: 'echarts',
                nprogress: 'NProgress',
            })
        })

        //开发模式
        config.when(process.env.NODE_ENV === 'development', config => {
            config.entry('app').clear().add('./src/main-dev.js')
        })
    }
}

// 在public/index.html中添加对应的css以及js标签引用
//例如:<link href="https://cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">
//<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
2.6 通过cdn优化element-ui
  • 在main-prod.js中,注释掉element-ui按需加载的代码
  • 在index.html中加载element-ui的 js 与 css cdn外链
2.7 定制首页
// 发布模式
config.when(process.env.NODE_ENV === 'production', config => {
    config.entry('app').clear().add('./src/main-prod.js')

    //cdn加载外部资源
    config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        echarts: 'echarts',
        nprogress: 'NProgress',
    })

    config.plugin('html').tap(args => {
        args[0].isProd = true
        return args
    })
})

//开发模式
config.when(process.env.NODE_ENV === 'development', config => {
    config.entry('app').clear().add('./src/main-dev.js')
    
    //判断是否是生产模式
    config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
    })
})

//在index.html中判断
//<title><%= htmlWebpackPlugin.options.isProd ? '': 'dev - '%>管理平台</title>

//并通过isProd判断是否加载外部cdn链接
<% if(htmlWebpackPlugin.options.isProd) { %>
    //包裹的内容
<% } %>
2.8 路由懒加载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值