Using RequireJS alongside non-AMD JavaScript files
我正在尝试将一个javascript重页转换为使用typescript,并使用requirejs来管理模块依赖项。
我遇到的问题是,除了类型脚本文件之间的相互依赖性之外,页面还依赖于一些与系统其他部分共享但尚未转换为AMD的常见JavaScript文件。
把非AMD脚本放在普通的
如果这是个坏主意,有什么更好的方法来处理这个问题?我需要每个脚本的AMD和非AMD版本吗?或者我是否需要转换所有脚本以便它们可以选择调用
RequireJS的最新版本允许您假装普通JS文件实际上是AMD模块,它们什么也不返回。
我尝试的最新版本-2.1.4-实际上允许您像处理模块一样处理普通的JS文件。例子:
1 2 3 4 5 6 7 8 9 10 | require( [ 'path/to/module' // <- AMD module ,'path/to/plainjs' // <- actually a plain JS file ] , function(module, plain){ // module will be per define in that file. // plain will be 'undefined' type } ) |
您可以将类似refs的模块自由地混合到普通JS文件中。只要它们按正确的顺序加载,它们将更新它们更新的全局数据,您就可以得到所需的数据。例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | require(['js/underscore'], function(){ // nesting to insure Underscore, a prereq to BackBone // completes loading before backbone starts require( [ 'path/to/module' // <- AMD module ,'js/backbone' // <- actually a plain JS file ] , function(module){ // module will be per define in that file. window.BackBone // is available for you } ) }) |
号
注意,尽管Requirej用于要求您在普通JS文件的末尾添加".js"以表明它们是普通JS,但在上面的示例中,您不使用".js"这一无扩展模块引用允许模块ID跟随
您可以在脚本标记中手动包含其他脚本,但这可能成为您的团队总是中断的原因(有人忘记添加特定脚本)。
您可以从"明确键入"中引用require.d.ts定义,并直接调用