将脚本放入体内或体外的区别

时间:2015-08-07 00:14:26

标签: javascript html requirejs

我现在有这个结构:

<!DOCTYPE html>
<html>
<head>

    <!-- stylesheets-->
    <link rel='stylesheet' href='/static/stylesheets/style.css'/>
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,600,300' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css">
    <link href="/static/css/bootstrap/bootstrap-notify.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="/static/css/portal/simple-sidebar.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="/static/css/userProfileView/user-profile.css" media="screen" />

</head>

<body>
<main>
    <div name="main-div" id="main-div-id"></div>
</main>
</body>

<% if(env == 'development') {%> 

<script data-main="/static/app/js/main" src="/static/vendor/require.js"></script>

<% } else { %>

<script src="/static/app/optimized/optimized.js"></script>

<% } %>

</html>

正如你所看到的,我的javascripts“在底部”,但它们在身体标签之外,而不在里面。

我确信它会有所作为,但我不确定将脚本放在<head>之外和<body>标记之外会有什么不同。

1 个答案:

答案 0 :(得分:1)

起初我以为我记得<head><body>是可选的,因此可以将<script>放在<html>中,但它是&#39 ; s只是部分正确。

<{1}}中不允许{p> <script>,因为<html>可能只包含<html><head>

但是,如果您未声明<body><body>,则浏览器会隐式为您创建它们(under the right conditions)。即这是无效的:

<head>

这隐式创建了一个body元素,其中脚本标记是其中的一部分:

<html>
  <head></head>
  <body><body>
  <script>console.log('test')</script>
</html>

这隐式创建了一个head元素,脚本标记是其中的一部分:

<html>
  <head></head>
  <script>console.log('test')</script>
</html>

所以不,你不应该在<html> <script>console.log('test')</script> </html>

之后放置<script>