分享好友 最新动态首页 最新动态分类 切换频道
项目优化.自己总结
2024-12-29 20:14

项目优化分几个点,一般图片我们用.svg后缀,还有使用base64的格式编码.这些都是减少图片的体积.减少http的请求.还有外部导入的包使用CDN的形式.还有路由的懒加载.还有用keep-alive标签去包裹失活组件.

1. 然后我们打包上线的时候去发现问题,再解决问题.比如说打包会发现,不允许出现console.log这样的代码.我们可以用babel-pluging-transform-remove-console插件解决一下.

在babel.config.js里面配置
一下,但是我们最好设置一个发布阶段的空数组,专门去配置发布阶段的插件
但是怎么判断是开发阶段还是发布阶段,就要在ui面板里面点击serve.有一个--mode 的值是development

发布阶段点击输出的话 --mode的值是production

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

 

2. 我们可以生成一个打包报告

vue-cli-service build --report. 就可以生成roport-html帮助分析包的内容

或者直接ui面板查看报告,通过报告去发现问题解决问题

 

 

3. 新建vue.config.js修改webpack的默认配置
vue3.0默认隐藏了webPack的配置项.目的是屏蔽项目的配置过程.让程上序员把工作的
重心放到具体功能和业务逻辑

 

4. 为开发模式和发布模式指定不同的打包入口.

代码:

通过chainWebpack自定义打包入口
实例代码,写到vue.config.js文件里面
mould.export = {
  chainWebpack : config => {

   config.when(process.env.NODE_ENV ==='production',config=> {
         config.entry('app').clear().add('https://www.cnblogs.com/yadi001/p/src.main-prod.js')
   })

    config.when(process.env.NODE_ENV ==='delelopment',config=> {
          config.entry('app').clear().add('https://www.cnblogs.com/yadi001/p/src.main-dev.js')
    })
 }
}

我们再到src里面删除main.js.然后建main-prod.js和main-dev.js.把main.js里面的代
码复制过去

 

 

5.  还有通过externals加载外部的CDN资源
   默认情况下,通过import语法导入的第三方依赖包,最终会被打包合并到同一个文件夹中.
  从而打包成功后,单文件体积过大的问题.
    externals就是排除某些包,不被打包到这个文件夹里面去.

mould.export = {

  chainWebpack : config => {

 // 发布模式

   config.when(process.env.NODE_ENV ==='production',config=> {
         config.entry('app').clear().add('https://www.cnblogs.com/yadi001/p/src.main-prod.js')

         config.set('externals',{
             vue:'Vue',
            'vue-router':'VueRouter',
            axios:'axios',
            lodash:'_',
            echarts:'echarts',
            nprogress;'Nprogress',
            'vue-quill-editor':'VueQuillEditor'
        })
   })

 // 开发模式

    config.when(process.env.NODE_ENV ==='delelopment',config=> {
          config.entry('app').clear().add('https://www.cnblogs.com/yadi001/p/src.main-dev.js')
    })
 }
}

然后我们要在public/index.html文件的头部添加这些CDN的资源引用.

<!-- nprogress 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.css" />
    <!-- 富文本编辑器 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.core.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.snow.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.bubble.min.css" />
    <!-- element-ui 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.8.2/theme-chalk/index.css" />

    <script src="https://cdn.staticfile.org/vue/2.5.22/vue.min.js"></script>
    <script src="https://cdn.staticfile.org/vue-router/3.0.1/vue-router.min.js"></script>
    <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
    <script src="https://cdn.staticfile.org/lodash.js/4.17.11/lodash.min.js"></script>
    <script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
    <script src="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.js"></script>
    <!-- 富文本编辑器的 js 文件 -->
    <script src="https://cdn.staticfile.org/quill/1.3.4/quill.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.4/dist/vue-quill-editor.js"></script>

    <!-- element-ui 的 js 文件 -->
    <script src="https://cdn.staticfile.org/element-ui/2.8.2/index.js"></script>
在这里引入这样css和js之后,那我们入口文件里面就可以删掉第三方包的样式表.

 

6. 通过CDN去优化Element-ui的打包

分为两步,在main-prod.js里面注释掉element-ui按需加载的代码

在index.html头部区域,通过外链CDN加载element-ui的js和css.代码如上

 

7.如果需要首页内容的自定制

<title><%=  htmlWebpackPlugin.options.isProd ? '' : 'dev - ' %>电商后台管理系统</title>
<% if(htmlWebpackPlugin.options.isProd){ %>
    <!-- nprogress 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.css" />
    <!-- 富文本编辑器 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.core.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.snow.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.bubble.min.css" />
    <!-- element-ui 的样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.8.2/theme-chalk/index.css" />

    <script src="https://cdn.staticfile.org/vue/2.5.22/vue.min.js"></script>
    <script src="https://cdn.staticfile.org/vue-router/3.0.1/vue-router.min.js"></script>
    <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
    <script src="https://cdn.staticfile.org/lodash.js/4.17.11/lodash.min.js"></script>
    <script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
    <script src="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.js"></script>
    <!-- 富文本编辑器的 js 文件 -->
    <script src="https://cdn.staticfile.org/quill/1.3.4/quill.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.4/dist/vue-quill-editor.js"></script>

    <!-- element-ui 的 js 文件 -->
    <script src="https://cdn.staticfile.org/element-ui/2.8.2/index.js"></script>

    <% } %>
 
module.exports = {
  chainWebpack: config => {
    // 发布模式
    config.when(process.env.NODE_ENV === 'production', config => {
      config
        .entry('app')
        .clear()
        .add('https://www.cnblogs.com/yadi001/p/src/main-prod.js')

      config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })

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

    // 开发模式
    config.when(process.env.NODE_ENV === 'development', config => {
      config
        .entry('app')
        .clear()
        .add('https://www.cnblogs.com/yadi001/p/src/main-dev.js')

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

 

8.路由的懒加载

安装@babel/plugin-syntax-dynamic-import包

在babel.config.js配置文件声明该插件

将路由去改为按需加载的形式

最新文章
Apeaksoft iOS Unlocker(iOS解锁工具)
Apeaksoft iOS Unlocker是一款针对iOS系统的密码解锁工具,支持删除iPhone密码以进入锁屏设备、忘记的Apple ID并将iPhone激活为新的以及恢复并删除屏幕时间限制密码等功能。想要在iPhone上使用一些iCloud和iTunes功能的时候,忘记苹果ID或
AI作文生成在线使用,让创意和灵感无处不在!
我们常常需要寻找灵感和创意来应对各种挑战。而AI作文生成在线正是您所需要的工具。它可以帮助您轻松地生成高质量的文章、论文、故事等各种文本,让您无需花费大量时间和精力去思考和创作。AI作文生成在线采用先进的自然语言处理技术,可以
5 个阻止垃圾评论/邮件的 WordPress 蜜罐插件
垃圾评论/邮件预防是我们在使用 WordPress 时常见的问题之一。用户评论、表单提交和在线订单都是垃圾邮件的载体。但是,WordPress 中并没有很多出色的反垃圾功能,好在WordPress的插件生态非常好。防止垃圾邮件的最简单和最有效的方法之一
618充值优惠
1、直接打开京喜app的话费充值即可,会自动弹出,点击领取即可。且实测用完一张后第二天还可以再领一张。OPPO和一加同属一家,一加新加入的手机pay也都是OPPO Pay,所以该活动一加手机用户也可以参与。1、在手机钱包中首页即可领取,点击“
Chrome浏览器远程代码执行漏洞(无沙箱模式)
一、漏洞描述 安全公告编号:CNTA-2021-0015 2021年4月14日,国家信息安全漏洞共享平台(CNVD)收录了Google Chrome远程代码执行漏洞(CNVD-2021-27989)。攻击者利用该漏洞,可在未授权的情况下远程执
2023高人气页游排行榜前十名 受欢迎的页游大全
在游戏市场上每天都有成千上百的新游戏推出,让大多数人看得眼花缭乱。1912yx小编想给大家分享一篇2023受欢迎的页游排行榜前十名推荐的文章。目的是想让大家了解到目前最受大众喜爱的十款游戏叫什么名字、游戏内容是什么样的、怎样去玩,那
AI智能证件照 安卓版 v3.9.1
AI智能证件照app还在为证件照不够美观而烦恼么!?小编为你推荐超好用的手机证件照拍摄软件!使用简单,自拍自修,整到你满意为止!所有功能全部免费用!尺寸任意调,随时可打印!!华军软件园为您提供AI智能证件照安卓版下载,快来体验吧!AI智能
ai绘图生成器都叫什么?了解完才知道原来ai图片制作这么简单
那些喜欢二次元的小伙伴最近也都有发现吧,现在网络上有越来越多的二次元动漫图其实都有由AI来生成的。这让喜欢二次元的我们怎能心里不痒痒,想自己来试试看。可是,想要制作ai绘画二次元图片又该用哪些工具呢?想知道这个问题的答案,下文
excel自动排班表_巧用常见工具:怎样将图片格式数据转换成EXCEL表格
有时我们需要处理的数据以图片或pdf的形式存储,无法直接粘贴到EXCEL中。今天小白通介绍一种将图片中数据转换成表格的方法,为大家解决这个烦恼。1、 假设我们需要处理的数据存储在这张图片中。2、 在QQ中打开一个对话框࿰
BT磁力种子搜索神器安卓版 v845.266
BT磁力种子搜索神器APP手机版是一款非常好用的搜索类服务软件,有着很高效的搜索功能,可以帮助你很方便的搜索和下载音乐、图书、图片、综艺、软件、动漫等资源,另外BT磁力种子搜索神器安卓版除了支持在线搜索资源功能,让你轻轻松松就可
相关文章
推荐文章
发表评论
0评