【问题标题】:ASP.Net MVC - How to Minify JavaScript without Bundles (Inline/ExternalFile)ASP.Net MVC - 如何在没有捆绑包的情况下缩小 JavaScript(内联/外部文件)
【发布时间】:2016-01-11 11:29:08
【问题描述】:

我正在开发一个 MVC 5 Web 应用程序。 JavaScript 代码以这 3 种不同的方式进行管理,

  1. 视图中的内联 JavaScript 代码(读取 ASP.Net 服务器端变量,即 ViewBag、ResourceFile 等)

  2. 引用一些外部 JavaScript 文件(每个视图/页面一个 JS 文件)。

  3. 其余的 JavaScript 被 Bundles 引用。

我想缩小 #1 和 #2,我认为我不应该在我的应用程序中为每个页面创建 一个捆绑包,因为有几十个页面,所以这就是为什么我认为我不能为此使用 MVC Bundling 和 Minificatin 功能。

您能否提出解决方案。

谢谢

【问题讨论】:

    标签: javascript asp.net-mvc minify bundling-and-minification


    【解决方案1】:

    Gulp 和 Grunt 正在成为相当标准的行业工具。最新版本的 Visual Studio 现在也有扩展来支持它们。

    【讨论】:

    • 我对这些了解不多,但我认为那些是像 NuGet 这样的 PackageManager,如果这是真的,你是否建议我们应该离开 NuGet 并转向 Gulp 或 Grunt?
    • 两者都做。例如,使用一个来完成这两项工作允许您编写一个脚本,该脚本将更新您的所有包并一次性处理、缩小和捆绑您的 javascript 文件。或者你可以坚持使用 nuget,无论对你有用。
    • (进一步说明:Gulp 和 Grunt 是运行插件的任务运行器,包管理器和压缩器是两种常见的插件,但还有很多其他插件也很有帮助)。
    • 另外,我相信微软正在弃用 ASP.NET 5 中的 MVC 捆绑——他们鼓励开发人员使用 Grunt 或 Gulp 或类似的东西。
    • 好消息,+1。我会调查他们两个。
    【解决方案2】:

    您不能使用 MVC 捆绑和缩小功能来缩小内联 js 或外部 JavaScript 文件(这是不使用内联 javascript 的原因之一)。

    尽管如果您仍想使用内联 JavaScript,您可以查看 YUICompressor .NET 或其他一些可以帮助您的小型库。

    缩小外部脚本没有多大意义。几乎所有公开可用的 JS 都有一个缩小版本,因此您可以直接引用它,而不是引用完整版本。其他解决方案可能是将这些外部脚本包含在您的 MVC 项目中(将它们添加到 Scripts 文件夹中),然后在它们上使用 MVC 捆绑和缩小功能

    【讨论】:

    • 我不喜欢使用内联 JavaScript,但是我们还能做些什么来访问 JavaScript 中的 ViewBag/ResourceFile? YUICompressor .NET 实际上是一个好主意,如果它不是一个遗留工具的话。是吗? “缩小外部脚本”并不是“缩小第三方库”,而是“每个视图/页面/一个JS模块文件”。最后,您确定 Scripts 文件夹中的所有文件都会被缩小,无论我们是否将它们用作捆绑包?感谢您的宝贵时间。
    • YUICompressor .NET 是不是一个遗留工具 - 我对此没有答案,但我知道它被广泛使用。 “每个视图/页面/的一个 JS 模块文件” - 我将基于脚本构建包,这些脚本应该作为一个模块一起使用,例如验证包可以包括 jquery 验证和 jquery 不显眼的验证脚本。你确定 Scripts 文件夹中的所有文件都被缩小了吗 - 它们没有被缩小 - 但是如果你将它们包含在包中并启用优化,你的包将被缩小。您也可以使用 Web Essentials 插件手动缩小脚本
    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 2020-08-04
    • 2017-12-12
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2013-02-21
    相关资源
    最近更新 更多