从MVC-pre-Core项目迁移到Core 2版本我震惊地发现@Scripts& @Styles被删除。我依靠能够使用@Scripts.Render("~/bundles/myApp")
作为快捷方式,在需要它们的任何页面上导入了六个文件。现在我必须在每个需要它们的页面上拼写所有这些文件?
任何复制行为的方法。已经浏览了Gulp,但看起来更像是部署处理器。
答案 0 :(得分:1)
除了向生成的HTML添加简单标记之外,Scripts.Render
和Styles.Render
方法实际上不会执行任何操作。你正在谈论的内容 - 在一次调用中卷起一堆脚本/样式 - 是由MVC提供的捆绑。在ASP.NET Core中,创建这些bundle的方法已经改变了;就是这样。
现在,您有bundleconfig.json
,而不是BundleConfig.cs
。您只需直接引用捆绑的脚本,而不是调用Scripts.Render
来包含捆绑包。与你的风格一样。
默认情况下,每个site.js
和site.css
都有一个捆绑,分别捆绑(并缩小)到site.min.js
和site.min.css
。所以,你只需这样做:
<environment names="Staging,Production">
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
environment
标记只是确定此HTML何时包含在输出中。在这里,只有当环境是临时或生产时。脚本标记是对“bundle”的硬引用。这个功能相当于您可以通过以下方式实现的功能:
@Scripts.Render("~/bundles/site")
它本身只会呈现以下脚本标记:
<script src="~/bundles/site?v=abc123"></script>
换句话说,您不需要Scripts.Render
和Styles.Render
方法,因为它们实际上毫无用处。即使在以前版本的MVC中,您也可以避免使用它们,只需创建直接指向捆绑包的标签。
有关捆绑和缩小如何在ASP.NET Core中工作的详细信息,请参阅documentation。