json文件格式
json
文件格式传送的是对象
但是服务器接收以及发送的都是文本,Linux
系统中飞的都是文本。。
json
文件中的对象属性名都要双引号包裹起来,以区别一般js文件中的对象
后台接受到的是json的字符串形式
- 一般使用
JSON.stringify(jsonObj)
方法,将json
对象转换为字符串 JSON.parse(jsonStr)
转换为对象
浏览器页面的加载
randerTree
绘制完 = 展示的效果
DOMTree
的解析依据深度优先原则(纵向)
生成DOMTree
的过程是一个HTML
文件的解析过程,解析完毕,并不是加载(全部资源)完毕
异步过程,加载和解析
DOMTree
+ CSSTree
= randerTree
randerTree
形成以后才开始浏览器才会开始渲染页面
reflow
页面的重排(重构)dom
节点的增删改查,dom
节点的宽高,位置,dispaly: none
,offsetWidth/offsetLeft
都会造成浏览器的页面重排(reflow
)- 当然疑惑为什么查看一个元素的可视大小都会造成浏览器的
reflow
,这是因为浏览器会重新渲染以获得这个实时只读属性
repaint
重绘
与重排(reflow
)相比,只是改变(重新渲染)页面的一小部分,性能损耗不大,比如改变元素背景色这样的
异步加载js
js异步加载的三种方法:
defer="defer"
属性名和属性值相等的,可以只写值。可以写在内部<script>
标签内部
该js文件会异步加载,等到整个DOMTree
解析完成才(页面加载完成之前)开始依次执行,也就是DOMContentloaded
,但是实际上他发生在webNavigation.onDOMContentLoaded
事件之前~~~~aysnc = "aysnc"
异步加载不阻塞,但是只要js文件加载完就执行(也就是说js文件的执行顺序是不定的),aysnc
只能加载外部脚本,不能把js写在script
标签里面
- 三
使用document.creatElement()
创建一个script
标签,为他添加src
属性,浏览器会加载URL中的js文件,不过好像在浏览器中是查不到这个的加载的(灯塔模式)。
然后把创建的这个节点对象添加到页面里面去就可以执行js脚本了
能加载的资源都有一个onload
事件,但是IE的script
对象上面没有onload
事件(单单就是这个script
没有这个事件)
但是script
标签有readyState
(属性)这个状态码,该状态码共有三个状态loading
(加载)interactive
(活动) complete
(完成)
readyState
值的改变触发script.onreadystatechange
事件
满足一定条件才执行的函数,叫做回调函数(callback
)