是否可以在没有 RequireJS 的情况下使用最新版本的 JQuery、Underscore 和 Backbone?

Is it possible to use the most recent versions of JQuery, Underscore and Backbone without RequireJS?

到目前为止,我有一个兼容的库组合 (JQuery, Underscore, Backbone)。他们工作没有任何问题。 但是这些版本很旧,我想升级到更新的版本。当我替换库时,出现了一些奇怪的错误。我从所有三个下载了最新版本,但没有用。 我用谷歌搜索了一些解决方案,但我只找到了一些带有“RequireJS”的解决方案。但是我不想重新组织我的整个应用程序,所以现在我要求一种无需“RequireJS”的方法,或者一种简单的集成方法。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Lib Test</title>
<script type="text/javascript" src="jquery-1.11.2.js"></script>
<script type="text/javascript" src="underscore-1.8.3.js"></script>
<script type="text/javascript" src="backbone-1.1.2.js"></script>
<script type="text/javascript" src="myotherfiles.js"></script>

<script type="text/javascript">
     some code...
</script>
</head>
<body>
</body>
</html>

我的 index.html 看起来像这样,但是当我 运行 我的个人代码时,我只收到来自 underscore 的错误backbone.

其中一个错误是:

TypeError: n.replace is not a function
in underscore-1.8.3.js

编辑:

我发现了我的错误。我与不再支持的已弃用方法有关。 -.- 但我会使用 Requirejs 来避免进一步的冲突。我的项目会大大增强,但在某些时候,它会变得太大。我深入研究了 Requirejs,我认为它值得一试。

Jquery、Backbone 和 Underscore 是没有外部依赖的库。它们可以独立于您编写的任何其他 javascript 代码使用,您可能遇到的唯一冲突是当您在全局范围内定义一个变量时,其名称与本例中库导出的变量同名 "$ ", "Backbone" 和 "_".

Require.js 是一个允许您编写模块化 javascript 代码、异步添加脚本、管理它们之间的依赖关系并避免污染全局范围的库,但它与任何其他库没有直接关系所以它应该不会造成任何问题所以答案是 是的,你可以使用没有 require.js.

的库

就我个人而言,我没有用过 Backbone,但我与其他人一起工作过 require.js 和没有 require.js 都没有任何问题。

{编辑}

Backbone 对 underscore.js 有很强的依赖性,但仍然与 require.js 无关,并且可以独立于它工作。

我试过你的代码(显然没有你的脚本),它没有报告任何错误:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Lib Test</title>
<script src="https://code.jquery.com/jquery-1.11.2.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script>

<script type="text/javascript">

     console.log('jQuery is',jQuery);
     console.log('underscore is',_);
     console.log('backbone is',Backbone);

</script>
</head>
<body>
</body>
</html>

这意味着错误可能出在您的脚本上,它试图以一种意想不到的方式使用下划线方法。