当使用vue做完项目后,接下来当然是要进行线上部署了。但是在上线之前还是可以做很多方面优化的,可以让项目上线后的体验更加哦。

若是使用了vue-cli的话,可以从面板界面直观的看到各项数据,控制台也会输出些提示信息,通过这些信息就能更好的优化项目了。

清除控制台的输出

在项目开发的时候,经常会在控制台输出些信息,方便进行调试,但是这些console.log()在上线后往往都是不需要的。如果一个个手动删掉,不仅麻烦,而且后期还要调试的时候可能也会有些不便。使用transform-remove-console插件就能比较好的解决这个问题。

  1. 安装插件
npm install babel-plugin-transform-remove-console --save-dev
  1. babel.config.js中进行配置
{
"plugins": ["transform-remove-console"]
}
  1. 如果仅是要在开发环境中使用可以通过,判断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
]
}

路由懒加载的使用

官方说明:路由懒加载

  1. 使用了Babel,则需要添加 syntax-dynamic-import 插件才能正常解析。可在面板中添加依赖或:
npm install --save-dev @babel/plugin-syntax-dynamic-import
  1. babel.config.js中plugin节点添加:
"@babel/plugin-syntax-dynamic-import"
  1. 使用动态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.config.js 配置参考

vue项目上线前优化(路由懒加载的使用,外部CDN的使用)的更多相关文章

  1. 「Vue.js」Vue-Router + Webpack 路由懒加载实现

    一.前言 当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了.结合 Vue ...

  2. Vue常规后台系统,路由懒加载实现基于菜单数据并解耦

    路由依赖菜单 场景:文件名与路由组件名完全一致(随便大小写均可) 菜单使用一套,路由又存在一套,这样就很不舒服,于是做了如下处理: 尝试不用懒加载发现有难度,使用懒加载就很轻松了 data.js ex ...

  3. vue项目性能优化(路由懒加载、gzip加速、cdn加速)

    前端工程性能优化一说意义深远悠长,本章主要介绍除了一些基础优化外如何实行路由懒加载.Gzip加速.CDN加速,让网页飞的快一些. 基础优化 老生常谈的一些: 不要在模板中写复杂的表达式 慎用watch ...

  4. vue-cli3项目首页加载速度优化(cdn加速,路由懒加载,gzip压缩)

    今天打算上线vue的单页面项目,上线后,首页加载速度巨慢! 原因是项目上线后,网速不够快,加载js,css等资源很慢, 打开打包好的文件发现chunk-vendors.xxxxxxx.js的包很大,达 ...

  5. vue-router路由懒加载(解决vue项目首次加载慢)

    懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...

  6. vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式

    不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...

  7. vue-cli 项目实现路由懒加载

    在vue 单页应用中,如果路由不实现懒加载,那么打包出来的文件将会非常大,加载也会非常慢.vue-router 官网也有相应的介绍,但是具体怎么去实现还是讲的比较模糊的,下面将一步步讲解配置路由懒加载 ...

  8. vue进阶:vue-router之导航守卫、路由元信息、路由懒加载

    1.导航被触发 2.在失活的组件里调用离开守卫:beforeRouteLeave —— 组件内守卫(离开组件). 3.调用全局的beforeEach守卫 —— 全局守卫(进入组件). 4.在重用组件里 ...

  9. Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载

    Vue Router路由配置中的component里面配置即可 1 // 路由懒加载的方式加载组件 2 3 component: () => import('@/views/Detail'), ...

  10. 【巷子】---vue路由懒加载---【vue】

    一.懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载,   二.为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要 ...

随机推荐

  1. 记录--静态网站 H5 跳小程序,以及踩坑

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 我司有智慧功成家APP和对应的小程序,现在已经实现APP分享到微信,微信点击分享链接直接进入小程序. 目前有一个问题就是我们APP在 ...

  2. dotNet符号文件(pdb),符号包(snupkg)和SourceLink

    前言 本文的主题是 Visual Studio 调试 NuGet 包,以及符号包的概念,如何去发布一个 NuGet 包,让我们的 NuGet 包支持 SouceLink,这些都是我们开发中比较容易忽视 ...

  3. proteus的五状态显示控制器

    proteus的五状态显示控制器 1.实验原理 使用的核心器件还是4028,BCD译码器.将输入的四个信号接入输入端,输出信号选取0.1.2.4.8这五个输出状态驱动led显示.发光LED需要加入保护 ...

  4. RepPointsV2:更多的监督任务,更强的性能 | NIPS 2020

    RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习.虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验 ...

  5. 美团一面:项目中使用过Redis吗?我说用Redis做缓存。他对我哦了一声

    引言 Redis,作为一种开源的.基于内存且支持持久化的键值存储系统,以其卓越的性能.丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎.Redis不仅提供了一种简单直观的方式来存储和检索数据,更因 ...

  6. 【已解决】Windows环境下redis启动失败

    在redis安装目录下打开cmd窗口: 依次输入: redis-cli.exe shutdown exit redis-server.exe redis.windows.conf ps:启动失败可能是 ...

  7. vue3中的样式为什么加上scoped不生效

    <style>标签添加scoped属性时,Vue会自动为该组件内的所有元素添加一个独特的数据属性,例如data-v-f3f3eg9.同时,它也会修改你的CSS选择器,使得它们只匹配带有这个 ...

  8. Jetty使用入门

    社区当前推荐开发者使用Jetty 12.X版本. 依据End of Community Support for Jetty 9.x - June 2022,社区对Jetty 9.x的支持,已在2022 ...

  9. OpenHarmony创新赛 | 您有一份创新激励奖待领取 请查收!

      2023开源和信息消费大赛 开放原子开源大赛OpenHarmony创新赛 (以下简称"OpenHarmony创新赛") 正如火如荼的进行当中 赛程也即将进入到提交作品的关键阶段 ...

  10. 【福利活动】深度体验OpenHarmony对接华为云IoT

      本文主要介绍基于OpenHarmony 3.0来接入IoTDA,以BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华为云物联网平台的简单流程.文末为 ...