将 RequireJS 与遗留代码一起使用
Using RequireJS with legacy code
我正在处理一个非常大的项目,它使用:
- 包含带有脚本标记的 JavaScript 文件的旧版 JSP 页面
- 在没有 RequireJS 的情况下使用其他 JavaScript 模块的主干模型和视图
我们现在想开始使用 RequireJS 和 jQuery、BackboneJS 和 UnderscoreJS 来开发我们开发的所有内容,但我们没有资源来重写所有遗留的 JSP 页面。我们可能有时间重写我们已经开发的骨干模型和视图。
问题是,对于我们的遗留代码(上面的 1 和 2),我们将所有 javascript 文件包含在一个巨大的文件中并交付给浏览器。这个大文件必须能够与我们的新 RequireJS 模板共存,但是我如何才能将大文件的某些部分分开,以便我可以使用 RequireJS 将它们与模板一起使用?无需重写使用文件这部分的所有页面,也不必使用重复的代码。
谢谢!
我是否完全掌握了手头的问题,但我认为 RequireJS 的shim
或map
函数会帮助你。
从巨大的javascript文件中提取新模块中所需的部分。然后告诉 RequireJS,你的巨大的 javascript 文件是这个使用填充码的新模块的依赖项。像这样:
requirejs.config({
shim: {
'new-module': {
deps: ['huge-javascript-file'],
exports: 'NewModule'
}
});
填充程序文档:http://requirejs.org/docs/api.html#config-shim
当只有部分新代码必须使用旧的大文件时,map 函数可能很有用。查看此文档:http://requirejs.org/docs/api.html#config-map
我不认为有一种真正的方法可以实现这一点,但我通过围绕全局范围的代码定义模块"外观"来解决类似的问题。假设您的旧脚本定义了一个名为 foo
的全局变量。您可以定义 AMD 模块并从中导出该变量:
//foo.js
define(function() {
return window.foo;
});
//bar.js
define(['foo'], function(foo) {
//do something with foo
});
这样,您只需在每次需要使用现有全局定义代码的新段时编写单行外观,而不会破坏期望全局定义相同代码的现有代码。随着时间的推移,您可以将实际实现移动和重构到模块中,而不会破坏使用者代码。
- 为什么不't我的ruby代码与javascript文件一起插入
- PHP、Javascript和SQL代码混杂在一起
- 无法使autocompletion与bootstrap和php代码点火器一起工作
- Fancybox图像点击可以独立工作,但不能与我的其他代码一起工作
- 如何让标记和谷歌代码漂亮地工作在一起
- 在 jQuery 中将多个函数与相同的代码组合在一起
- 如何将 JSLint 与针对不同引擎的代码一起使用
- 如何将两个函数的代码与不同的参数组合在一起
- 如何将同构的 commonJS 代码与 webpack 捆绑在一起
- 与柏拉图一起进行JavaScript代码可维护性评级
- 将两个对象与多个节点组合在一起——为什么这段代码有效
- jQuery或其他第三方库是否应该与逻辑代码捆绑在一起
- 如何将css代码存储在与Javascript一起使用的php变量中
- 将两个代码集成在一起时,Javascript函数不起作用
- 如何将.getBounds()函数与以下代码一起使用
- javascript代码是't与jquery一起放置时工作
- 我可以做些什么来让我网站上的Javascript代码与Firefox一起工作
- 如何将click jquery函数与此代码一起使用
- CSS代码应该与插件一起使用还是在子主题中使用
- 如何使requirejs与jasmine和blanketjs一起工作以覆盖代码