前端性能优化之——CDN优化加载

问题:在首开体验中,会觉得特别慢

分析:原因很多,其中一个原因是首开时需要加载很多的js和css文件,这是因为在Vue项目中,引入到工程中的所有js、css文件,我们编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首开的体验。

解决方法:将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来(既外部的库文件,可以使用cdn资源,或者别的服务器资源等),达到加速首开的目的。

下面,以引入vue、vuex、vue-router为例,说明处理流程

在index.html中,添加CDN资源

<body> <div id="app"></div> <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.1.5/vue.global.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.10/vue-router.global.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vuex/4.0.2/vuex.global.min.js"></script> </body> 

vue3配置

我们使用的是vue3
在vue.config.js定义chainWebpack.externals

module.exports = { chainWebpack: config => { config.externals({ 'vue': 'Vue', 'vue-router': 'VueRouter', 'vuex':'Vuex' }) }, } 

vue2配置

如果我们使用的是vue2的话
在bulid/webpack.base.conf.js文件中,增加externals,将引用的外部模块导入,如下

module.exports = { entry: { app: './src/main.js' }, externals:{ 'vue': 'Vue', 'vue-router': 'VueRouter', 'vuex':'Vuex' } 

去掉import,如:

去掉Vue.use(XXX),如:

关于vue3.0以上的cdn分类就很细了

Vue的各种版本介绍:

  • cjs(两个版本都是完整版,包含编译器)

vue.cjs.js
vue.cjs.prod.js(开发版,代码进行了压缩)

  • global(这四个版本都可以在浏览器中直接通过scripts标签导入,导入之后会增加一个全局的Vue对象)

vue.global.js(完整版,包含编译器和运行时)
vue.global.prod.js(完整版,包含编译器和运行时,这是开发版本,代码进行了压缩)
vue.runtime.global.js
vue.runtime.global.prod.js

  • browser(四个版本都包含esm,浏览器的原生模块化方式,可以直接通过

    vue.esm-browser.js
    vue.esm-browser.prod.js
    vue.runtime.esm-browser.js
    vue.runtime.esm-browser.prod.js

    • bundler(这两个版本没有打包所有的代码,只会打包使用的代码,需要配合打包工具来使用,会让Vue体积更小)

    vue.esm-bundler.js
    bue.runtime.esm-bundler.js

    拓展2:element-ui 不生效

    当我们使用cdn引入element的时候,发现不生效
    原因1: 原使用.babelrc按需引入
    只需要去除按需引入即可

    { "presets": [ [ "@babel/preset-env", { "modules": false } ] ]           } 

    原因2:将vue也用CDN引入的方式,因为element-ui依赖vue,因此vue只能通过import引入

    相关文章:

    前端性能优化之——浏览器http请求并发
    .

    在这里插入图片描述

原文链接:https://blog.csdn.net/weixin_43236062/article/details/121671152?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918321816782388050817%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918321816782388050817&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-27-121671152-null-null.nonecase&utm_term=cdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/344

(0)
上一篇 2022年8月5日
下一篇 2022年8月5日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml