我对MVC很新,我无法决定存储cshtml文件及其各自的javascript代码的最佳方法。我的项目中的一些JS代码需要全局运行,但大部分都与特定视图或部分视图完全相关。
如果我将javascript放在视图中,我会得到一堆内联不可缓存的javascript,如果我把它放在一个中心文件中,我会失去模块性。
我听说在MVC4中会有缩小功能,有什么我可以用MVC3做的,它允许我在视图中选择javascripts包含然后将它们分组并自动缩小它们? (甚至可能在小组中?)
答案 0 :(得分:6)
Cassette它与即将推出的MVC4捆绑包基本相同。
在您的视图页面中,您可以使用Cassette的Bundles
帮助程序类来引用脚本和样式表。
@{
Bundles.Reference("Scripts/jquery.js");
Bundles.Reference("Scripts/page.js");
Bundles.Reference("Styles/page.css");
}
<!DOCTYPE html>
<html>
...
此外,Cassette还支持Less和CoffeScript。如果您对Knockout.js或Backbone.js等客户端MVC框架感兴趣,它还支持HTML模板。
您仍然需要选择如何对内容进行分组。正如official documentation所暗示的那样,最好的选择是将捆绑包视为部署单位。
请记住,捆绑包是部署单位。如果捆绑包中的任何资产发生更改,则必须通过Web浏览器再次下载整个捆绑包。 因此,可能将共享代码分组到一个包中,并将页面脚本放入自己的包中。
答案 1 :(得分:1)
您可以将javascript放在单独的文件中,用于每个视图。然后在_Layout.cshtml中输入@RenderSection
到头部:
<head>
<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script>
@RenderSection("head",false)
</head>
然后在每个视图中,您可以放置一个将呈现在标题中的部分:
@section head{
<script src="@Url.Content("~/ViewScripts/Order/New.js")" type="text/javascript"></script>
}
答案 2 :(得分:0)
你想要使用这样的方法: http://www.viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution/
看这篇文章: Using Rails 3.1, where do you put your "page specific" javascript code?
答案 3 :(得分:0)
答案 4 :(得分:0)
在partials中使用脚本(在我看来)
不是最佳做法建议您编写部分特定脚本来分隔js并在页面加载时绑定事件,或者如果部分是通过ajax加载,则在成功事件上加载。
然后你可以确定多次绑定事件并且视图只是一个视图