js和css在哪里引入比较好?

228 阅读1分钟

浏览器的渲染是自上而下的,css的加载会阻塞js的执行,js的加载会阻塞dom的渲染。 

我们一般将css放在head标签里引入,js放在body结束标签之前引入。 

引入

  1. 如果你需要动态创建文档或者修改dom,你可以把js放在body结束标签之前,在dom解析完之后执行js,如果不需要可以放在head里面。 
  2. css的加载不影响js的加载,但是会影响js的执行,因此会阻塞,所以当你的js文件不依赖css文件时,可以把js放在css的前面。 

 思考

1.如果把css放下body里面会怎样? 

  •  会发生重绘。因为这时候dom已经解析完了,又要重新去计算css属性。 
2.把js放head里面的方法? 
  •  监听DOMContentLoaded,在文档结构解析完之后触发。 
  •  async/defer异步加载 

asyns/defer

asyns:加载和渲染后续文档的过程和脚本的加载和执行并行,不保证前后顺序,如果脚本前后有依赖性,可能会出错。 

defer:加载后续文档的过程和脚本的加载并行,但是脚本的执行要在所有元素解析完之后,document.DOMContentLoaded触发(同步js执行完毕)之前完成。相当于把脚本放页面底部。