如何在 .NET 应用程序中使用 RequireJS?

Posted

技术标签:

【中文标题】如何在 .NET 应用程序中使用 RequireJS?【英文标题】:How do you use RequireJS in a .NET application? 【发布时间】:2012-05-16 22:58:39 【问题描述】:

我有以下文件夹结构:

->自定义

图表 ...JS 文件 增强 ...JS 文件 一般 ...JS 文件

->库

jquery jquery.ui

jquery-1.7.2.js 需要js-1.0.7.js order.js

我有一个 .NET 应用程序,其中包含许多 ascx 控制文件,这些文件以传统方式引用 JS 文件,方法是在脚本标记中调用 JS 文件,然后从该文件中调用某些函数。

问题是我应该(或者我可以)如何实现 Require JS 以便我可以:

1) 在所有图片、css和html加载完成后调用JS文件,然后...

2) 使用 AMD 的代码模块化概念

需要指出的是,在每个 ascx 文件中最多有 5 个 ascx 文件,其中一些包含 ascx 控件。很多 ascx 文件里面都嵌入了 javascript,很多 .master 页面也有 JavaScript 文件引用。

我无法更改网站的结构(因为网站很大),所以我需要找到解决方案。

谢谢

【问题讨论】:

阅读您的问题我可以告诉您,如果您选择使用 requirejs,将会有很多工作要做。 Requirejs 是一个非常好的 Web 应用工具,但它对非良好结构的应用程序并不友好。 我现在正在将 requireJS 实现到一个 .NET 应用程序中并取得了巨大的成功,艰巨的工作是转换所有调用 javascript 的页面,并且如果它包含大量 JS 代码或创建用于 tat 调用的模块,或者, 将代码包装在 require 调用中。直截了当,但是转换网站的工作量很大。 查看这个项目RequireJS .NET 这是完美的,因为我们正在为我们正在构建的项目实施(开始实施)一个 MVC 框架。我已经转换了我们必须使用 requirejs 的所有代码,但这会更进一步,并且会很有用。 RequireJS 实施更新:随着 select.bestinvest 网站需要更多客户端 JS 繁重编码的出现,requireJS 在执行模块化编码方面非常棒,而不仅仅是一种自上而下的方法并将所有在一个文件中。尽管将所有 JS 转换为在 RequireJS 中运行需要做大量工作,但付出的努力是值得的。 【参考方案1】:

这称为重构... v. 将以前未架构的解决方案重写为架构良好的解决方案有时会很痛苦。

【讨论】:

【参考方案2】:

这更像是从 .NET Web 浏览器控件调用“InvokeScript()”的答案。但是谷歌把我带到了这里,有人可能会觉得这很有用。

首先,像往常一样定义新的 AMD 模块。将你称之为“InvokeScript()”的任何东西作为一个函数放在这个模块中:

define (... 
    var mySpecialHandler = function() 
        // do stuff
    ;
    return 
      mySpecialHandler: mySpecialHandler
    
);

然后当你开始使用它时,使用在加载模块时最终设置的全局命名空间:

require(['app'], function (app) 
    window.mySpecialHandler = app.mySpecialHandler;
);

【讨论】:

以上是关于如何在 .NET 应用程序中使用 RequireJS?的主要内容,如果未能解决你的问题,请参考以下文章

RequireJs不适用于mysql变量

带有 requirejs/AMD 的 Webpack

.Net:如何在 Windows 窗体应用程序中使用 WPF 用户控件?

如何在 .NET 3.5 项目中引用 .NET 4.0 程序集

如何在 .NET 应用程序中使用 RequireJS?

如何使用c#在asp.net网页中显示C程序错误