Escrever JavaScript modular é a primeira etapa para aproximar o desenvolvimento de front-end da OOP do lado do servidor, para um programador C #, o padrão de módulo aplicado ao JavaScript significa que você pode emular o comportamento da classe .NET tendo membros públicos / privados e métodos. Com RequireJS você pode ir ainda mais longe, declarando um módulo, você pode especificar dependências para outros módulos, da mesma forma que você faz em um projeto .NET ao adicionar referências a outros componentes .NET.
Antes de um módulo ser carregado pelo navegador, o RequireJS procurará as dependências exigidas por esse módulo para funcionar, buscará de forma assíncrona do servidor todos os outros módulos necessários e, em seguida, permitirá que o navegador execute o código do módulo. Essa técnica pode ser facilmente compreendida se você pensar em como o .NET Framework usa o compilador JIT para vincular assemblies, em .NET, um .dll referenciado é carregado quando o primeiro método está tentando acessar qualquer coisa do assembly referenciado, em JavaScript, RequireJS carrega todos os módulos referenciados e os executa na ordem certa antes que o módulo principal seja executado. Além disso, RequireJS pode otimizar o carregamento da página combinando todas as dependências em um único arquivo js reduzido.
O projeto RequireJS for .NET integra perfeitamente a estrutura RequireJS com ASP.NET MVC no lado do servidor usando arquivos de configuração xml, atributos de filtro de ação, um controlador básico para classes de herança e auxiliares.
Leia mais no site RequireJS.NET