【问题标题】:MVC Bundling Not WorkingMVC 捆绑不起作用
【发布时间】:2014-12-28 10:03:18
【问题描述】:

我正在开发一个小型 mvc 项目,我已经在 BundleConfig.cs 中声明了一个像这样的包

//javascript 包

bundles.Add(new ScriptBundle("~/bundles/Layout1JS").Include(
                        "~/Content/Public/js/jquery.min.js",
                        "~/Content/Public/js/bootstrap.min.js",
                        "~/Content/Public/js/jquery.isotope.min.js",
                        "~/Content/Public/js/jquery.Photo.js",
                        "~/Content/Public/js/easing.js",
                        "~/Content/Public/js/jquery.lazyload.js",
                        "~/Content/Public/js/jquery.ui.totop.js",
                        "~/Content/Public/js/nav.js",
                        "~/Content/Public/js/sender.js",
                        "~/Content/Public/js/jquery.slider-min.js",
                        "~/Content/Public/js/custom.js"));


//css bundle
bundles.Add(new StyleBundle("~/Content/Public/css").Include(
                        "~/Content/Public/css/main.css"));

在我输入的 head 部分的 _Layout.cshml 中:

<head>
    <meta charset="utf-8">
    <title>test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- LOAD CSS FILES -->
    @Styles.Render("~/Content/Public/css", "~/Content/css")

    <!-- LOAD JS FILES -->


    @Scripts.Render("~/bundles/Layout1JS")

</head>

在我的 application_start 我有:

BundleTable.EnableOptimizations = true; 

和 web.config

<compilation debug="true" targetFramework="4.0">

这让我有点头疼,试图弄清楚为什么捆绑不是专门为 javascript 工作的。有人请指教

【问题讨论】:

    标签: javascript css asp.net-mvc-4 model-view-controller bundle


    【解决方案1】:

    由于这条线,捆绑不起作用

    <compilation debug="true" targetFramework="4.0">
    

    在调试时,束不会在您“调试”时压缩或缩小,并且在调试时能够看到实际的 JavaScript 和 CSS 是一件好事。当您将调试设置为 false(或从标签中删除)时,您的应用程序将在发布模式下运行。届时将发生捆绑(除非您设置BundleTable.EnableOptimizations = false;

    <compilation debug="false" targetFramework="4.0">
    

    <compilation targetFramework="4.0">
    

    正如下面 Mike 所指出的,BundleTable.EnableOptimizations = true; 应该覆盖 web.config 设置。但是,在您的项目没有覆盖该设置的情况下,退出调试模式可能仍然是件好事。

    【讨论】:

    • FWIW 我在调试环境中设置BundleTable.EnableOptimizations = true; 从来没有遇到过问题。无论如何,它总是在设置时捆绑/缩小。
    • @MikeSmithDev - 我做了一些研究,看来你是正确的,因为该设置会覆盖 web.config。今天我学会了!
    • 嗨,谢谢,我现在可以看到 html 确实在生成捆绑的 javascript:......但是我的整个页面都坏了,我的 javascript 或滑块都没有工作
    • @kayze 当我第一次阅读您的问题时,在我看来,您在一个捆绑包中有很多物品。您可能会考虑将它们分开一点(例如,一个用于 jquery,一个用于插件,一个用于自定义 js)。可能是将 jquery 与 jquery 插件结合使用会导致这些插件失败。此外,如果您分开,请确保在任何依赖 jquery 的项目之前渲染 jquery 包
    • @Tommy 将所有内容放在同一个包中的原因是检索 JS 和 CSS 文件的请求会减少。这可以提高性能并且是最佳实践。在调试模式下,它们不会被捆绑,您将发现插件的任何问题。只要您经过彻底测试,就不会在生产中遇到任何问题
    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多