C# 在服务器控制中分离Javascript

C# 在服务器控制中分离Javascript,c#,javascript,asp.net,.net-4.0,custom-server-controls,C#,Javascript,Asp.net,.net 4.0,Custom Server Controls,我试图通过将一个变得相当复杂的“Web用户控件”迁移到一个独立的“服务器控件”项目中来重构代码。此外,控件中还包含一些javascript逻辑 因此,我想就以下方面获得一些建议: 如何以及在何处从Web用户控件放置(迁移)现有javascript逻辑 如何在逻辑上清晰地分离ASP.net页面的现有javascript?如有任何目录结构建议,将不胜感激 请容忍我,因为我是个初学者 这个问题的答案很长,很复杂,而且根据具体情况而有所不同。尽管如此,在这样的代码库上工作之后,我学到了以下几点: 写测试

我试图通过将一个变得相当复杂的“Web用户控件”迁移到一个独立的“服务器控件”项目中来重构代码。此外,控件中还包含一些javascript逻辑

因此,我想就以下方面获得一些建议:

  • 如何以及在何处从Web用户控件放置(迁移)现有javascript逻辑
  • 如何在逻辑上清晰地分离ASP.net页面的现有javascript?如有任何目录结构建议,将不胜感激
  • 请容忍我,因为我是个初学者


    这个问题的答案很长,很复杂,而且根据具体情况而有所不同。尽管如此,在这样的代码库上工作之后,我学到了以下几点:

  • 写测试:对于任何遗留代码库来说都是必不可少的。您必须在更改代码之前编写测试。如果它像你所说的那样紧密耦合,那么不编写测试将给你2个月的时间进入项目,当你的变更的小副作用开始潜入生产时

  • 使javascript不引人注目:将所有javascript放在.js文件中,远离服务器和结构。这样,在编写服务器端代码时,您就不用担心一件事了

  • 分而治之:这可能是任何人都能给你的最好的建议。我曾经在一个有5000个代码行文件的项目中工作,其中html、javascript和visual basic都混合在一起。在那里,我了解到,通过将这些巨型类提取到100行文件中,我可以更好地理解每个块的意图,并轻松找到重复

  • 手边有个BA:有时整个网页/类都被破坏了,重写其中的一部分是将其恢复到可维护状态的唯一方法。有人能够解释业务逻辑非常重要,尤其是在这种情况下,因为他们可以告诉您类应该做什么,为什么要做,以及哪些部分是过时的。在我谈论的这个项目中,我们开始重写某些页面。有了BA,我们可以删除大约30%的代码,因为它已经过时了。在一个25万行的代码库上有30%的工作要做是非常有用的,尤其是在最后期限即将到来的时候

  • 不要使用web控件,使用html/jquery和处理程序:asp.net web控件与web标准不兼容。他们不能很好地使用ajax,也不能很好地使用面向SPA的方法。如果您正在为此进行重构,请使用html输入等价物替换web控件,然后使用javascript(jQuery、ext/sencha、dojo等)添加所需的行为。然后,您可以在服务器上编写可以使用AJAX调用的处理程序

  • 你不应该独自完成这项工作:你应该是一个团队的一部分,这个团队有一个架构师来设置要使用的路线图和模式;了解javascript、html和一些.Net的前端开发人员;了解c#和.Net、SQL Server或数据库技术的后端开发人员以及了解html5和css的设计师,因此他可以提出更好的文档结构设计方法

  • 你可能根本不应该这样做:如果你是一个像你所说的那样的初学者,你应该从事正确制作的web项目,学习如何编写正确的代码。我当然不是想侮辱你,但这是一项艰巨的任务,有很多复杂的事情,也有很多陷阱。这些项目通常是由VB6程序员开发的应用程序,在过去十年的初期,这些程序员会尽快进入网络潮流,因此会将大量过程代码复制并粘贴到多个类中,并采用奇怪的方式来做事情,就好像程序员对OOP知之甚少(让我们面对现实,至少在ASP.net刚出现的时候,大多数VB开发人员没有或没有这样做)。负责人应该是经验丰富的ASP.net开发人员,对现代web技术有着扎实的理解,并且希望有经验使遗留项目与最新的行业标准同步


  • 这实际上取决于您的javascript,所以请向我们展示您的代码。