使用Backbone.js/Underscore应该选择哪些脚本加载器(AMD或非AMD)?

6

一周前,我开始学习如何使用 Backbone.jsUnderscore.js 中的 require.js。

这真的很困难,但三天前我读到 Underscore 将不再支持 Require.js(AMD)!现在我有点困惑。

我真的很喜欢脚本加载器的概念,不想错过它!

有人已经成功地将脚本加载器与 Backbone.js (0.5.3) 和 Underscore(1.3.0) 一起使用了吗?

谢谢你的帮助!

链接:另一个解决方案这里

6个回答

4

@CMP 因为它已经合并到主分支,所以注释已更新。 - tbranyen

2

即使underscore不支持AMD模块样式,您仍然可以使用require.js使其工作。

您仍然可以通过代理模块将其作为普通外部JavaScript源加载。

它的要点是这段代码:

// Filename: libs/underscore/underscore
// Loads the original underscore file from the libs/underscore folder
define(['order!libs/underscore/underscore-min'], function(){
  // Tell Require.js that this module returns a reference to Underscore
  return _;
});

完整的教程可以在这里找到:http://backbonetutorials.com/organizing-backbone-using-modules/

该教程是关于如何使用模块组织Backbone的内容。

我试过了,但不幸的是我正在使用最后一个稳定版本的underscore(1.3.0)!而Thomas Davis则在使用Underscore.js 1.1.7! - 3logy
3
请看这个 Github 上的讨论帖,Underscore 1.3.0 版本中删除了对 AMD 的支持,但仍然可以通过代理或 shim 实现,正如我所说的那样。链接地址是:https://github.com/documentcloud/underscore/commit/0d4b1247c45083c695cab4242c084a97aa600221#commitcomment-857941... 所以它仍然应该是可行的。 - Sander

1

Require.js 在我看来是最好的选择,因为它包括一个优化器(压缩和合并)并允许您将您的 Backbone 代码解耦成模块。

如果您不知道如何将 Require.js 与最新版本的 Backbone.js 和 Underscore.js 集成,请查看我在 Github 上创建的样板代码。请注意,我使用 John-David Dalton 的 lodash 而不是 underscore,因为 lodash 提供更好的性能和自定义构建过程。我还使用 Require.js 2.0 提供的 Shim 配置,使非 AMD 兼容脚本(如 Backbone)与 AMD/Require.js 兼容。

https://github.com/gfranko/Backbone-Require-Boilerplate


1

非常感谢jcreamer!但是你使用的Underscore.js版本是1.2.2,而我的应用程序已经在Underscore 1.3.0上运行了! - 3logy

0

我找到了一個真正對我有效的解決方案: Tim Brayen

define([
'jquery',
'use!underscore',
'use!backbone',

我使用它来添加jQuery插件、自定义JS、Underscore和Backbone(无需更改代码!)...但似乎在使用jQuery Mobile时出现了问题...

你也可以看一下wrap,我还没有测试过它!


如果在jQuery mobile上仍然存在问题,您能否在GitHub存储库中提交一个问题? - tbranyen

0

1
谢谢你,Ricardo!我会尝试使用labjs。我很快会回邮件告诉你我的体验。 - 3logy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接