vue项目上线前优化(路由懒加载的使用,外部CDN的使用)
引
当使用vue做完项目后,接下来当然是要进行线上部署了。但是在上线之前还是可以做很多方面优化的,可以让项目上线后的体验更加哦。
若是使用了vue-cli的话,可以从面板界面直观的看到各项数据,控制台也会输出些提示信息,通过这些信息就能更好的优化项目了。

清除控制台的输出
在项目开发的时候,经常会在控制台输出些信息,方便进行调试,但是这些console.log()在上线后往往都是不需要的。如果一个个手动删掉,不仅麻烦,而且后期还要调试的时候可能也会有些不便。使用transform-remove-console插件就能比较好的解决这个问题。
- 安装插件
npm install babel-plugin-transform-remove-console --save-dev
- 在
babel.config.js中进行配置
{
"plugins": ["transform-remove-console"]
}
- 如果仅是要在开发环境中使用可以通过,判断env进行添加
// 发布模式需要用到的插件数组
const prodPlugins = []
if (process.env.NODE_ENV === 'production') {
prodPlugins.push('transform-remove-console')
}
module.exports = {
presets: ['@vue/app'],
plugins: [
[
'component',
{
libraryName: 'element-ui',
styleLibraryName: 'theme-chalk'
}
],
// 发布产品时候的插件数组
...prodPlugins
]
}
路由懒加载的使用
官方说明:路由懒加载
- 使用了Babel,则需要添加
syntax-dynamic-import插件才能正常解析。可在面板中添加依赖或:
npm install --save-dev @babel/plugin-syntax-dynamic-import
- 在
babel.config.js中plugin节点添加:
"@babel/plugin-syntax-dynamic-import"
- 使用动态
import,也可以分组
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-two" */ './Baz.vue')
外部CDN的使用
在项目运行后,可以看到有些js文件非常的大,这是因为默认情况下,import导入的包,最后被webpack打包合并到一个文件了。太大的文件非常的不利于加载。这时可以配置webpack,常用的包使用外部CDN进行加载。
在vue项目中默认隐藏了对webpack的配置,要时自定义的配置需要手动的根目录创建vue.config.js进行配置。
webpack中可以通过externals节点对需要外部加载的包进行配置,在节点中的三方依赖包都不会被打包。
常用的CDN源:bootcdn staticfileCDN jsdelivr 又拍云免费JS库
当然使用这些公共的CDN更加方便,当然它们也是有故障的可能,并且也发送过故障。
vue.config.js
module.exports = {
chainWebpack: config => {
// 通过process.env.NODE_ENV对当前的环境进行判断
// 发布模式
config.when(process.env.NODE_ENV == 'production', config => {
config.entry('app').clear().add('./src/main-prod.js')
// externals指定要排除包
config.set('externals', {
vue: 'Vue',
'vue-router': 'VueRouter',
axios: 'axios',
lodash: '_',
})
// 是plugin在public/index.html中添加变量
// 用以判断运行的环境是否是发布
config.plugin('html').tap(args => {
args[0].isDev = false
return args
})
})
}
public/index.html中添加要导入的CDN
<% if(!htmlWebpackPlugin.options.isDev){ %>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
<% } %>
element-ui的处理
不用在externals中指定,直接在main.js中删掉导入import,然后在index.html中添加CDN。
服务端开启Gzip压缩
这里的话就要在服务器端进行配置了,比如:
在nginx中开启,要在nginx.conf中有gzip on,当然也可进行配置:
gzip on; 开启压缩
gzip_min_length 1k; 设置压缩最小单位,小于不压缩
#gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
gzip_comp_level 4; 压缩比
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 压缩内容
vue项目上线前优化(路由懒加载的使用,外部CDN的使用)的更多相关文章
- 「Vue.js」Vue-Router + Webpack 路由懒加载实现
一.前言 当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了.结合 Vue ...
- Vue常规后台系统,路由懒加载实现基于菜单数据并解耦
路由依赖菜单 场景:文件名与路由组件名完全一致(随便大小写均可) 菜单使用一套,路由又存在一套,这样就很不舒服,于是做了如下处理: 尝试不用懒加载发现有难度,使用懒加载就很轻松了 data.js ex ...
- vue项目性能优化(路由懒加载、gzip加速、cdn加速)
前端工程性能优化一说意义深远悠长,本章主要介绍除了一些基础优化外如何实行路由懒加载.Gzip加速.CDN加速,让网页飞的快一些. 基础优化 老生常谈的一些: 不要在模板中写复杂的表达式 慎用watch ...
- vue-cli3项目首页加载速度优化(cdn加速,路由懒加载,gzip压缩)
今天打算上线vue的单页面项目,上线后,首页加载速度巨慢! 原因是项目上线后,网速不够快,加载js,css等资源很慢, 打开打包好的文件发现chunk-vendors.xxxxxxx.js的包很大,达 ...
- vue-router路由懒加载(解决vue项目首次加载慢)
懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...
- vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式
不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...
- vue-cli 项目实现路由懒加载
在vue 单页应用中,如果路由不实现懒加载,那么打包出来的文件将会非常大,加载也会非常慢.vue-router 官网也有相应的介绍,但是具体怎么去实现还是讲的比较模糊的,下面将一步步讲解配置路由懒加载 ...
- vue进阶:vue-router之导航守卫、路由元信息、路由懒加载
1.导航被触发 2.在失活的组件里调用离开守卫:beforeRouteLeave —— 组件内守卫(离开组件). 3.调用全局的beforeEach守卫 —— 全局守卫(进入组件). 4.在重用组件里 ...
- Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载
Vue Router路由配置中的component里面配置即可 1 // 路由懒加载的方式加载组件 2 3 component: () => import('@/views/Detail'), ...
- 【巷子】---vue路由懒加载---【vue】
一.懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载, 二.为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要 ...
随机推荐
- 记录--post为什么会发送两次请求?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在前段时间的一次面试中,被问到了一个如标题这样的问题.要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的. 那么接下来这篇文章我们就 ...
- 记录--form 表单恢复初始数据
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 form 表单恢复初始数据 在现代的 Web 开发中,表单是不可或缺的组件之一.用户可以通过表单输入和提交数据,而开发者则需要对这些数据进 ...
- .NET分布式Orleans - 2 - Grain的通信原理与定义
Grain 是 Orleans 框架中的基本单元,代表了应用程序中的一个实体或者一个计算单元. 每个Silo都是一个独立的进程,Silo负责加载.管理和执行Grain实例,并处理来自客户端的请求以及与 ...
- [HTML、CSS]知识点
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130176402 出自[进步* ...
- 解密prompt系列25. RLHF改良方案之样本标注:RLAIF & SALMON
上一章我们主要唠了RLHF训练相关的方案,这一章我们主要针对RLHF的样本构建阶段,引入机器标注来降低人工标注的成本.主要介绍两个方案:RLAIF,和IBM的SALMON. RLAIF RLAIF: ...
- mysql统计所有分类下的数量,没有的也要展示
要求统计所有分类下的数量,如果分类下没有对应的数据也要展示.这种问题在日常的开发中很常见,每次写每次忘,所以在此记录下. 这种统计往往不能直接group by,因为有些类别可能没有对应的数据 这里有两 ...
- Windows和Linux系统下的Conda环境迁移
Motivation 大家在学习Python的过程中,可能经常会遇到下面两种情况: 同一份代码,别人配置conda环境可以跑通,但你配置了N天,还不知道哪一步出现了差错,仍然跑不通代码,conda ...
- #双指针#洛谷 7405 [JOI 2021 Final] 雪玉
题目传送门 分析 无论怎样刮风,雪球的相对位置不会改变, 实际上每一个空段都由左右两个雪球瓜分(边界空段除外), 那么按照空段长度从小到大排序,用双指针找到恰好第一个未瓜分的位置 代码 #includ ...
- ChatGPT商用网站源码+支持ai绘画(Midjourney)+GPT4.0+GPT3.5key绘画+Prompt角色+实时语音识别输入+后台一键版本更新!
ChatGPT商用网站源码+支持ai绘画(Midjourney)+GPT4.0+GPT3.5key绘画+Prompt角色+实时语音识别输入+后台一键版本更新! 1.网站系统源码介绍: 程序已支持Cha ...
- OpenHarmony 4.1 Release版本正式发布,邀您体验
春风轻拂的4月,OpenAtom OpenHarmony(以下简称"OpenHarmony")4.1 Release版本如期而至,开发套件同步升级到API 11 Release. ...