美文网首页
vue项目中使用CDN引入大幅减小打包后体积

vue项目中使用CDN引入大幅减小打包后体积

作者: 忘了呼吸的那只猫 | 来源:发表于2022-11-08 17:57 被阅读0次

CDN(内容分发网络)指请求资源的方式,即通过script头去请求对应的脚本资源的一种方式,项目里配置之后不需要通过npm包管理工具去下载配置的包。

目的:将引用的外部jscss文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首页展示效果。
首先创建一个引入element-ui的vue项目,对比两种方式打包后的大小

  • 未配置cnd之前vendors.js文件大约是800k

  • 配置之后:vendors.js文件大约是80k

  • 方法如下:

  1. vue.config.js进行配置
let externals = {}
let cdn = { css: [], js: [] }
const isProduction = process.env.NODE_ENV === 'production' // 判断是否是生产环境
if (isProduction) {
  externals = {
        // vue: 'Vue',
        'element-ui': 'ELEMENT'
  }
  cdn = {
    css: [
        'https://unpkg.com/element-ui@2.13.2/lib/theme-chalk/index.css' // element-ui css 样式表
    ],
    js: [
         'https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.min.js',
        'https://unpkg.com/element-ui@2.13.2/lib/index.js' // element-ui js
    ]
  }
}
module.exports = {
    publicPath: './',
    outputDir: 'dist',
    assetsDir: 'static',
    productionSourceMap: false,
    devServer: {
        port: 8080,
        // 开启服务器后自动打开浏览器
        open: true,
        overlay: {
          warnings: false,
          errors: true
        }
    },
    configureWebpack: {
      // 在webpack的name字段中提供应用程序的标题,
      // 它可以在index.html中访问,以注入正确的标题。
        name: "test name",
        externals:  externals,
        resolve: {
          alias: {
            '@': resolve('src')
          }
        }
    },
    chainWebpack(config) {
        // 提高第一屏的速度,建议打开预加载
        config.plugin('preload').tap(() => [
          {
            rel: 'preload',
            fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
            include: 'initial'
          }
        ])
        config.plugin('html').tap(args => {
            args[0].cdn = cdn // 配置cdn给插件
            return args
        })
    }
}
  • 2.在public/index.html文件配置
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <!-- 引入样式 -->
    <% for(var css of htmlWebpackPlugin.options.cdn.css) { %>
        <link rel="stylesheet" href="<%=css%>">
    <% } %>
    <!-- 引入JS -->
    <% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
        <script src="<%=js%>"></script>
    <% } %>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

增加引入样式和引入js两段即可

由于是多个任务异步进行加载,即使不使用CDN,服务器有条件的也可以将静态文件部署到自己服务器,首页加载速度也是能够有很明显的提升

相关文章

  • vue项目中使用CDN引入大幅减小打包后体积

    CDN(内容分发网络)指请求资源的方式,即通过script头去请求对应的脚本资源的一种方式,项目里配置之后不需要通...

  • webpack打包优化之路

    最近使用vue-cli和vux做的项目,打包后文件体积过大,300k开始进行优化。 优化1:使用CDN资源,减小服...

  • Vue/cli项目使用CDN进行优化

    我们经常会遇到项目打包后体积过大的问题,这时我们可以将Vue及相关框架拆分出来,使用CDN的形式引入,我们这里以V...

  • vue-cli打包vue、vue-router引入外部cdn

    webpack打包,app.js、vendor.js文件较大,考虑使用cdn减小打包体积 折腾了半天,发现很容易!...

  • vue3.0开发总结-填坑

    1.vue3.0配置第三方插件不打包 配置第三方插件不打包采用cdn引入是比较常见的减小包体积的办法,因为第三方插...

  • Vue 基础(1)

    学习测试环境可通过CDN地址引入Vue(项目开发和线上环境一般使用vue-cli、webpack打包) 可使用构造...

  • vue项目优化

    vue 项目优化 项目打包体积优化 通常vue项目通过webpack打包后,会出现vendor包的体积过大的情况,...

  • 优化Vue项目的文件大小

      在使用Vue搭建项目时,经常由于引入的库太多,导致打包后的文件体积非常大,特别是vendor.js。这就造成页...

  • vue使用cdn引入vue和element-ui

    #vue使用cdn引入vue和element-ui # element-ui 关于使用cdn引入方式报错 Refe...

  • Vue 项目首页优化

    一. 使用 CDN 加速 index.html 页面引入 cdn script 项目根目录下的 vue.confi...

网友评论

      本文标题:vue项目中使用CDN引入大幅减小打包后体积

      本文链接:https://www.haomeiwen.com/subject/lwowtdtx.html