问题标签 [amd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4474 浏览

javascript - AMD 加载程序如何在后台工作?

所以我现在一直在使用 require.js,但我意识到我实际上不知道它是如何工作的。它说它是一个 AMD 加载程序。

我确实理解 CommonJS 是同步的,这意味着它在加载时会阻止其他代码的执行。另一方面,AMD 是异步的。这就是我感到困惑的地方。

当我定义一个模块时,它必须加载 a,b,c 才能执行回调。异步在这里如何工作?

  1. 当它必须首先加载这三个依赖项时,它不是同步的吗?
  2. 这是否意味着AMD异步加载a,b,c然后检查这些文件是否已加载(不关心顺序)然后执行回调?
0 投票
1 回答
89 浏览

requirejs - 尽管文件正在加载,但仍需要给出“未加载”消息

我有一个定义如下的模块:

在该模块中有一个名为 loadView 的方法,它分配一个变量,如下所示:

因此,我们可以看到这两个View/SidebarView/ControlBar都被定义调用(第一个参数)加载。当我使用时require('Sidebar'),我没有收到任何错误,但如果我使用,require('ControlBar')我确实得到了臭名昭著的:

( http://requirejs.org/docs/errors.html#notloaded )

我已经重新编写、复制和粘贴,验证了它是否已加载到 Firebug 等等,但我一生都无法弄清楚为什么我 100% 的时间都会收到此错误。

0 投票
1 回答
183 浏览

requirejs - AMD / RequireJs 在特定页面上添加体面

有没有办法让一个主脚本像网站所有页面的“全局”脚本一样,同时在使用 requiere.js 时仍然有特定的页面脚本。

这将在所有页面上调用

在其他页面上,我想添加其他依赖项,而不必创建不同的 main.js 脚本。

有什么办法吗?

编辑:刚刚找到了一种到目前为止似乎运行良好的方法:

还有其他想法吗?

0 投票
1 回答
259 浏览

javascript - 使用 Socket.io 的异步模块加载(AMD)

我正在开发一个 Web 应用程序并使用 Socketio 测试 WebSocket 之类的东西。目前我正在考虑一个像 Socketio 的 requierejs 解决方案。它工作正常,我可以加载 Javascript 文件并使用“new Function()”(安全性?)解析它们。如果我使用“正常”(使用脚本元素)AMD 加载文件,性能会更好吗?

谢谢

0 投票
2 回答
2578 浏览

javascript - 默认情况下,如何将主干视图设置为单例?

我所有的 Backbone.Views 仅在其最终状态下使用一次。(项目视图除外)。

目前我以这种方式将 Backbone.Views 处理为 Singleton:

不幸的是,将这个小函数作为依赖项添加到我的存储库中的每个 amd 模块并不是很好。

还有另一种方法来处理这个吗?也许覆盖基本视图类?

0 投票
3 回答
887 浏览

javascript - RequireJs:错误的模块顺序

我得到了以下 router.js:

路由器在 main.js 文件中被调用,该文件在 requirejs 配置中被标记为第一个依赖项:

在某些方面,我现在想做:

比我收到此错误消息:

更新: 我为每个模块添加了一个 console.log。所以我知道模块的执行顺序。我提到 requirejs 有错误的顺序:

代替:

让我们看看我如何解决这个问题

UPDATE2: 我现在将路由器事件绑定部分包装到一个 setTimeout 循环中:

看看它的工作原理!

这确实只是一个修复,但仍然是一个修复:)

0 投票
1 回答
675 浏览

javascript - 正确使用 RequireJS、Coffeescript 和 Revealing Module Pattern

我在下面定义了以下 Coffeescript 代码,它使用 RequireJS 定义了一个函数:

它产生以下内容:

我想我遇到的问题是由 Coffeescript 代码生成的自执行函数。这会导致我可能无法跟踪的问题吗?或者这是正确的。

谢谢你。

0 投票
1 回答
1160 浏览

javascript - Dojo AMD 加载程序执行定义具有空/缺少依赖项的回调

我是 Dojo 的新手(1.7)并且完全愿意接受我是个白痴(我只是希望不是)。我更愿意为 AMD 使用 require.js,但我使用的是第 3 方 (ESRI) 映射 API,它强制 Dojo 在我身上使用并使用它的 AMD,这意味着如果我尝试使用 require.js 也会出现严重错误。

我有一个define依赖于 Backbone 和 Underscore 的模块(我最终可能会使用 Dojo 的 MVC,但我不认为这个问题是 Backbone 特有的,所以我想弄清楚它)。奇怪的是,当模块加载时,Dojo 似乎在我的内部执行回调define,此时依赖项(下划线和主干)是空对象{}。我的回调中发生错误,return Backbone.View.extend...因为 Backbone 的View属性不存在。

我知道 Backbone 依赖于 Underscore,到目前为止,我不知道如何确保在不使用 hacky-looking 的情况下首先加载 Underscore require({async:0},['test1.js','test2.js'...。但是,在这种情况下,Underscore 也是一个空对象,所以在define加载任何依赖项之前都会执行 's 回调???

编辑在此错误发生之前,我在控制台中看到了 Underscore 和 Backbone HTTP 请求以及 200 个响应,所以我假设它们的引用没有问题。

具体的东西...

索引.html:

应用程序.js:

主视图.js:

谁能(请)告诉我这里发生了什么?此外,在 Backbone 之前加载下划线的任何替代建议都会非常有帮助!

0 投票
3 回答
2584 浏览

javascript - 使用 RequireJS 在 JavaScript 中实现 AMD

我对 RequireJS 完全陌生,所以我仍在努力寻找解决方法。我有一个运行良好的项目,然后我决定使用 RequireJS,所以我把它搞砸了 :)

顺便说一句,我有几个关于 RequireJS 以及它如何计算一切的问题。我在脚本文件夹中有文件层次结构:

在此处输入图像描述

我的_Layout.cshtml文件中有以下行:

这是我的 bootstrap.js 文件:

然后我使用该define函数实现了我的模块。一个例子是 pubsub 模块:

我基本上对我的所有 javascript 文件都做了同样的事情。请注意,包含 pubsub 模块的实际文件jquery.pubsub.js位于/Scripts/utils文件夹内。其他模块也是如此。

更新:

好的,我现在更新了我的引导文件,因为我我了解什么是 shim 以及为什么我应该使用它。但它仍然对我不起作用,尽管我还宣布了所有我认为会导致我无法正确使用它们的路径。问题是它甚至没有进入require引导文件中的回调,所以我想我在配置或定义模块的方式上仍然存在问题?

0 投票
2 回答
8461 浏览

javascript - 如何使用 requireJS 访问模块变量?

我使用 Javascript 已经有一段时间了,我只是第一次尝试使用模块和 requireJS,我很难理解新的设计模式!

这是我的第一次尝试:

和 testModule.js

这返回 0,我期待 11。我错过了什么?

当然,这也是一个简化的例子。我想创建多个对象,每个对象都应该保持自己的变量处于状态。例如,如果我想要一个模块将列表附加到容器DIV,但还包含添加、清除或查询该列表中数据的函数,我应该如何构造模块函数,以便每个实现保持自己的状态。

谢谢