【问题标题】:Where to place jQuery code in ASP.NET MVC view page?在 ASP.NET MVC 视图页面中放置 jQuery 代码的位置?
【发布时间】:2009-08-06 09:37:19
【问题描述】:

我刚刚开始学习 jQuery + ASP.NET MVC。无论我读过什么关于 jQuery 的教程,他们都建议所有的 jQuery 代码都应该放在 head 元素中。

现在在 ASP.NET MVC 项目中,我有一个负责 head 元素的母版页。在其他视图页面中,我得到了在正文元素中绘制的内容占位符。

我现在很困惑。我应该忽略将 jQuery 保留在 head 元素中的建议,还是有一些方法可以在每个视图页面中编写不同的 jQuery 代码?

【问题讨论】:

    标签: jquery asp.net-mvc


    【解决方案1】:

    将您的 js 保存在外部 .js 文件中。这样它们就会被缓存。

    【讨论】:

    • 我应该为每个页面编写一个 JavaScript 文件吗?我会得到太多的 js 文件吗?
    • 你可以这样开始,然后重构通用功能。关键是要有一个缩小/合并构建操作,它基本上为您提供了一个站点脚本文件。个人下载越少越好。
    • 我会做一些前期设计。当然,这些页面将具有在它们之间运行的通用功能,如选项卡/菜单等
    【解决方案2】:

    您可以在母版页中包含更多内容占位符,然后您的内容页可以使用自己的 JQuery 进行填充

    所以在你的母版页的头部做这样的事情:

    <asp:ContentPlaceHolder ID="Javascript" runat="server" />
    

    然后在你的视图页面中

    <asp:Content ID="Content1" ContentPlaceHolderID="Javsacript" runat="server">
        //js here
    </asp:Content>
    

    也就是说,您也许应该考虑将您的 javsascript 包含在单独的 JS 文件中并包含它们,以稍微分离您的顾虑。

    【讨论】:

      【解决方案3】:
      • 将常用的东西重构为 jQuery 插件
      • 把相关的东西放在一起,把不相关的东西放在自己的js文件中
      • 在您编写的所有 js 文件上运行 jslint
      • 在开发过程中有一堆&lt;script src=...-tags(在你的master中)
      • 在部署到测试服务器之前,将所有 js 文件压缩并连接成一个大文件,这样它就会被缓存,而您不会收到那么多 http 调用。
      • 如果您的某个 js 文件很大并且仅特定页面需要,请从大文件中仅排除该文件。

      【讨论】:

      • 有道理。 “在所有 js 文件上运行 jsInit...”是什么意思?
      • 还有一点:如果许多视图页面都实现了 $(document).ready,那么连接 js 文件将导致所有这些函数被触发。如何解决这个问题(或者它真的是一个问题)?
      • 您确实需要每页都有一个 init 函数。在这里寻找灵感paulirish.com/2009/…
      • jslint 是一个代码验证器:jslint.com multiple $(document).ready:不,我不这么认为。通常,您的行为超出了单个页面,对于特定于特定页面的行为,您可以为该页面的 body 元素指定一个类并检查它是否存在。
      【解决方案4】:

      我会将它们放在外部并使用&lt;script type="text/javascript" src='&lt;%= Url.Content(~/scriptlocation) %&gt; /&gt; 方法来引用它们

      【讨论】:

      • 投反对票的人,请你写下投反对票的理由吗?
      • 我不是反对你的人,但有一个明显的错误。 JavaScript 文件是通过 包含的
      • @korchev,虽然这是真的,但 stackoverflow 的一大优点是您可以编辑其他人的帖子
      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多