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

(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.mzph.cn/news/577994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iMazing2024免费版iOS移动设备管理软件

以自己的方式管理iPhone,让备受信赖的软件为您传输和保存音乐、消息、文件和数据。安全备份任何 iPhone、iPad 或 iPod touch。iMazing 功能强大、易于使用,称得上是 Mac 和 PC 上最好的 iOS 设备管理器。 正在为iTunes繁琐的操作发愁?设备数…

leetcode——打家劫舍问题汇总

本章汇总一下leetcode中的打家劫舍问题,使用经典动态规划算法求解。 1、梦开始的地方——打家劫舍(★) 本题关键点就是不能在相邻房屋偷东西。 采用常规动态规划做法: 根据题意设定dp数组,dp[i]的含义为&#xff1a…

Typora Mac激活

首先去官网选择mac版本下载安装 typora下载 然后打开typora包内容找到 /Applications/Typora.app/Contents/Resources/TypeMark/page-dist 找到/static/js/Licen..如下图 编辑器打开上面文件夹 输入 hasActivated"true"e.hasActivated 进行搜索 将它改为 hasA…

微机原理4练习题答案

一、单项选择题(本大题共 15小题,每小题 3 分,共45 分。在每小题给出的四个备选项中,选出一个正确的答案。 8086/8088系统中,堆栈以(C)为单位进行操作。A. 半字节 B. 字节 C. 字 D. 双字 2、下列指令中不影响进位标志CF的指令是©。 A. SUB AX, BX B. SHL AL, 1…

Word使用技巧【开题报告】

1、修改目录:选中目录,点击更新域。 2、更改或删除单个页面上的页眉或页脚 3、借助其他软件在Word导入参考文献 利用zetero导入文献:安装zetero 解决参考文献插入问题 在Word中插入文献操作步骤 英文文献出现“等”,如何解决 Zote…

人工智能:网络犯罪分子的驱动力

随着 2024 年的临近,是时候展望今年的网络安全状况了。由于网络犯罪日益复杂,预计到 2025 年,全球网络安全成本将增至 10.5 万亿美元。 人工智能的使用不断发展,网络犯罪分子变得越来越有创造力 我们注意到,联邦调查…

Dash中的callback的使用 多input 6

代码说明 import plotly.express as pxmport plotly.express as px用于导入plotly.express模块并给它起一个别名px。这样在后续的代码中,你可以使用px来代替plotly.express,使代码更加简洁。 plotly.express是Plotly的一个子模块,用于快速创…

Optimization(优化)

文章目录 ATSS:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training(2020) ATSS:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training(2020…

python 1200例——【9】斐波那契数列

文章目录 定义求解方法1. 递归方法2. 循环方法3. 动态规划方法4. 矩阵方法总结:定义 斐波那契数列(Fibonacci sequence)是一个在自然世界中经常出现的数学序列。它是由0和1开始,然后的每个数字都是前两个数字的和。因此,斐波那契数列的前几个数字是:0, 1, 1, 2, 3, 5, 8…

【linux c多线程】线程的创建,线程信息的获取,获取线程返回值

线程创建 ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对…

路由器常见故障分析及处理方法!

对当前的大多数网络来说,无论是实现网络互连还是访问Internet,路由器是不可或缺的。 由于路由器的重要性,对它的管理就成了维护人员的日常工作中重要的一部分,而路由器的故障分析和排除也是令许多维护人员极为困扰的问题之一。 路…

jenkins Job华为云EIP变更带宽

引言: 在数字化时代,云服务资源的弹性管理是企业降低运营成本、提高效率的关键手段。通过弹性公网IP(EIP)服务,企业可以实现按需计费,优化网络支出。然而,根据业务流量的不同阶段调整计费模式,…

批量归一化

目录 一、BN层介绍 1、深层神经网络存在的问题 2、批量归一化的解决方案 3、BN层作用位置 4、BN层在做什么 5、总结 二、批量归一化从零实现 1、实现批量归一化操作 2、创建BN层 3、对LeNet加入批量归一化 4、开始训练 三、简明实现 1、对LeNet加入批量归一化 2…

Latex如何转成Word

将 LaTeX 文档转换成 Word 文档有几种方法,每种方法都有其优缺点。下面是一些常用的方法: 1. Pandoc Pandoc 是一个文档转换工具,可以将 LaTeX 转换成多种格式,包括 Word。 安装 Pandoc。使用以下命令转换 LaTeX 文件到 Word&a…

【性能优化】EFCore性能优化(一)-IEnumerable和IQueryable

阅读本文你的收获 了解EF Core在使用上应该要注意的地方学习EF Core的优化技术,如禁用跟踪、IQueryable接口等 一、问题描述 Entity Framework Core(以下简称EF)是微软自家出品的大型O/RM框架,使用EF Core,我们可以在…

【SD】IP-Adapter 进阶 - 垫图 【画风重绘-必看】

目录 关于SD1.5的画风迁移 修改动作-方法一:提示词 修改动作-方法二:openpose 关于SD1.5的画风迁移 1.5测试模型:flat2DAnimerge_v30_2.safetensors [b2c93e7a89] 测试图: 文生图:best quality,masterpiece, co…

20231225在WIN10下使用SSH连接Ubuntu20.04.6

20231225在WIN10下使用SSH连接Ubuntu20.04.6 2023/12/25 23:03 https://jingyan.baidu.com/article/5552ef479e1856108ffbc9e3.html Win10怎么开启SSH功能 Win10怎么开启SSH功能,下面就一起来看看吧! 工具/原料 华硕天选4 Windows10 方法/步骤 点击左下角的开始菜单,打开Wind…

Redis过期删除策略和内存淘汰策略

1、设置Redis键过期时间 Redis提供了四个命令来设置过期时间&#xff08;生存时间&#xff09;。 EXPIRE <key> <ttl> &#xff1a;表示将键 key 的生存时间设置为 ttl 秒。 PEXPIRE <key> <ttl> &#xff1a;表示将键 key 的生存时间设置为 ttl 毫秒。…

flutter怎么对ReorderableListView中的用于排序的控制手柄进行显示或隐藏

我在使用ReorderableListView创建可排序列表的时候&#xff0c;需要在编辑的时候才显示右侧的控制排序的手柄。研究了半天&#xff0c;配合搜索引擎&#xff0c;才找到正确的方案。 答案很简单&#xff0c;就是在它的属性当中有一个叫做&#xff1a;buildDefaultDragHandles的…

SICP : The Elements of Programming

好的计算机编程语言应具备的三个特性 基础单元表达式&#xff0c;计算机编程语言最最最基础单元&#xff0c;理应具备的表达式组合的能力&#xff0c;能够通过基础单元表达式组合成更复杂的元素抽象的能力&#xff0c;能通过复杂的元素抽象成更高层的单元 基础单元表达式 加 …