Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在asp.net mvc 4中组织自定义Java脚本_Javascript_Asp.net Mvc 4_Bundle - Fatal编程技术网

Javascript 在asp.net mvc 4中组织自定义Java脚本

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 我应该使用定制包吗 当然,您可以捆绑始终在一起的脚本。我认为将

我是MVC4新手,我想知道我应该把自定义javascript文件放在哪里。所谓“自定义”,我指的是仅在特定视图或局部视图中使用的脚本

我也使用了区域,因此增加了复杂性。我正在考虑将脚本放在应用程序根目录下的脚本文件夹中,然后放在自定义子文件夹中


然后,如何在视图中引用脚本?我应该使用定制包吗

您可以在
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每个视图创建包不是更好吗?然后可以合并它们,每个视图只有一个或几个脚本。