什么时候在html和外部.js中包含javascript比较合适?
在html中有标记似乎并不少见,但将所有js都放在一个外部文件中,然后在html中引用,不是更整洁吗?什么时候在html和外部.js中包含javascript比较合适?,javascript,html,Javascript,Html,在html中有标记似乎并不少见,但将所有js都放在一个外部文件中,然后在html中引用,不是更整洁吗? 它在应用上有区别吗?有很多行链接到很多js文件会更混乱吗 根据我的小经验,人们习惯于将HTML和JS分开。最近有一项将它们结合在一起的举措。我认为它们之所以分开是因为关注点的分离,但HTML和JS并不是真正不同的“关注点”;HTML是名词,JS是动词。这一举措至少在一定程度上得到了政府的推动 因此,为了回答您的问题,什么时候合适,这将是非常固执己见的,但我可以看到一个HTML和JS总是结合在一
它在应用上有区别吗?有很多行链接到很多js文件会更混乱吗 根据我的小经验,人们习惯于将HTML和JS分开。最近有一项将它们结合在一起的举措。我认为它们之所以分开是因为关注点的分离,但HTML和JS并不是真正不同的“关注点”;HTML是名词,JS是动词。这一举措至少在一定程度上得到了政府的推动
因此,为了回答您的问题,什么时候合适,这将是非常固执己见的,但我可以看到一个HTML和JS总是结合在一起的世界,只要文件大小小且易于管理,生活可能会很好。这取决于含义,您希望优化速度。例如,如果您有一些页面需要轻量级javascript,那么使用一些
…
标记要比使用外部文件快得多
另一方面,如果你有许多复杂的算法/过程需要在许多页面上完成,那么从外部文件获取信息将更容易提高页面的性能和加载速度,而不是让页面加载你需要的数百行代码。这实际上取决于你的应用程序的大小
- 几行代码?把它放在脚本标签之间
- 小项目?引用外部文件是可以的
- 更大/生产水平?您需要一个模块绑定器-查找网页包
标记之前放置
),您可以使用以下方法:
<script src="myscript.js" defer></script>
就我个人而言,我通常更喜欢将代码放在单独的文件中,因为我发现这样更容易管理,但请参考上面的利弊来做出决定。内联JavaScript
- 赞成:不需要额外的HTTP请求,因此初始加载可能更快
- 缺点:无法独立于HTML缓存JavaScript,因此在连续访问时可能不需要下载代码
- Con:(与前一点相关)所有JavaScript代码可能每次都必须下载,因为HTML文件通常不会缓存(但这可能取决于您的服务器设置)
- 缺点:无法跨HTML页面共享代码
- Pro:可以独立于其他资源缓存JavaScript文件
- Pro:可以跨多个HTML页面共享JavaScript代码
- 缺点:外部JavaScript文件越多,HTTP请求越多,加载页面所需的时间就越长(至少在第一次加载时)。这可以通过将JavaScript文件捆绑在一起来缓解。例如,将不经常更改以进行长期缓存的文件绑定到单个文件中,并将所有文件绑定到另一个文件中
标记。我只在找不到替代方案或替代方案很麻烦时才这样做
一种情况是,我需要根据php代码的评估设置javascript
变量。例如,当数据发生更改时,页面刷新-我设置了Javascript
“dirty”标志,以便在用户试图退出页面而不保存时发出警告:
if ($dataHasChanged){
echo "<script>dirtyFlag.value = true;</script>";
}
如果您将代码与webpack之类的东西捆绑在一起,那么您只需要一个
bundle.js
,也许还需要CDN的几个库。一点也不混乱。我同意@JakeWeary将您的外部文件捆绑到ftw。这可能也适用于你的样式表。这一定是重复的,但我找不到以前的样式表。“它会快得多”这里的“它”是什么?显然,“它”与页面的速度有关<代码>它不是火箭科学。我不太清楚。你也可以参考开发时间(将所有内容转储到一个文件中比创建多个文件并链接它们要快)。人们习惯于将HTML(标记)、样式和javascript都放在一个文件中,分散在整个文件中,然后复制粘贴到页面上。做一个改变或修复一个bug完全是一场噩梦,因为你必须在那些重复的地方寻找。然后他们学会了。分离关注点,构建可重复使用的部分;更改发生在一个地方,并且由于代码和样式是共享的,所以在任何地方都是固定的。现在人们(又一次)忘记了这一点,又回到把所有的东西都扔在同一个罐子里,又把自己复制粘贴死。
$result = updateDb($data);
if ($result === false) {
echo "<script> document.write( parent.document.getElementById('status').innerHTML = 'Error')</script>";
}