问题标签 [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.
javascript - 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?
我正在使用谷歌的 CDN,并且还尝试使用他们的加载器加载我自己的 AMD 模块。我知道我做错了什么,但我被困住了。有任何想法吗?
jquery - jQuery 1.7+、AMD (RequireJS) 和全局范围
我正在尝试与 AMD 保持一致,并且我在 jQuery 源代码中遇到了一些我无法完全理解的东西。
这是部分(在文件末尾之前找到):
据我所知,AMD 的一大重点是保持全局范围的清洁。然而 jQuery 选择以模块的形式返回对自身的引用,但仍会感染全局空间。
在我看来,添加“jQuery.noConflict();” 就在 return 将解决此问题并仍将对象作为模块返回之前。
我知道 RequireJS 有一些专门用于 jQuery 的特殊文件,但我不确定 1.7+ 是否需要它。
我的问题是两部分:
1)有谁知道为什么做出这个决定?
2) 由于这种方法对升级不友好,有没有人熟悉使用标准版 RequireJS 和 jQuery 的更优雅的解决方案?
javascript - 定义模块并立即使用 RequireJS
我正在为使用 RequireJS 的应用程序编写一些测试。由于应用程序的工作方式,它希望通过调用来获取一些类require
。所以,为了测试,我有一些虚拟类,但我不想为了这个测试而将它们放入单独的文件中。我更喜欢将define()
它们手动放在我的测试文件中,如下所示:
这里的问题是这些模块的评估会延迟到触发脚本 onload 事件。
有什么方法可以手动触发要评估的队列吗?
javascript - 当我使用 Backbone 和 AMD 模块时,存储授权数据的最佳位置在哪里?
我为注册或非注册用户创建带有 Backbone 和 RequireJS 的 js 应用程序。为了从数据库中检索数据,我使用简单的 JSON Web 服务,当然有些方法不适用于 quest。问题是我不知道应该在哪里或如何存储从服务器检索的身份验证数据,而无需在每个视图中重新加载它。我应该使用 cookie 吗?
javascript - 使用 RequireJS 中的相同配置文件在并行目录下优化/构建模块
我有一种感觉,标题可能无法解释:)
设置
假设我有以下结构:
其中app.js
文件是应用程序的主要引导/入口模块,如下所示:
应用01
应用02
两者都适用于适当的index.html
文件。
我有一个app01的 RequireJS 构建配置文件(假设与路径相关的正确放置):
效果很好。类似的文件(替换app01
为app02
)适用于app02。
问题/目标
现在我希望能够使用相同的构建配置文件为app01和app02应用程序运行 RequireJS 构建工具(在 Ant 下使用带有 Rhino 的 Google Closure,在这种情况下并不重要) ,最好不要实际列出所有应用程序的名称(因为数量和名称可能会随时间而变化)。
基本上我希望(或者更确切地说希望)有这样的东西:
它将运行built_apps
目录,找到 app*/app 下的所有应用程序并优化它们中的每一个。
我知道我可以使用 Ant 为每个应用程序动态创建这样的构建配置文件,针对它运行构建然后清理,但我宁愿拥有 RequireJS 解决方案。
有没有办法用 RequireJS 做这样的事情?
backbone.js - 骨干网、RequireJS 和树
我正在将类别树视图重写为 RequireJS 和 Backbone 应用程序。
结构很简单:每个类别都包含一组子类别。
然而,循环依赖问题很快就变得明显了。类别模型需要类别集合,类别集合需要类别模型。
在 RequireJS 文档中有关于循环依赖的简短说明:
http://requirejs.org/docs/api.html#circular
但是,我似乎遗漏了一些东西,因为我仍然遇到未定义和/或错误。我认为在示例中只看到“b”而不是“a”会让我无法理解。
有没有人能够提供一个简单的例子来澄清?那,或者一种更好的结构方式,不需要循环依赖。
javascript - 将值传递给“注入脚本”而不是依赖全局变量?
http://dojotoolkit.org/reference-guide/loader/amd.html#generic-script-injection
当我使用 require() 进行通用脚本注入时,有什么方法可以传递注入的脚本值而不必依赖全局变量?
javascript - “!默认值”对依赖项意味着什么
当我查看 dojo 1.7 amd 依赖列表的源代码时,我看到以下内容:
定义([“./_base/kernel”、“./has”、“./dom”、“./on”、“./_base/array”、“./_base/lang”、“./selector/ _loader", "./selector/_loader!default"],
我知道感叹号的唯一用途是插件,我以前没见过这个“!默认”。
我阅读了此页面“https://github.com/amdjs/amdjs-api/wiki/AMD”并用谷歌搜索,但没有找到任何答案。
任何人都可以帮我解决这个问题!
谢谢
沃尔夫冈
更新:
谢谢你,Ates Goral,你的回答。
现在一切都清楚了。
然后,这种特殊情况让我恼火的是,“./selector/_loader”在上面的行中出现了两次,一次没有参数,下一次有参数。我看到有人写“dojo/domReady!”,所以我认为必须为插件写一个感叹号,即使没有参数。现在我了解到插件不需要“!” 我会写“dojo/domReady”。
另一个更新:
今天我发现了以下有趣的语句(https://github.com/csnover/dojo-boilerplate的 main.js ):
这 ”!” 在模块名称之后表明您要使用特殊的插件功能;如果您只需要“dojo/domReady”,它将像任何其他模块一样加载该模块,而无需任何特殊的插件功能。
我不知道这个说法是否正确。没错,那么“./selector/_loader”会有某种混合功能吗?
requirejs - require.js 获取/加载顺序调试
是否有工具或 require.js 函数可用于确定模块/传统脚本的获取和加载顺序?
例如,
一个.js:
b.js:
然后是一个 main.js
我的假设是:
- a.js 将被首先获取
- b.js 和 c.js 将被第二个获取
- d.js 将被最后获取
并且模块将按照 d -> b -> c -> a 的顺序加载。或者也许,d 和 c 同时(因为 c 没有像 d 那样的依赖项)然后是 b,最后是 a。
但是,我永远不能 100% 确定我的假设是正确的。我可以刷新页面 100 次并验证我没有收到错误,但我仍然偏执于第 101 次尝试会失败。
AMD 模块开发人员,你如何调试这个?
requirejs - require.js 订购插件并定义
define() 如何处理传统的 javascript 文件?
例如,
一个.js
c.js 或 d.js 何时获取和加载?它会在 function(b){} 中加载并可用吗?
我知道订单没有保留。订单插件会对此有所帮助吗?
文档说
使用 define() 定义模块的脚本不需要
但这也适用于传统脚本吗?
谢谢