【问题标题】:Is it possible to use the most recent versions of JQuery, Underscore and Backbone without RequireJS?是否可以在没有 RequireJS 的情况下使用最新版本的 JQuery、Underscore 和 Backbone?
【发布时间】:2015-04-23 11:31:21
【问题描述】:

到目前为止,我有一个兼容的库组合(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 看起来像这样,但是当我用它运行我的个人代码时,我只收到来自 underscorebackbone 的错误。

其中一个错误是:

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

编辑:

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

【问题讨论】:

  • 您是否检查了哪个文件出错,以及那里调用了什么下划线函数?可能是您正在使用的功能之一已被弃用..
  • 您应该在没有您的个人代码的情况下尝试上述方法,这样您就可以确定库是否是错误的来源。
  • 我尝试只加载库,它成功了。我在用于测试库的非常基本的初始化方法中有一个已弃用的函数。

标签: javascript jquery backbone.js requirejs underscore.js


【解决方案1】:

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

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

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

{编辑}

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

【讨论】:

  • Backbone 确实需要下划线。在服务器端使用时,它可以在没有 jQuery 的情况下运行。如果您查看annotated source,您可以自己看到。
  • 已编辑。谢谢指正。尽管问题是关于 require.js 与这些库的结合使用,而不是 Backbone 本身的使用。
【解决方案2】:

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

<!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>

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

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多