将 RequireJS 与非 AMD JavaScript 文件一起使用
Using RequireJS alongside non-AMD JavaScript files
我正在尝试将一个JavaScript繁重的页面转换为使用TypeScript,并使用RequireJS来管理模块依赖项。
我遇到的问题是,除了TypeScript文件之间的相互依赖关系外,该页面还依赖于一些常见的JavaScript文件,这些文件与系统的其他部分共享,尚未转换为AMD。
将非 AMD 脚本放在 Require 标签上方的普通<SCRIPT>
标签中,并假设它们已加载,这是否非常危险?
如果这是一个坏主意,那么处理这个问题的更好方法是什么?我是否需要每个脚本的 AMD 和非 AMD 版本?还是我需要转换所有脚本,以便它们可以选择调用define()
?
最新版本的RequireJS允许您假装普通JS文件实际上是AMD模块,什么都不返回。
我尝试的最新版本 - 2.1.4 - 实际上允许您将纯JS文件视为模块。例:
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
}
)
您可以自由地将类似模块的引用混合到普通的JS文件中。只要它们以正确的顺序加载,它们就会更新它们更新的任何全局变量,你就会得到你想要的。例:
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
}
)
})
请注意,虽然 RequireJS 曾经要求您在纯 JS 文件的末尾添加".js"以表明它们是纯 JS,但在上面的示例中,您不使用".js" 这种无扩展模块引用允许模块 ID 跟随 paths
和maps
别名,而带有 .js
的 id 被视为文字,永远不会被翻译。
您可以手动将其他脚本包含在脚本标签中,但这可能会成为您的团队总是出现问题的原因(有人忘记添加特定脚本)。
你可以从绝对类型引用require.d.ts定义,并直接调用require
函数而不是import
语句,这可能会使事情对你来说更加一致。
- 将webpack和babel与父项目目录中的文件一起使用
- 为什么不't我的ruby代码与javascript文件一起插入
- 将HTML文件中的变量与外部JS文件一起使用
- 安全地包装JS文件,这样当它们连接在一起时,它们仍然可以工作
- 如何将遗留的js文件与webpack捆绑在一起
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 将本地文件与媒体源一起使用
- 我想通过单击按钮将 2 个 php 文件链接在一起
- 为什么我的css文件不能与MCV项目一起使用
- 我可以把所有的javascript.js文件捆绑在一起吗
- 使用Realm React Native查找Realm文件的路径,以便与Realm Browser一起使用
- 如何使用内容脚本将另一个html连同css文件一起注入到html中
- PHP,X-SendFile:将文件与输出文本一起发送到浏览器(通过echo)
- 如何用JavaScript中的Ajax调用代替加载脚本文件(将YQL与JavaScript一起使用)
- Twitter Bootstrap js文件已加载,但无法与requirejs一起使用
- 如何将javascript文件与ng-include模板一起加载
- 如何在 AngularJS 中与其他参数一起上传 http.post 的图像文件
- JavaScript 文件哈希值与文件的一部分一起生成
- 将每个函数与 getJSON 一起使用一个内部文件
- JavaScript 文件换行符与 PHP 一起使用