前端性能优化三十七:花裤衩模板路由懒加载

2023-12-25 20:52

本文主要是介绍前端性能优化三十七:花裤衩模板路由懒加载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(1). 目的:

1. 让包不需要一次把所有的页面的加载进来,只加载当前页面的路由组件即可.

(2). 3种引入方式:

export default new Router({routes: [{path: '/',name: "index",// 1. 普通引用component: index// 2. 路由懒加载component: resolve => require(['@/views/index.vue'], resolve)// 3. 路由懒加载,并且命名chunk名字,结合webpack的import使用component: () => import(/* webpackChunkName: 'index' */ '@/views/index.vue') }]
})

(3). 移除prefetch、Preload:

. prefetch、Preload的作用:a. 当首屏加载时,会一次性下载完所有的路由文件,导致首屏请求内容很多,首屏加载变慢.b. 当访问路由时再去加载该模块,把静态引入方式改为动态引入方式.. 在vue cli3中,需要手动移除这两个.. 举例:module.exports = {chainWebpack: config => {// 移除 prefetch 插件config.plugins.delete('prefetch')// 移除 preload 插件config.plugins.delete('preload');}}

scss文件引入

我们通常会把scss文件抽离出来,一些共用样式,主题等,然后会在每个需要的组件中引入会显得繁琐,我们可以借助scss-loader进行预处理

例如我们有 resetTable.scss 文件,可以在vue.config.js中引入

module.exports = {chainWebpack: config => {config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)config.plugin('html').tap(args => {if (process.env.NODE_ENV === 'production') {args[0].cdn = cdn}return args})// 移除 prefetch 插件config.plugins.delete('prefetch')// 移除 preload 插件config.plugins.delete('preload');},configureWebpack: config => {if (process.env.NODE_ENV === 'production') {return {externals: externals,plugins: [//gzip压缩new CompressionPlugin({test: /\.js∣¨E92E.html|\.html∣¨E92E.html|.\css/, //匹配文件名threshold: 10240, //对超过10k的数据压缩deleteOriginalAssets: false //不删除源文件})],performance: {hints: false}};}},// scss设置css: {loaderOptions: {sass: {//我是放在 assets/commcss 目录下data: '@import "@assets/commcss/resetTable.scss";'}},},
}

使用uglifyjs-webpack-plugin插件代替webpack自带UglifyJsPlugin插件
两个插件都不支持es6压缩,所以使用此插件前需要用工具(如babel-loader)转换es6代码

问题描述:项目中使用iview时,导致使用UglifyJsPlugin压缩报错
因为iview某插件中包含es6语法。然而两个插件都不支持es6压缩
解决方法如下:

修改webpack配置文件,使用babel-loader转换一下iview插件中的es6语法

module.exports = {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},
...module: {loaders: [{ test: /iview.src.*?js$/, loader: 'babel' },{ test: /\.js$/, loader: 'babel', exclude: /node_modules/ }],rules: [...{test: /\.js$/,loader: 'babel-loader',// resolve('/node_modules/iview/src'),resolve('/node_modules/iview/packages')解决iview打包时UglifyJs报错include: [resolve('src'), resolve('test'), resolve('/node_modules/iview/src'),resolve('/node_modules/iview/packages')]}...]}
}
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
...new UglifyJsPlugin({// 使用外部引入的新版本的js压缩工具parallel: true,uglifyOptions: {ie8: false, // 启用IE8支持ecma: 6, // 支持的ECMAScript的版本(5,6,7或8)。影响parse,compress&& output选项warnings: false, // 显示警告mangle: true, // debug falseoutput: {comments: false,beautify: false, // debug true},compress: {// 在UglifyJs删除没有用到的代码时不输出警告warnings: false,// 删除所有的 `console` 语句// 还可以兼容ie浏览器drop_console: true,// 内嵌定义了但是只用到一次的变量collapse_vars: true,// 提取出出现多次但是没有定义成变量去引用的静态值reduce_vars: true,}}}),// new webpack.optimize.UglifyJsPlugin({//   compress: {//     warnings: false//   },//   sourceMap: true// }),```

这篇关于前端性能优化三十七:花裤衩模板路由懒加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536908

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�