Vue项目优化实践,通过CDN引入依赖项文件,减少打包vendor.js大小

在我们使用vue构建项目时,常有一个问题值得我们思考,我们该如何去减少我们打包出来的chunk大小?以下,是一个项目实例过程。

创建vue项目

npm init webpack vuepjt

在项目不进行任何配置时,直接build,让我们来看看打包出来的chunk大小

npm run build --report

Vue项目优化实践,通过CDN引入依赖项文件,减少打包vendor.js大小_第1张图片

咋一眼就发现vendor.js有120kb,让我们来看看为什么这个chunk这么大

Vue项目优化实践,通过CDN引入依赖项文件,减少打包vendor.js大小_第2张图片

大致分析一下,vendor.js这个chunk中vue,vue-router这两个库占用了90%以上的体积,vue占91kb,vue-router占27kb。于是我们如果尝试把vue和vue-router拆出来之后,chunk大小会怎样呢?

使用CDN加载资源文件

使用cdn引入vue和vue-router,这里有一些cdn地址,对于内部项目,建议使用内部cdn,避免出现未知异常。

bootstrap CDN:https://www.bootcdn.cn
Staticfile CDN:https://www.staticfile.org
jsDelivr CDN:https://www.jsdelivr.com
75 CDN:https://cdn.baomitu.com
UNPKG:https://unpkg.com
cdnjs:https://cdnjs.com

index.html引入vue.js vue-router.js




build/webpack.config.js在externals中配置外部的依赖项

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  externals: {
    'vue': 'Vue',
    'vue-router': 'VueRouter'
  },
 
}

去掉项目中原有的引入

src/main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
// import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

src/router/index.js

// import Vue from 'vue'
// import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(VueRouter)
export default new VueRouter({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

继续build项目,之后我们再来查看一下chunk的大小

Vue项目优化实践,通过CDN引入依赖项文件,减少打包vendor.js大小_第3张图片

此时,vendor.js只有1kb。

诸如此类,可以对项目中引入的其他三方依赖进行处理,以此减少我们chunk的大小,提升加载速度。

 

你可能感兴趣的:(vue,vue.js,javascript)