在html中有标签似乎并不罕见,但将所有js都放在外部文件中,然后在html中引用,这不是更整洁吗?它的应用程序不同吗?有大量的行链接到大量的js文件会更混乱吗?
嵌入JavaScript
- Pro:不需要额外的HTTP请求,因此可能会更快地进行初始加载
- 缺点:无法独立于HTML缓存JavaScript,因此在连续访问时可能不需要下载代码
- Con:(与前一点有关)所有的JavaScript代码可能每次都必须下载,因为HTML文件通常不会缓存(但这可能取决于您的服务器设置)
- 缺点:无法在HTML页面之间共享代码
外部JavaScript文件
- Pro:可以独立于其他资源缓存JavaScript文件
- Pro:可以在多个HTML页面上共享JavaScript代码
- 缺点:外部JavaScript文件越多,模式下的HTTP请求就越多,加载页面所需的时间就越长(至少在第一次加载时)。这可以通过将JavaScript文件捆绑在一起来减轻。例如,将长期缓存中不经常更改的文件捆绑到一个文件中,并将所有文件捆绑到另一个文件
两者都有效,下面是外部文件的一些优点和缺点。。。
优点:
-
您可以划分代码。当您可能有一个主要的JavaScript文件,然后用一些小的JavaScript来做不同的不相关的事情时,这尤其有用
-
它使版本控制更容易
-
通过将代码放在单独的文件中,更容易准确地找到某个位是的位置
缺点:
-
外部文件意味着更多的文件请求,降低的速度
-
整个文件可能不需要小的代码位
-
通过内联,可以更容易地准确控制脚本何时执行
请注意,对于需要在页面末尾执行的脚本(如在末尾</body>
标记之前放置<script>
),您可以使用以下内容:
<script src="myscript.js" defer></script>
就我个人而言,我通常更喜欢将代码放在单独的文件中,因为我发现它更容易管理,但请参阅上面的利弊,以便做出决定。
这取决于含义,您希望优化速度。例如,如果您有一些页面需要轻量级javascript,那么使用一些<script>...</script>
标记会比使用外部文件快得多。
另一方面,如果你有很多复杂的算法/过程需要在多个页面上完成,那么从外部文件获取信息会更容易提高页面的性能和加载速度,而不是让页面加载你需要的数百行代码。
实际取决于应用程序的大小。
- 几行代码?把它放在脚本标记之间
- 小项目?引用外部文件是可以的
- 更大/生产水平?您需要一个模块捆绑器-查找webpack
根据我的小经验,人们过去常常将HTML和JS分离。最近有一项将它们结合在一起的举措。我认为他们将它们分开是因为关注点的分离,但HTML和JS并不是真正不同的"关注点";HTML是名词,JS是动词。这一举措至少在一定程度上得益于模板文字。
因此,要回答你的问题,什么时候合适,这将是非常有主见的,但我可以看到一个HTML和JS总是结合在一起的世界,只要文件大小小且易于管理,生活就会很好。
除了前面提到的所有内容外,还有两种情况下我使用内联<script>
标记。只有当我找不到替代方案或替代方案很麻烦时,我才会这样做。
一种情况是,我需要根据php代码的评估设置一个javascript
变量。例如,当数据发生更改时,页面刷新-我设置了Javascript
"脏"标志,这样,如果用户试图退出页面而不保存,我可以发出警告:
if ($dataHasChanged){
echo "<script>dirtyFlag.value = true;</script>";
}
另一个例子是在iframe
中运行php代码时,我希望返回php代码的结果(要么返回到父元素,要么设置javascript变量):
$result = updateDb($data);
if ($result === false) {
echo "<script> document.write( parent.document.getElementById('status').innerHTML = 'Error')</script>";
}