代码之家  ›  专栏  ›  技术社区  ›  Chris Missal

在母版页中组合CSS和JS,并使用squish查看页面

  •  4
  • Chris Missal  · 技术社区  · 14 年前

    你如何实施 SquishIt 要跨视图页捆绑CSS/JS并在母版页中呈现它吗?我以为我可以在呈现部分上面使用ContentPlaceholder,但有时它会添加3个文件(1个在视图页中,2个在母版页中),这似乎有一些奇怪的行为,但其他时候会忽略从视图页添加的文件。

    索引文件

    <asp:Content ContentPlaceHolderID="CssFiles" runat="server">
        <% CssHelper.Add("home.css"); %>
    </asp:Content>
    

    主站

    <asp:ContentPlaceHolder ID="CssFiles" runat="server" />
    <% CssHelper.Add("reset.css"); %>
    <% CssHelper.Add("master.css"); %>
    <%=CssHelper.Render() %>
    

    我当前的解决方案是围绕Squishit的静态bundle类的静态包装器,它将bundleBuilder保存在httpContext.current.items中。

    我很好奇这是否成功,以及如何成功。

    2 回复  |  直到 14 年前
        1
  •  12
  •   Justin Etheredge    14 年前

    我认为您可能会错过一些将CSS和JavaScript捆绑在一起的要点。如果您要在每个视图中添加CSS或JS文件,并结合母版页文件,那么您将创建大量的小捆绑包,用户每次都必须下载这些包。

    如果你没有 (我的意思是大量的javascript和css),那么你最好把所有的css和javascript捆绑在一起。这样用户就可以第一次下载它,然后缓存它。

    如果您有大量的CSS和JavaScript,那么使用命名的bundle功能并为站点的不同部分创建bundle。但关键是要尽量减少创建的捆绑包的数量,这样用户就不必一直下载文件。

    唯一的例外是移动浏览器,它们有一定的大小缓存限制。

        2
  •  1
  •   Evan Nagle    14 年前

    你可以跳上船,试着快活地说: http://chirpy.codeplex.com/

    或者,您可以修改zController方法以适应您的喜好: http://www.weirdlover.com/2010/05/11/more-better-harder-zippy-cache-controller-in-asp-net-mvc/

    不过,我同意贾斯汀的观点(而且我喜欢乌贼)。你最好创造更少,更大的捆绑包。