vue 优化CDN加速的方法示例

news/2024/7/10 1:59:53 标签: vue

代码敲完,项目上线,然后就要与优化相遇。


项目有抢购的性质content download 时间非常的长加载慢的很,至此开始前端优化之旅

项目根目录运行

npm install webpack-bundle-analyzer --save-dev

在build/webpack.dev.conf.js中引入

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
 plugins: [
 new BundleAnalyzerPlugin()
 ]

运行后显示可以看到几个大的js 下面是已经优化过后的截图
vuevue-router,vuex,axios,mint-ui,crypto-js

1.使用CDN资源

其作用是:当我们加载页面时,需要将我们所需要的一些依赖加载到当前会话中然后再开始执行,如果我们首屏,模块比较多是,需要等待的时间会比较长,而且。浏览器内存最多执行四十个进程,需要等到加载完前面的才能执行后面的代码,如果我们采用cdn的方式来引入一些第三方资源,就可以缓解我们服务器的压力,原理是将我们的压力分给其他服务器点。

使用cdn在index.html中引入

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <script src="//cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
 <script src="//cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
 <script src="//cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
 <script src="//cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
 <script src="https://cdn.bootcss.com/mint-ui/2.2.13/index.js"></script>
 <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
 <title></title>
</head>
<body>
 <div id="app"></div>
 <!-- built files will be auto injected -->
</body>
</html>

修改build/webpack.base.conf.js文件,externals外部扩展,通过这种方式引入依赖库,不需要webpack处理。

module.exports = {
 ...
 externals: {
 'vue': 'Vue', // 左侧vue是我们自己引入时候要用的,右侧是开发依赖库的主人定义的不能修改
 'vue-router': 'VueRouter',
 'vuex': 'Vuex',
 'axios': 'axios',
 'mint-ui': 'MINT',
 'crypto-js': 'CryptoJS'
 }
 ...
}

console.log(window) 打印出下图

网上查了资料有的引入有的还是会引入有的没有引入,拿mint-ui举例,查到的资料在main.js有下面的引入,但是注释掉之后还是可以正常使用mint-ui的组件,import VueRouter from ‘vue-router’ 也是可以注释掉使用的,感觉是因为window全局有了VueRouter,但是有个问题就是eslint会报警告,所以就没有注释掉。如果理解有误希望大家能指出我的错误

import MINT from 'mint-ui'
Vue.use(MINT)


main.js

import Vue from 'vue' // 没有注释掉是因为main.js其他地方用到了Vue,如果没有用到可以注释掉
import App from './App'
import router from './router'
import store from './store'

router/index.js

// import Vue from 'vue' // 注释掉
// Vue.use(VueRouter) // 注释掉
import VueRouter from 'vue-router' // 文件中引入的时候用我们自己定义的vue-router
const appRouter = {
....
}
export default new VueRouter(appRouter)

store/index.js

// import Vue from 'vue' // 注释掉
// Vue.use(Vuex) // 注释掉
import Vuex from 'vuex'
const store = new Vuex.Store({
 ....
})
export default store

CryptoJS用来加密,在使用的地方直接引入。axios同理

import CryptoJS from 'crypto-js'
.....

优化之前

优化之后

另外就是花点钱提高了下带宽o(╯□╰)o

为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,帮助大家在成为全栈工程师,乃至架构师的路上披荆斩棘。在这里给大家推荐一个前端全栈学习交流圈:866109386.欢迎大家进群交流讨论,学习交流,共同进步。

当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。

但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有有效资源还是很有必要的。

最后祝福所有遇到瓶疾且不知道怎么办的前端程序员们,祝福大家在往后的工作与面试中一切顺利。


http://www.niftyadmin.cn/n/1300943.html

相关文章

I/O - 同步,异步,阻塞,非阻塞

同步&#xff08;synchronous&#xff09; IO &#xff0c; 异步&#xff08;asynchronous&#xff09; IO&#xff0c; 阻塞&#xff08;blocking&#xff09; IO &#xff0c; 非阻塞&#xff08;non-blocking&#xff09;IO分别是什么&#xff0c;到底有什么区别…

Object操作符==在New Object时不能判断==null

文章转载自&#xff1a;https://docs.unity.cn/cn/current/ScriptReference/Object-operator_eq.html using UnityEngine;public class Example : MonoBehaviour {void Start(){GameObject go new GameObject();Debug.Log(go null); // falseObject obj new Object();Debug.…

理顺8个版本vue的区别(小结)

一共8个版本的vue 术语 完整版&#xff1a;同时包含编译器和运行时的版本。编译器&#xff1a;用来将模板字符串编译成为 JavaScript 渲染函数的代码。运行时&#xff1a;用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。 UMD&#xff1a;…

SOCKET与 线程 完成聊天室 非阻塞

我们拿最常用的send和recv两个函数来说吧,比如:你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话,这…

游戏编程模式-空间分区

文章转载自&#xff1a;https://www.cnblogs.com/xin-lover/p/12216053.html “将对象存储在根据位置组织的数据结构中来高效的定位它们。” 动机 游戏使我们能够探寻其它世界&#xff0c;但这些世界和我们的世界往往并无太大差异。其中的基本物理规则和确切性常常与我们的世…

手把手教你JavaScript-简单的页面输入控制

1.姓名只能是汉字 var nameCheck /^[\u4e00-\u9fa5]{2,21}$/; if(!nameCheck .test(name)){ alert("输入的姓名中含有非汉字字符!"); return false; }2.简单的身份证校验&#xff08;校验内容包括数字&#xff0c;位数&#xff0c;以及末尾的x,X&#xff09; var i…

C++权威网站

http://www.cplusplus.com/ http://en.cppreference.com/w/ https://gcc.gnu.org/ https://isocpp.org/ VC知识库 http://www.vckbase.com/ 淘宝项目相关 http://code.taobao.org/

手把手教你用promise封装ajax

用promise封装ajax <pre style"-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153…