问题标签 [almond]

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 投票
0 回答
221 浏览

javascript - 将一个模块加载到另一个模块时,RequireJS模块加载乱序

我为 AMD 编写了一个使用 requirejs 的 Web 应用程序:

然后,我使用 almond 和 r.js 使用构建配置将其编译为单个 javascript 文件:

接下来,我想在另一个应用程序中使用这个插件,同样基于 requirejs。在这里我有:

但是,代码无序加载:

  1. 加载 jquery 和插件 js 文件。
  2. 执行 $('#plugin').plugin(options)。
  3. 运行 (function($) { $.fn.plugin = function(options) { return this; }; })(window.jQuery);

显然,(2) 是错误的,因为需要先运行 (3)。问题是,为什么?

更新 1

一个建议的解决方案是将第一个代码块更改为:

编译后变成:

不幸的是,现在这个块中的代码永远不会被执行。

0 投票
1 回答
1229 浏览

javascript - requirejs 不使用 shim 将本地 jquery 暴露给 jquery 插件

我使用 require 编写了一个 jQuery 插件,将其包装在杏仁中,并通过另一个应用程序中的 shim 配置加载它。不幸的是,require 将全局 jQuery 暴露给插件而不是本地的。我的代码:

插件.js

main.js

shim 不应该加载将本地 jQuery 模块暴露给插件全局范围的插件代码吗?

0 投票
1 回答
265 浏览

javascript - 由于异步性,将杏仁模块暴露给窗口对象失败

我正在开发一个 JavaScript 项目,我们使用 requirejs 来管理我们的代码。我们创建的产品将在 3rd 方网站上使用,因此我们不能假设存在 AMD 兼容库。为了解决这个问题,我们将almond包含在目标文件中,并将我们的主模块暴露在window. 我们的构建创建的文件如下所示:

当构建一个想要使用的站点时,mainModule会抛出一个错误,因为当站点特定代码尝试访问window.mainModule它时尚未设置。在某些情况下,模块确实已经初始化并且代码可以正常工作。

有什么方法可以保证window-exposer在其他 JavascriptCode 之前运行?

0 投票
2 回答
212 浏览

ember.js - 将 RequireJs 更改为 AlmondsJs

我有一个 EmberJs 应用程序和 requireJs,优化后我想用 AlmondJs 替换 requirejs 库但我总是收到这个错误

找不到模块把手。

有人知道它可能是什么吗?

这是我的构建文件

0 投票
0 回答
238 浏览

cordova - PhoneGap 对 EmberJs + AlmondJS 应用程序的加载时间很长

我有一个 EmberJs 应用程序,它经过优化并与 r.js 连接到一个文件中,作为 cordova/Phonegap 应用程序的一部分,该应用程序在 ios 模拟器上加载速度非常快,但在真实设备上加载大约需要 13 秒。

有谁知道这可能是什么问题?

谢谢你的帮助

0 投票
1 回答
82 浏览

javascript - require.js/almond.js 小写模块名称?

我正在使用 require.js 2.0.6 来加载几个模块,包括我自己的一个库,它本身被包装在 almond.js 0.2.5 中。当我尝试做 require(['MyModule'], function (MyModule) {}); 最终在 require.s.contexts._.defined 中的是 mymodule (小写)。我需要公开混合大小写的 MyModule 以支持我的 MyModule API 的向后兼容性。

这是预期的还是已知的行为?如果是这样,是否有解决方法?

0 投票
1 回答
2710 浏览

javascript - 将杏仁与 grunt-contrib-requirejs 一起使用

我正在尝试设置一个使用 requirejs 和 almond 的 gruntfile。文档建议它应该非常容易,并且按照他们的领导,我尝试了:

不幸的是,这种方法编译almond.js而不是我的实际来源。我有什么问题吗?如何将杏仁与 requirejs 一起自动化?

0 投票
1 回答
928 浏览

requirejs - Requirejs Gruntfile 找不到杏仁

我正在尝试在 grunt 中使用 almond.js 将我的文件合并到 .js 上并将其丑化。我在 grunt 中的配置是这样的:

我的 main.js 是这样的:

如果我尝试运行 grunt requirejs 我得到一个错误:错误:错误:错误:模块路径不存在:project/www/js/js/lib/../../../node_modules/almond/almond.js对于名为:../../../node_modules/almond/almond 的模块。路径相对于:/project/node_modules/grunt-contrib-requirejs/node_modules/requirejs/bin/r.js:25964:35 的项目

我不明白,路径中的第二个 /js/ 来自哪里?它在我的文件结构中不存在,我的项目文件夹是这样设置的

0 投票
2 回答
22905 浏览

requirejs - 如何从 Require.js 导出全局变量?

我正在尝试使用 Require.js 创建一个外部库。感谢Require.js 没有正确编译单个 js 文件Require.js (almond.js)超时,我已经想出了如何将所有内容“编译”到单个优化/构建的文件中,并且该单个文件可以工作。只有一个问题:我不知道如何为我的库设置变量。

假设我希望我的库创建window.Foo. 我尝试使用以下main.js文件:

和一个包装结束片段:

如您所见,我尝试通过window.Foo从 require 调用内部显式设置以及通过结束片段的返回值从外部显式设置来将 Foo 暴露给全局空间。但是没有一个工作;如果我console.log(window.foo)在加载构建文件后添加一个权利,它会告诉我这window.Foo是未定义的。

如果我做一个 window.setTimeoutwindow.Foo最终确实被设置(到{someValue: 1}),但我不能很好地期望我的用户必须用超时来包装他们的所有代码。谁能解释一下window.Foo我的优化/构建文件加载后如何被定义?

0 投票
1 回答
573 浏览

javascript - r.js, almond:两个包含 almond 的 .js 文件是否可以共享依赖项?

是否可以将杏仁与多页设置一起使用,如下所示:

common.js 加载到所有页面并包含 almond、bootstrap 和 jquery

main1.js 仅在第 1 页加载并包含杏仁和需要 jquery 的 app/main1.js。当我为 main1.js 运行构建时,我排除了 bootstrap 和 jquery,因为它是共同的。

在第 1 页 common.js 和 main1.js 上已加载,但我收到一个错误:Uncaught Error: app/main1 missing jquery.

有可能用杏仁做这个还是我做错了什么?

更新:我正在使用 django-require 它将 python 对象转换为 r.js 的命令行条目,此外,它将提供的模块重命名为“almond”并将命名模块添加到包含中(这可能是导致我的错误的原因? )。另请注意,django-require 不允许包含/排除 REQUIRE_STANDALONE_MODULES,我添加了此功能:

Main1.js

这将转换为这样的构建文件条目: