【问题标题】:JavaScript code in ASP.NET MVC Partial Views (ASCX) or not?ASP.NET MVC 部分视图 (ASCX) 中的 JavaScript 代码与否?
【发布时间】:2010-05-23 19:01:04
【问题描述】:

当您有许多局部视图和特定于它们的 JS 代码时,是否有放置 JavaScript 代码的“最佳实践”?

我觉得我正在创建一个维护噩梦,因为我有许多部分视图,然后是一堆独立的 JavaScript 文件,当部分视图发生变化时需要同步这些文件。出于维护目的,对我来说,将 JS 代码与部分视图一起放置似乎更好。但是后来我违反了普遍接受的做法,即所有 JS 代码都应该在页面底部而不是混合在一起,而且我最终会得到对同一个 JS 文件的多个引用(因为我会在每个 ASCX 用于智能感知)。

有人有更好的主意吗?

【问题讨论】:

    标签: c# asp.net-mvc partial-views ascx


    【解决方案1】:

    我不知道是否有比您在问题中已经陈述的要遵循的更多已确立的“最佳实践”。

    最近我对一些需要大量 ajax 和 UI js 帮助的复杂“控件”采用了 Html Helper 方法来处理常见的 js/jQuery 块。在我的most recent case 中,我有两个这样的“控件”,每个都需要 3 个脚本块。

    我如何有这个助手安排,我可以使用这样的语法:

        <%-- // jQuery for Patron --%>
        <% =Html.MattyJq().DivListItemSingleSelector("selectPatronItem", "div#matchingPatrons",
            "patronsPrevSelectedID","PatronID") %>
        <% =Html.MattyJq().EmptyTextInputHelper("patronSearch", "patronsFilterSendEmpty") %>
        <% =Html.MattyJq().TextChangeDynamicUpdaterSelect("patronSearch","div#matchingPatrons",
            "/patrons/getpatronsitems",500,"patronsFilterSendEmpty","patron",
            "patronsPrevSelectedID","selectPatronItem") %>
    

    我的 MVC“/Scripts”文件夹中有这个“模板”文件夹,我在其中放置脚本块,然后用转义序列标记所有“变量”,这样我就可以在我传递的变量中交换/正则表达式进入助手(上图)作为参数。
    这样我可以重用模板,并且我的视图更轻/更清晰。您会注意到那里的帮助程序中的常见参数 - 例如,当我有多个脚本块共有的 js 函数名称或 vars 时。这是一种将孤立的脚本块“链接”在一起的方式。
    最后,我有一个用于帮助程序的公共部分,如果我选择,我可以使用解析器“检查”生成的 js/jQuery - 在我的情况下,我使用 .NET YUI Compressor 来缩小发布版本中的 js - 我敢肯定如果您愿意,您可以在此处添加一些逻辑以确保所有脚本都位于页面底部。

    【讨论】:

    • 这与我的做法类似。我倾向于为谨慎的功能区域提供特定的 js 文件,然后使用发布前运行的脚本一次性缩小和合并文件。它确实为部署增加了另一个步骤,但有助于将页面必须发出的请求数量保持在最低限度。
    【解决方案2】:

    使用单个 JS 和不显眼的 javascript 将行为分层到您的 html 页面。

    到处乱扔 js 真是一场维护噩梦,即使是 firebug。

    请记住,在进行编程时,请始终将代码的维护者视为暴力精神病患者。 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多