• vue项目打包优化


    一、打包路径和路由模式

    第一步:在vue.config.js配置打包路径

    1. module.exports = {
    2. publicPath:'./'
    3. }

    第二步:在router/index.js将路由模式改为hash

    1. const router = new VueRouter({
    2. mode: "hash",
    3. base: process.env.BASE_URL,
    4. routes,
    5. });

    如果项目上线要求是history模式,需要告诉后端重定向一下路径。

    二、代理和环境变量

        开发环境:.env.development

    1. VUE_APP_ENV = 'dev'
    2. VUE_APP_BASE_API = 'http://localhost:3000'

        生产环境:.env.production

    1. VUE_APP_ENV = 'pro'
    2. VUE_APP_BASE_API = 'http://localhost:3000'

    在.vue文件里可以使用 console.log(process.env.VUE_APP_BASE_API)  判断该环境是开发环境还是生产环境,从而选择接口地址url。

    1. $axios( options ){
    2. let apiUrl = null;
    3. if( process.env.VUE_APP_ENV ==='dev' ){
    4. apiUrl = options.url;
    5. }else{
    6. apiUrl = process.env.VUE_APP_BASE_API + options.url;
    7. }
    8. return axios({
    9. url:apiUrl
    10. })
    11. }

    三、使用node搭建后端项目

    1. 全局命令:npm install express-generator -g
    2. 进入项目目录:express --view=ejs server

    四、node-express跨域

    1. router.all('*', function (req, res, next) {
    2. res.header('Access-Control-Allow-Origin', '*');
    3. res.header('Access-Control-Allow-Headers', 'Content-Type');
    4. res.header('Access-Control-Allow-Methods', '*');
    5. res.header('Content-Type', 'application/json;charset=utf-8');
    6. next();
    7. });

    五、安装可视化插件

    npm install webpack-bundle-analyzer

    vue.config中配置

    1. //引入可视化插件
    2. const BundleAnalyzer = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
    3. module.exports = {
    4. configureWebpack:config=>{
    5. config.plugins.push(
    6. new BundleAnalyzer()
    7. )
    8. }
    9. }

    六、减少体积-productionSourceMap

    别生成map文件

    说明:map是方便代码运行的时候,可以准确输出代码到底是哪一行出现了错误。

    1. module.exports={
    2. //不生成map文件
    3. productionSourceMap:false
    4. }

    七、拆包--路由懒加载提升加载性能

    说明:app.js是用来存放页面中的js操作的。例如:如果路由没有懒加载和分包,那么所有的路由全部会放在app.js文件中。

    使用webpackChunkName在router/index.js文件在进行拆包

    1. {
    2. path: "/course",
    3. name: "Course",
    4. component: () => import(/* webpackChunkName:'course'*/ "../views/course/Course.vue")
    5. },

    八、减少体积-ui组件的按需引入

    vendors.js:

    说明:存放项目中的依赖。例如:vue.js、vue-router、vuex、axios、element-ui...

    ui组件的按需引入:

            根据不同的ui组件,使用按需引入,会让vendors.js文件的体积变小

     九、减少体积-cdn引入包

    可以把vue.js、router、vuex、axios...做成cdn引入。

    注意:其实任何文件都可以做成cdn的形式,但是不建议ui组件做成cdn

  • 相关阅读:
    存储技术知识分享
    从 0 到 1,看我玩弄千万日志于股掌
    计算机网络笔记【面试】
    【设计模式】单例模式
    关于2023届互联网秋招,我想简单说两句
    vue 基于vue-seamless-scroll无缝滚动的用法和遇到的问题解决
    【ADB】借助ADB模拟滑动屏幕,并进行循环
    拆解现货黄金隔夜利息计算公式
    qcustemplot使用opengl加速
    推挽输出和开漏输出-三极管-mos管
  • 原文地址:https://blog.csdn.net/qq_48666244/article/details/134094216