Javascript 在asp.net mvc 4中组织自定义Java脚本
我是MVC4新手,我想知道我应该把自定义javascript文件放在哪里。所谓“自定义”,我指的是仅在特定视图或局部视图中使用的脚本 我也使用了区域,因此增加了复杂性。我正在考虑将脚本放在应用程序根目录下的脚本文件夹中,然后放在自定义子文件夹中Javascript 在asp.net mvc 4中组织自定义Java脚本,javascript,asp.net-mvc-4,bundle,Javascript,Asp.net Mvc 4,Bundle,我是MVC4新手,我想知道我应该把自定义javascript文件放在哪里。所谓“自定义”,我指的是仅在特定视图或局部视图中使用的脚本 我也使用了区域,因此增加了复杂性。我正在考虑将脚本放在应用程序根目录下的脚本文件夹中,然后放在自定义子文件夹中 然后,如何在视图中引用脚本?我应该使用定制包吗 您可以在scripts文件夹中组织脚本: ~/Scripts/Home/foobar.js ~/Scripts/Admin/baz.js 我应该使用定制包吗 当然,您可以捆绑始终在一起的脚本。我认为将
然后,如何在视图中引用脚本?我应该使用定制包吗 您可以在
scripts
文件夹中组织脚本:
- ~/Scripts/Home/foobar.js
- ~/Scripts/Admin/baz.js
当然,您可以捆绑始终在一起的脚本。我认为将脚本添加到
脚本
文件夹中的自定义文件夹是一种方法。
您可以在appstart\BundleConfig.cs
文件中创建一个新的捆绑包,如下所示:
bundles.Add(new ScriptBundle("~/bundles/custom").Include(
"~/Scripts/Custom/myCustom.js",
"~/Scripts/Custom/myCustom2.js"));
然后将包添加到视图中,如下所示:
@section scripts{
@Scripts.Render("~/bundles/custom")
}
这将在布局
文件的@RenderSection(“脚本”,必需:false)
行中呈现
或
要仅为您的视图调用一个特定的脚本
,您可以执行以下操作:
@section scripts{
<script src="~/Scripts/Custom/myCustom.js"></script>
}
@节脚本{
}
注意:您可以将脚本文件从解决方案资源管理器
拖动到部分中。您不必写入整个路径。
编辑-似乎很重要,所以我从上次的评论中复制了这一点:
为了使用缩小
您需要将脚本添加到bundle表中,然后添加BundleTable.EnableOptimizations=true编码>到BundleConfig
文件或设置谢谢。我对这种方法只有一个问题:很明显,一次只能加载一个视图,并带有一个关联的自定义脚本。使用scriptbundle,每当我浏览到一个视图时,我都会加载每个视图的所有自定义脚本。这对我来说似乎太过分了,更不用说脚本之间发生冲突的风险了(例如:我的自定义脚本通常以$(document).ready开头),我不确定我是否理解您的问题。在脚本部分定义的捆绑包将仅为调用它的视图呈现。多次调用(document).ready()
也没有问题,请参见。我的意思是,如果我为所有自定义脚本创建一个包,那么每当视图调用此包时,所有自定义脚本都将被加载。因此,我想知道是否应该为每个自定义脚本创建一个捆绑包。如果您只需要加载一个脚本,那么您不需要为它创建捆绑包,只需在视图的“脚本”部分调用特定脚本即可(请参见我编辑的答案)。是的,我现在就是这么做的。但是我没有利用优化(特别是缩小)的优势,通常每个视图只有一个脚本。是否可以为每个唯一脚本创建一个捆绑包?这不是太多吗?缩小应该足够了。此外,您可以考虑将功能在一个较大的脚本中重新组合,以便在视图之间重用。即使不是所有的功能都在一个给定的视图中使用,也最好只有一个缩小的包,而不是每个视图都有数百个小脚本。@DarinDimitrov每个视图创建包不是更好吗?然后可以合并它们,每个视图只有一个或几个脚本。