vue项目优化--使用CDN和Gzip


使用vue-cli构建的vue项目,在打包发布的时候,发现打包后的文件体积很大,使用webpack-bundle-analyzer分析后,发现占用空间最多的是引用的第三方依赖。第三方的依赖文件可以使用cdn外链的方式引入,这样就能大大缩小项目文件的体积。预防cdn链接失效,无缝切换本地文件

具体实现(以我个人项目为例)
我的项目中引入了以下模块vue vue-router vuex axios moment highlight.js

引入cdn文件
我使用的是bootcdn
其中moment.js需要额外引入中文语言
highlight.js需要引入自己需要的语言
我的项目中会展示javascript/html/css/bash/markdown (html支持需要引入xml)


//index.html

 <script src="https://cdn.bootcss.com/vue/2.5.13/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
  <script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js"></script>
  <script src="https://cdn.bootcss.com/moment.js/2.20.1/locale/zh-cn.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/languages/javascript.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/languages/bash.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/languages/xml.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/languages/css.min.js"></script>
  <script src="https://cdn.bootcss.com/highlight.js/9.12.0/languages/markdown.min.js"></script>

删除依赖
这些依赖以前是使用npm安装,现在需要在项目文件注释掉(或直接删除这些依赖),所有用到这些你需要替换的第三方依赖文件的代码都需要删除或注释


eg:
// import Vue from 'vue'
// import VueRouter from 'vue-router'

然后在webpack的配置文件里加入如下代码


  externals: {
    'vue': 'Vue',
    'vue-router': 'VueRouter',
    'vuex': 'Vuex',
    'axios': 'axios',
    'moment': 'moment',
    'highlight.js': 'highlight.js'
  }

注意后面的名称是改模块暴露出来的名称,具体不熟悉的可以到引入的js源码里查看。

开启gzip加速
打包时,可以将config/index.js文件的productionGzip设置为true
主要是webpackcompression-webpack-plugin模块的实现。

使用node服务器需要安装 compression模块


express实现
const compression = require('compression')
const express = require('express')
const app = express()
app.use(compression({ threshold: 9 }))

nginx实现


  //conf文件里
  server {
        listen       8088;
        server_name  localhost;
        location / {
            gzip on;
            gzip_min_length 1k;
            gzip_buffers 16 64k;
            gzip_http_version 1.1;
            gzip_comp_level 9;
            gzip_types text/plain text/javascript application/javascript image/jpeg image/gif image/png application/font-woff application/x-javascript text/css application/xml;
            gzip_vary on;
            root   /xxx/xxx/xxx;
            index index.html
        }
        }

构建项目,重启服务。
然后就享受页面秒开的算酸爽吧.

原文地址:https://segmentfault.com/a/1190000013239622

优质内容筛选与推荐>>
1、怎样成为搜索高手——选择适当的查询词
2、Android NDK开发之从环境搭建到Demo级十步流
3、[转]视觉系--Google概念掌上设备
4、switch实现一个两数的运算
5、一.js高级(6)-闭包-定时器-js中代码执行顺序


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号