【问题标题】:tips for migrating a javascript app to using AMD (eg requirejs)将 javascript 应用程序迁移到使用 AMD 的提示(例如 requirejs)
【发布时间】:2012-09-06 12:59:44
【问题描述】:

我有一个 javascript 项目,大多数模块都使用一些第三方库作为“全局”依赖项(特别是 jquery 和 jquery 插件)

我想“清理”项目(将所有库表示为 requirejs 依赖项。),但是在我的情况下这是一项大任务(大量文件,大量第三方库)。

我怎样才能使迁移更容易/更快?

  • 我是否可以通过将第三方库包装在仅加载它们的模块中来“伪造”使用 amd 依赖项(使用命令!插件?)
  • 将加载第三方库的模块与直接使用全局库的模块混合使用是否安全?
  • 如果我想使事情自动化,是否有任何工具可以用来“解析”r​​equirejs 模块来告诉我是否使用了特定符号?

编辑:我最后一个问题的意思是“是否可以自动重写我的 js 文件,以便明确地导入依赖项而不是依赖于浏览器全局变量?”

【问题讨论】:

  • 你能解释一下你的最后一个问题吗?你为什么要解析模块?
  • @AndreasKöberle 我编辑了我的问题,希望它能澄清一些事情。

标签: javascript requirejs


【解决方案1】:

我可以通过将第三方库包装在仅加载它们的模块中来使用 amd 依赖项“伪造”吗

是的,你可以,RequireJS 有一个专门为此而设计的 shim 配置。

看看这篇文章,它将帮助你用 RequireJS http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/组织你的 JavaScript 代码

【讨论】:

  • 据我了解,'shim' 选项用于设置 between 第三方库的依赖关系(规范示例是 Backbone,需要加载 jquery) ,不使用“订单!”插件。我想最终使用 shim,但目前我不能,因为我不能表达我的组件依赖于一个库(例如,我没有define(["backbone"], function(Backbone))。我仍在使用带有“订单!”的 1.0。插件,但我想解决这个问题。
【解决方案2】:

我有一个similar question,关于在 AMD 模块中包装第三方代码的需要。我的结论是,在我的情况下(大型 Backbone 应用程序)没有任何好处。因此,您应该问自己是否真的需要为每个 AMD 导入 jquery。这将在您每次导入 jquery 的模块中结束,这是很多容易出错的样板代码。

因此,简而言之,将 AMD 用于您在任何情况下都会使用的代码是没有意义的。

【讨论】:

  • 不正确。将 jQuery 包含到模块的每个定义中 很有用,尤其是在单元测试方面。此外,如果您使用 Backbone,则应该使用 jQuery 的唯一文件是视图。
猜你喜欢
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多