赞
踩
缓存常见的组件(tab页、导航栏),避免在切换路由时重复渲染相同的组件,提高性能和用户体验
未出现在可视区域内的图片先不加载,等滚动到可视范围再加载,实现方法主要有以下三种:
IntersectionObserver专门来检测某个元素是否出现在可视窗口,出现后就设置src,再取消监听。可以将逻辑封装成可重用的指令,在懒加载的图片元素上使用该指令即可
移动端可以直接在img标签添加loading=“lazy”属性,浏览器自动处理图片的懒加载
vue中可以安装插件vue-lazyload,通过v-lazy写到对应的元素实现
<img v-lazy="img.src" :key="img.src" >
IntersectionObserver(浏览器提供的API)实现图片懒加载原理:观察图片与视窗的交叉情况,从而判断是否出现在视窗中。实现图片懒加载步骤大概:
<!-- HTML --> <img class="lazy-load" data-src="lazy-image.jpg" alt="Lazy-loaded image"> <script> // JavaScript // 创建 IntersectionObserver 对象 const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { // 判断目标元素是否进入视窗内 const lazyImage = entry.target; lazyImage.src = lazyImage.dataset.src; // 将真实图片地址赋给src属性 observer.unobserve(lazyImage); // 停止观察该目标元素 } }); }); // 获取所有带有 lazy-load 类的图片元素 const lazyImages = document.querySelectorAll('.lazy-load'); // 遍历所有图片元素,开始观察 lazyImages.forEach(image => { observer.observe(image); }); </script>
可以在webpack.base.conf.js中url-loader设置limit大小来处理图片,小于limit的图片转换成base64格式
将图片转成base64格式的原因:
对于一些较大的图片可以用image-webpack-loader压缩,具体配置如下:
module.exports = { module: { rules: [ { test: /\.(png|jpg|gif)$/, use: [ { loader: 'url-loader', options: { limit: 8192, // 图片小于8KB时转换为base64 name: '[name].[ext]', outputPath: 'images/' // 输出到指定目录 } }, { loader: 'image-webpack-loader', options: { mozjpeg: { progressive: true, quality: 65 }, optipng: { enabled: false, }, pngquant: { quality: [0.65, 0.90], speed: 4 }, gifsicle: { interlaced: false, }, webp: { quality: 75 } } } ] } ] } };
针对多个小图标可以利用雪碧图技术,将其合并成一张大图,减少HTTP请求次数
路由被访问才加载对应的组件,提高首屏显示速度
const Foo = () => import('./Foo.vue')
用babel-plugin-component只引入需要的组件,减小项目体积。安装包导入依赖即可,在main.js按需引入组件
安装分析工具webpack-bundle-analyzer,会生成可视化的文件链路图,根据需求做调整。
用CommonsChunkPlugin(webpack内置插件)去提取多个chunk的公共部分。
babel在每个输出文件中内嵌依赖的辅助函数代码,不让这些代码重复出现,可以用babel-plugin-transform-runtime插件,减小babel编译出来的代码大小。
"plugins": [
"transform-runtime"
]
使用OptimizeCssnanoPlugin插件来压缩和去重css样式文件,开启optimization.minimize来压缩js代码。
tree shaking只能处理ES6模块,消除未使用过的代码,减少文件大小。
使用生产模式,在config.js设置mode: ‘production’来启用生产模式,用usedExports: true来启用tree shaking
前后端都可以压缩,不管在nginx还是webpack压缩,在nginx都要开启gzip压缩,要不然浏览器加载的还是未压缩的资源。
识别gzip压缩是否开启,只需要看响应头部有没有Content-Encoding:gzip这个属性,有就表明开启了。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
最全的Linux教程,Linux从入门到精通
======================
linux从入门到精通(第2版)
Linux系统移植
Linux驱动开发入门与实战
LINUX 系统移植 第2版
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。