IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 【JavaScript性能日记】script放在哪里性能最好?Day01 -> 正文阅读

[JavaScript知识库]【JavaScript性能日记】script放在哪里性能最好?Day01

本系列来源于笔者阅读《高性能JavaScript》一书的总结心得,以及笔者的看法,如果不正确的地方欢迎指出~

在开始讲之前先来一波灵魂提问,我们带着问题去学习这样才能收获满满呀~

  1. <script>标签的加载会给浏览器带来哪些影响?
  2. 浏览器对此做出了什么优化?为什么它仍然是一个问题?
  3. 怎么样放置&let;script>标签才是最优的方式位置?

script标签的加载

script执行时会发生什么?

script标签每次加载时都会霸道的导致整个浏览器的所有下载和渲染都停下来,因为script脚本的执行很有可能会影响DOM,所以浏览器为了保险只能停下来。

这种情况会给我们带来什么问题?

  1. script脚本执行时用户操作和页面渲染等都会被停下来,如果执行时间过长就会导致延迟的效果,

那么我们现在知道了script加载会导致整个页面的渲染和下载都停止,如果我们把script和link一样放在head中加载会怎么样?

由于读取道head时还没有读取body所以整个页面都是白的,通称:白屏问题。我们都知道现在这个页面白屏2-3秒就以为网速不行的时代,如果我们加载的script过多那么对我们的网站造成的影响是巨大的,很有可能很多用户就是因为白屏时间过长导致用户流失

浏览器厂商们做出了什么优化?

因为下载是通过浏览器去进行的,所以浏览器厂商们都纷纷实现了并行下载来提高下载速度,但是script导致整个页面的下载和渲染停止的影响依然存在,也就是说他这个优化并不能解决我们白屏的问题。在雅虎特别小组的JavaScript性能研究下他们他研究出了script标签最好的放置位置应该是body标签的最底下,尽管他和css一样都属于资源。因为将script放在了body的最底下也就说明了当我们页面停止渲染和下载时我们的页面整体都已经出来了,给用户的感觉就是已经加载出来东西了,嗯!这个网站很快

雅虎特别性能小组提出的优化JavaScript的首要规则:将脚本放在底部
注意:首要规则说明还不止一个性能优化规则

你是不是以为这篇文章很水?讲了这么久就讲了一个是个人都知道的script标签放在body的对下面?当然不止这不重磅思考就来了!

我们为什么要使用构建工具将众多js打包成一个js文件?为什么webpack要分模块?

我们还记得js下载时也会导致停止吧?于是我们就要减少下载需求量,让浏览器快速获取到js执行。为什么webpack要分模块?因为我们要更加可控且直观的把控我们的项目所以分模块分类是我们人类最常用的解决方案于是webpack中万物皆模块

小彩蛋🥚:如果vue不讲script放在最下面加载我们就无法使用模板的特性在#app中解决白屏显示问题

路漫漫其修远兮,吾将上下而求索🛩?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:04:22  更:2021-07-22 14:04:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/28 12:05:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码