• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > CSS和JS的加载和执行详解

CSS和JS的加载和执行详解

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-11-30

匿名通过本文主要向大家介绍了javascript,css,样式表等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com


HTML渲染过程的一些特点

顺序执行,并发加载

通过词法分析,通过HTML生成Token对象(当前节点的所有子节点生成后,才会通过next token获取到当前节点的兄弟节点),最终生成Dom Tree浏览器中可以支持并发请求,不同浏览器所支持的并发数量不同(以域名划分),以Chrome为例,并发上限为6个。
优化点: 把CDN资源分布在多个域名下

是否阻塞

CSS:
CSS放在head中会阻塞页面的渲染(也就是说页面的渲染会等到css加载完成)
CSS阻塞JS的执行 (因为GUI线程和JS线程是互斥的,因为有可能JS会操作CSS)
CSS不阻塞外部脚本的加载(不阻塞JS的加载,但阻塞JS的执行,因为浏览器都会有预先扫描器)JS:
直接引入的JS会阻塞页面的渲染(GUI线程和JS线程互斥)
JS不阻塞资源的加载(这有赖于chrome的预加载机制)
JS顺序执行,阻塞后续JS逻辑的执行

依赖关系

页面渲染依赖于CSS的加载
(那既然页面是在等待Dom Tree 和 Css Tree生成后再去渲染,那为何需要把CSS放到Head中)
(因为CSS中有可能是异步加载的,所以为了保证依赖关系,需要把CSS放到head中)
JS的执行顺序的依赖关系
JS逻辑对于DOM节点的依赖关系

引入方式

CSS引入link @importJS引入
直接引入
defer (不阻塞页面渲染,顺序执行)
async (不阻塞页面渲染,不保证顺序执行)
异步动态引入JS

这里写图片描述
蓝色线代表网络读取,红色线代表执行时间,这俩都是针对脚本的;绿色线代表 HTML 解析。

加载和执行的一些优化点

  • CSS样式表置顶 (阻塞页面渲染)

  • 用link代替@import (1,@import是CSS层面的,不会触发浏览器并发机制;2,在CSS加载完成后进行的引入。 但现代浏览器中@import和link在表现上已经没有上述区别了。 )

  • js脚本置底(因为浏览器有并发限制,所以把js放到下边,减少占用的并发数,使得页面能够更快的渲染出来)

  • 合理使用js的异步加载能力

浏览器的渲染机制

这里写图片描述

以上就是CSS和JS的加载和执行详解的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何实现小程序动画?小程序动画的实现方法
  • 微信小程序如何使用微信SlideView组件(附示例)
  • 微信小程序多层嵌套渲染列表及数据获取的代码
  • 微信小程序支持 cookie的代码实现
  • 什么是懒加载?小程序中图片懒加载的两种实现方法
  • 微信小程序中选项卡的实现方法
  • 微信小程序Page构造函数以及生命周期函数的内容解析(附代码)
  • 简单的微信小程序日历组件的实现(附完整代码)
  • 微信小游戏中如何实现转发&分享&获取头像&游戏圈四种功能
  • 小程序中如何实现分享功能 (代码示例)

相关文章

  • 2018-11-30微信小程序之rich-text教程详解
  • 2018-11-30微信小程序之拖拽image触摸事件监听的实现方法介绍
  • 2018-11-30使用微信小程序开发一个弹窗页面的方法介绍
  • 2018-11-30Vue 和微信小程序的区别有哪些?对比分析
  • 2018-11-30微信小程序实现流程进度功能实例分享
  • 2018-11-30详解微信小程序开发自己制作小组件实例代码
  • 2018-11-30微信小程序中图片绝对定位(背景图片)的方法
  • 2018-11-30什么是懒加载?小程序中图片懒加载的两种实现方法
  • 2018-11-30解读和分析微信小程序组件:四、icon图标
  • 2018-11-30如何操作webpack处理文件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 小程序实现九宫格界面的导航
    • 小程序开发的图文详解
    • 微信小程序开发上传图片功能实例分享
    • 微信小程序云开发服务端数据库API 获取集合数据
    • 小程序实现语音识别经验分享
    • 微信小程序图表插件(wx-charts)的介绍
    • 小程序利用setData修改数组中的某一个值的实现
    • 微信小程序列表下拉刷新及上拉加载的实现方法分析
    • 小程序开发测试教程
    • 小程序开发之APP()函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有