【问题标题】:Reuse of javascript code with asp.net使用 asp.net 重用 javascript 代码
【发布时间】:2011-07-22 00:05:19
【问题描述】:

我最近接手了一个用 asp.net 编写的网站的开发工作。在开始这个工作之前,我很少花时间在 Web 应用程序上。由于我没有这方面的经验,所以不敢批评,但我觉得这个网站写得很糟糕。

查看以下由visual studio生成的搜索结果:

  \website\js\ADMIN_userprofile.js(715):function sendInvite() {
  \website\js\ADMIN_userprofilePro.js(745):function sendInvite() {
  \website\js\mycontactdetails.js(466):function sendInvite() {
  \website\js\mycontactdetailspro.js(466):function sendInvite() {
  \website\js\mycontactrequestspro.js(676):function sendInvite() {
  \website\js\mycontacts.js(239):function sendInvite()
  \website\js\mycontactspro.js(240):function sendInvite()
  \website\js\mygroups.js(103):function sendInvite()
  \website\js\myprofile.js(715):function sendInvite() {
  \website\js\myprofilepro.js(745):function sendInvite() {
  \website\js\search.js(55):function sendInvite() {    
  \website\js\searchpro.js(55):function sendInvite() {                         
  \website\search.js(44):function sendInvite() {

这些功能中的每一个都是相同的。每当有人觉得另一个页面需要 sendInvite() 功能时,他们就会复制整个代码块。在相关的 .aspx 页面中,通常有一个可以单击的链接来调用该函数,还有几个由 javascript 调用的隐藏弹出窗口,用于显示诸如“您确定要发送邀请吗?”之类的内容。以一种与网站设计的其余部分一致的方式。

克隆代码很糟糕,而且很难维护。但是,我不知道如何使它变得更好。我可以将这里的所有功能 - javascript 和弹出窗口的东西 - 包装到一个设备中,我可以在需要的地方引用它吗?我已经阅读了有关为此使用 .ascx 页面的信息(在我继承的源代码中很少使用),但我不知道在包含 javascript 的情况下使用这些页面是否安全。

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    不寒而栗

    没有什么比到处重复代码更糟糕的了。

    最简单的做法是将函数复制到单个 js 文件中,从所有其他 js 文件中删除代码,并确保新脚本文件包含在调用使用它的函数之一的任何页面中在 HTML 中使用 script 标签。

    【讨论】:

      【解决方案2】:

      尝试类似 javascript 的模块管理器

      然后将你的函数放在一个模块中,并在你的页面中require该模块。

      【讨论】:

      • 谢谢,我会在其他一些有其他javascript函数调用的函数的地方试试这个。由于这个特定的功能更面向外部,我将直接包含在每个页面中。
      【解决方案3】:

      是的,伙计,只需将方法放入 .js 文件中,将其弹出到解决方案中的文件夹中,然后在您需要的每个 .aspx 页面中导入即可:

      <script type="text/javascript" src="<YOUR_LOCATION>"></script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 2017-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多