【问题标题】:Javascript - inline vs include - Is there a difference in loading or running?Javascript - 内联与包含 - 加载或运行有区别吗?
【发布时间】:2018-03-30 22:16:52
【问题描述】:

一般问题

我一直在研究在呈现页面时如何加载 javascript。特别是,我发现这非常有帮助:

Where should I put <script> tags in HTML markup?

但是,我似乎找不到任何有关内联 javascript 与 javascript 包含之间差异的信息。

假设 helloWorld.js 使用相同的代码,它们的加载或运行方式有什么不同吗?

<script language="JavaScript" type="text/javascript" src="helloWorld.js"></script>

<script language="JavaScript" type="text/javascript">alert("hello world");</script>

我的实现

更具体地说,我正在实施 Adob​​e Analytics。实施指南建议将代码放在页面上如下:

<script language="JavaScript" type="text/javascript">
    var s_code=s.t();if(s_code)document.write(s_code)
</script>

将其作为包含而不是内联会产生任何影响吗?

<script language="JavaScript" type="text/javascript" src="sCall.js"></script>

编辑:我相信我的问题最终有所不同,因为“类似问题”线程中没有人提到阻塞。

Mladen Ilić 回答了我的问题。

没有异步或延迟属性的脚本,以及内联脚本, 在浏览器继续执行之前立即获取并执行 解析页面。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

感谢您的回复!

【问题讨论】:

标签: javascript include adobe analytics inline


【解决方案1】:

无论您如何包含它,在这两种情况下,代码都将被以相同的方式处理并具有相同的效果。

唯一的影响是维护和性能方面。

虽然很明显维护单独文件中的 JS 代码更容易,但在性能方面,有两点需要考虑:

  1. 如果您有单独的文件,浏览器将能够缓存它。
  2. 如果您将它与 html 放在同一个文件中,由于 TCP 启动慢,下载会稍微快一些。

我个人的偏好是始终将 JS 分开保存。

【讨论】:

  • Izio 的回答似乎暗示内联不会阻止页面加载,但包含会阻止。你是说你认为这是不正确的?
  • 可以将async 和defer 属性添加到脚本中以更改浏览器处理它们的方式,但是它们并未在您问题的脚本标签中使用。您可以在 MDN 上阅读更多关于异步和延迟的信息:developer.mozilla.org/en-US/docs/Web/HTML/Element/script
  • 感谢您的回复。我相信我了解async 和defer 属性,它们可能对我的情况有所帮助。但是,我的问题是,如果没有它们,内联 javascript 的处理方式是否与包含的 javascript 不同?
  • 不客气。 :) 如果没有async 和defer,它们的处理方式相同。来自 MDN 的引述:“在浏览器继续解析页面之前,没有异步或延迟属性的脚本以及内联脚本会立即获取并执行。”。
  • 是的,这正是我想要的!非常感谢。我希望我可以将您的评论标记为正确答案。
【解决方案2】:

&lt;script language="JavaScript" type="text/javascript" src="sCall.js"&gt;&lt;/script&gt; 将阻止加载页面,而 <script language="JavaScript" type="text/javascript"> var s_code=s.t();if(s_code)document.write(s_code) </script> 将是非 bloquant

但是,您也可以将async 属性设置为内联声明...这取决于您!你更喜欢在哪里看到它?

【讨论】:

  • 只是为了确保我理解,您是说带有“异步”和内联 javascript 的包含将表现相同?
  • 是的(还有 12 个)
猜你喜欢
  • 2018-03-24
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
相关资源
最近更新 更多