分享好友 最新动态首页 最新动态分类 切换频道
项目优化.自己总结
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配置文件声明该插件

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

最新文章
aps生产排程软件百科
APS生产排程软件是一种专门用于优化和管理的软件工具。 它能够有效地提高生产效率、降低生产成本、优化资源分配、缩短生产周期、提高客户满意度。APS生产排程软件通过高级算法和实时数据分析,帮助企业在复杂的生产环境中做出更明智的决策
2022宣城市中考成绩查询时间及查询入口
2021-12-17 10:33:48文/赵妍妍2022中考即将开始,为了让中考学生和家长们更便利的了解中考成绩查询时间,初三网小编为各位整理了2022宣城市中考成绩查询时间及入口,仅供参考。在此初三网小编也祝愿各位中考学子取得理想的成绩。2022宣城市
AI 时代,程序员的出路在何方?
【编者按】 本文将重点谈论两个话题: AI 时代,程序员真的要被淘汰了吗? 在 AI 时代,如何才能提高竞争力?作者 | 明明如月(CSDN 博客专家)责编 | 夏萌出品 | CSDN(ID:CSDNnews)随着 ChatGPT 的横空出世,给全球带来了巨大冲击,各
AI爆文|盘点用AI出10w+的爆文标题的三种方法!最后一种最简单!
0.开场白大家好,我是书生这是我的第152原创内容很干,记得星标点击查看更多优质内容本文关键词:AI写作、AI工具、GPTs、Adintelli、美金、AI广告#文末有福利一.本文背景开篇先来解释一下,为何在公众号领域,有'标题定生死”这个说法。标
2023年2000-3000元核显电脑配置推荐 适合家用办公及轻量级游戏
组装电脑硬件搭配的自由度是非常高的,用户可以按照自己的预算和需求来配一台电脑。在很多场景下,例如普通家用、商务办公、上网课这类需求,又或者轻量级的腾讯全家桶游戏,一般来说,集成显卡已经可以满足各类日常需求了。下面装机之家晓
GG谷歌安装器五件套 v2.2.9.6 最新版
GG谷歌安装器官方app,最新手机谷歌安装器,一键修复谷歌四件套,享受便捷的谷歌安装服务。gg google安装器app,真正解决谷歌安装问题,让谷歌安装更轻松。免ROOT一键修复谷歌框架,谷歌服务,谷歌账号管理程序,谷歌商店4件套,从此谷歌、
c语言大小排序算法,七种常见的数组排序算法整理(C语言版本)
~~~C语言版本~~~冒泡排序选择排序直接插入排序二分插入排序希尔排序快速排序堆排序#define EXCHANGE(num1, num2) { num1 = num1 ^ num2;num2 = num1 ^ num2;num1 = num1 ^ num2;}排
AI能掌握十万种食物信息 要抓住你的胃却不太容易
  现在已很少人会真的拿着菜谱进厨房,即便真的馋哪道菜,拿出手机随便搜一下就能寻得海量的帮助。所以,当看到福布斯报道说,Facebook人工智能研究小组研发了一款AI菜谱,不少人也就咧着嘴乐一下就丢到脑后了。  虽然Facebook目前还没
2024最新版Lightroom Classic 13.0更新的功能及软件资源
Adobe 为“开发”模块添加了三项主要新功能。新的混色器面板取代了 HSL 面板。当你第一次看到它时,你可能想知道发生了什么,但没有必要惊慌。它包含旧 HSL 面板中的所有滑块,因此您不会丢失任何内容。2024 LRC13.0 Win系统:链接:https:
Chrome与chromedriver.exe的版本的坑以及解压到何处
selenium第一步打开谷歌浏览器但是我却被谷歌映射文件缺失而望而却步当我完美写好代码首先下载同版本的映射文件,找到谷歌的浏览器版本:点击浏览器右上方三个点,找到帮助--关于谷歌 就可以看到版本由于有三个相似的,我选择了这个,你们
相关文章
推荐文章
发表评论
0评