通常这是一个坏主意,因为您没有捆绑/缩小脚本。
@ErikPhilips 这不是真的,想象一下我想要一个仅在该部分运行的特定 JavaScript 代码。我为什么要捆绑它并在整个应用程序中导入?为了缩小,我可以创建我的打字稿文件缩小并将其导入我的脚本块内的部分。
想象一下,我想要一个仅在该部分运行的特定 javascript 代码。
脚本不会只在该部分运行,它会为整个页面运行。它是在单个 http 调用中交付的客户端代码(假设正常使用,因为您没有指定其他任何内容)。考虑部分:
@Model SomeModel
<div class='my-component'>
<div>
<script>
$('.my-component').css('width', model.Width);
</script>
不可重复使用,因为无论型号如何,同一页面的所有组件都将具有相同的宽度。
相反,您可以创建单个脚本文件并使用 data-* attributes 来存储配置信息并让单个脚本解决它(就像许多库所做的那样,例如引导程序):
<div class='my-component green' data-config='{ "width": 200, "height": 200 }'>
</div>
然后在单个脚本文件中:
$(document).ready(function(){
$('.my-component').each(function(){
var $this = $(this);
var config = $this.data('config');
$this.css("width", config.width);
$this.css("height", config.height);
});
});
我为什么要捆绑它
因为它是由浏览器自动缓存的。这意味着下载每个实例的次数更少。考虑以下几点:
<div class='my-component'>
<div>
<script>
// lots of scripts say 100-200 lines of it.
</script>
每次客户端访问任何页面时,他们每次都必须下载可能完全相同的代码,每个页面可能多次下载。这会占用不必要的客户端带宽和服务器带宽。
并导入整个应用程序?
您可以在全局范围内或在特定布局中导入一次。因为在第一次之后,它被缓存。
为了缩小,我可以创建我的打字稿文件缩小并将其导入我的脚本块内的部分。
那为什么要在部分中有脚本。
推荐阅读:Decoupling Your HTML, CSS, and JavaScript