在HTML5中:
引入CSS和JS文件时 到底应该在head标签中还是body中?
1,引入CSS在head中,

2,JS 的放置位置
a.有的js是立即执行,有的js是调用执行。
( 立即执行在网页上打开时就可以看到效果,而调用执行的,一般会在其它控件触发事件的时候调用。)

对于调用执行的,我们最好放在head里,直接声明或者引用外部文件(head)。
对于即时执行的,我们在需要js执行的地方声明或者引用外部文件(body)。

b.追求效率高的话:
JS建议在body的尾部引入,(强调是自己编写的或者不是非初始化就要加载的);
原因:当页面依次序载入到script的时候,dom树的解析和渲染会暂停,在js载入执行完毕之前,
页面会保持后续内容不完整的状态。将script后置,可以避免这个情况,特别在脚本下载和执行耗时很长的时候会更明显

PS:js执行顺序问题,script标签写在上边的先执行

3,BS的标准模版

<!DOCTYPE html>
<html>
  <head>
     <!--网页页面字符集-->
    <meta charset="utf-8">
 
    <!--让IE使用最新的渲染模式-->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 
    <!--针对移动设备,网站显示宽度等于设备屏幕显示宽度,内容缩放比例为1:1-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
 
    <!--将下面的 <meta> 标签加入到页面中,可以让部分国产浏览器默认采用高速模式渲染页面:-->
    <meta name="renderer" content="webkit">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
 
    <title>Bootstrap Basic Template</title>
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!--下面这一大块的注释是说:"为了让IE9以下的浏览器支持响应式和HTML5标签.需要引入下面两个JS文件"-->

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
 
    <!-- 英:jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <!--中:必须在JS文件引入之前引入JQ文件,这里src引用的是本地.线上建议使用CDN引用)
    <script src="js/jquery-2.1.3.min.js"></script>
 
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

PS:这么做可以使得用户先看到样式 具体的操作逻辑可以等待整个网页都传输完成后再生效有利于提高Web浏览体验.

4,JS 和 CSS 在页面中的位置,会影响其他资源(指 img 等非 js 和 css 资源)的加载顺序,有三个值得注意的点:

a. JS 有可能会修改 DOM. 典型的,可能会有 document.write. 这意味着,在当前 JS 加载和执行完成前,后续所有资源的下载有可能是没必要的。
这是 JS 阻塞后续资源下载的根本原因。

b. JS 的执行有可能依赖最新样式。比如,可能会有 var width = $('#id').width(). 这意味着,JS 代码在执行前,浏览器必须保证在此 JS 之前的所有 css(无论外链还是内嵌)都已下载和解析完成。这是 CSS 阻塞后续 JS 执行的根本原因。

c. 现代浏览器很聪明,会进行 prefetch 优化。性能是如此重要,现代浏览器在 竞争中,在 UI update 线程之外,还会开启另一个线程,
 对后续 JS 和 CSS 提前下载(注意,仅提前下载,并不执行)。有了  prefetch 优化,这意味着,在不存在任何阻塞的情况下,
 理论上 JS 和 CSS 的下载时机都非常优先,和位置无关。