问题标签 [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 投票
3 回答
1244 浏览

javascript - 如果我仍然在构建时合并所有文件,我为什么要使用 require.js?

编写模块化、独立的可测试代码确实很有意义——尤其是对于大型项目。

但是在一个我仍然需要在构建时集中和缩小我的项目的大项目中使用require.js/有什么区别?amd

0 投票
2 回答
382 浏览

javascript - RequireJS - 使用 2 个 jQuery 库

在我正在维护的一个项目中,我被迫在一页中坚持使用 2 个 jQuery lib 调用(至少现在是这样):

这在 B 节中引起了一些奇怪,我已经验证了问题的根源是重复包含 jQuery 库。

假设我只能控制 AMD 部分 - 我必须处理这种情况的最佳/推荐选项是什么?谢谢!

0 投票
1 回答
3084 浏览

javascript - 使用 AMD 将 jQuery 和其他第 3 方库作为模块导入 TypeScript

问题:有没有办法使用 AMD 支持(通过编译器)将 jquery 导入 TypeScript 模块,以便将 jquery 作为依赖项包含在内?

关键是获取import语句,这使得模块成为define语句中的依赖(见下文)。

详细信息:我想将 jquery(和其他 3rd 方库)作为 TypeScript 模块与 AMD 一起导入。目标是使它们在require列表中显示为依赖项。然而,让 TypeScript 做到这一点的唯一方法似乎是有一个import语句。并且要进行导入,您需要一个模块来导入。但是......没有 jquery 模块指向。到。

解决方法

  1. 我可以参考 main.js 中的 .d.ts 并预加载 jquery 以获得 require.js,但这意味着预加载所有 3rd 方库。不可怕,但也不理想,因为它没有利用我们已经可以用 JavaScript 和 AMD 做的事情。
  2. 我可以为每个 3rd 方库创建一个模块并将其包装,但随后我得到类似 $.$ 的东西。更糟糕的是,IMO(并且 Irisk 为每个模块编写了错误的模块代码并且不同步)。

所以现在我只是在 main.js 中预加载 jquery。但同样,但这并不理想。对于没有模块的任何库,如淘汰赛、主干网等,都必须这样做。

有什么更好的建议或我缺少的东西吗?

更新/澄清:

我还可以在配置中使用 shims 来实现库之间的依赖关系。但这仍然会预加载第 3 方的。例子:

0 投票
1 回答
2206 浏览

backbone.js - 为什么 RequireJS 不加载这个依赖?

执行以下“主”模块时,我收到“TypeError:OrdersPage 不是构造函数”

事实证明,当我在函数(OrdersPage)中时,“OrdersPage”是未定义的。所以问题是为什么它是未定义的——尽管将 OrdersPage 定义为依赖项?

这是 OrdersPage 的代码,它实际上是被命中的,但是在打印了上述错误之后:

综上所述,控制台输出如下:

这告诉我 OrdersPage 模块是在加载并执行“主”模块之后加载的,这为时已晚!

编辑 1此处提供了 一个非常简单的项目来演示此问题。

编辑 2 我已经在我的 RequireJS 配置中声明了 Backbone:

0 投票
1 回答
1286 浏览

javascript - 使用 RequireJS 优化器进行部分优化

我正在尝试使用 RequireJS 优化大量 javascript 文件,但我无法解决如何使用优化器正确构建脚本并以所需方式将它们加载到浏览器中。

虽然下面的描述相当具体,但我想很多其他人也遇到了同样的挑战。(或者他们在要求上做出了更明智的选择!)

我正在使用bower下载脚本目录,并且我想将这些脚本(或其中的一部分)包含在我的网页中。

此外,在测试时,我基本上不想让浏览器检索单独的 Bower 脚本。本地测试框架串行响应请求,所以这很慢。我想使用 RequireJS 优化器或其他方法将所有下载的 bower 脚本合并到一个文件中。

相比之下,我自己的代码被分解成一长串 Coffeescript 文件,我想使用RequireJS CS 插件为浏览器编译它们。

在开发时,我希望我的浏览器加载如下内容:

  • components.js
  • main.js
    • csmain.coffee
    • my_module.coffee

components.js将由 Bower 目录中的以下文件组成,components例如

  • jquery: jquery/jquery
  • jqueryui:
    • jquery-ui/ui/jquery.ui.core
    • jquery-ui/ui/jquery.ui.datepicker
  • 放大:
    • 放大/核心/amplify.core
    • 放大/请求/amplify.request
  • 引导程序:
    • 引导程序/js/引导程序转换
    • 引导程序/js/引导程序警报
    • 引导/js/引导按钮
    • 引导程序/js/引导程序轮播
    • bootstrap/js/bootstrap-collapse
  • lodash: lodash/lodash

在生产环境中,浏览器会加载一个文件,比如all.js.

所以我的问题是:如果我使用 RequireJS 进入浏览器main.js并构建脚本来实现部分和完全优化的构建。我在这个问题上花费了不成比例的时间,而且来自 RequireJS 的莫名其妙和神秘错误的数量非常长——以至于我无法识别出严重的禁止性问题。它似乎不是这项工作的工具,但我很乐意得到纠正。

我所拥有的优化脚本类似于以下内容(以 YAML 表示法):

似乎我希望解决的问题相当简单,但解决方案却没有出现。RequireJS,虽然很出色,但比我需要的要复杂得多。Almond.js是加载模块的替代方案 - 但问题在于缺乏替代的合适优化器。

我将不胜感激有关可以使用哪些选项r.js来实现上述目标的任何想法,或者可能存在哪些合适的替代优化解决方案。

0 投票
2 回答
9139 浏览

requirejs - 使用 require.js 创建 AMD 模块

我有以下功能:

define()作为 AMD(异步模块定义)兼容模块,我如何require.js使用它,然后在浏览器中使用它?

我正在寻找一个专门用于jsfiddle显示它直接在浏览器中工作的示例。

0 投票
2 回答
2771 浏览

requirejs - RequireJS 如何从 jam 文件包部分指定 shim 依赖项

我正在一个带有骨干样板的项目中工作,该项目使用 RequireJS 加载模块和 JamJS 来管理它们。我的要求config.js文件如下:

如您所见,来自 jam 配置文件的 RequireJS 加载配置jam/require.config.js指定了主干、jquery 和下划线。接下来是一段文件:

我想要在我config.js的主干.localStorare 库中指定取决于包部分中定义的主干。此外,如果我按如下方式指定主干路径,那么它会找到主干库,但会发现一条错误消息,指出未加载下划线:

我可以使用 jamjs 添加backbone.localStorage 库,但是可用包的版本很旧,所以我更喜欢手动下载最后一个并手动包含。

任何想法或帮助将不胜感激。

0 投票
2 回答
120 浏览

requirejs - 剂量 requirejs 需要所有 JS 文件来支持 AMD

我很少阅读有关requireJS的内容并试图理解它。

我想知道的:

  1. 我应该以特定的方式或像 Module-Pattern 这样的模式来构建我的文件吗?
  2. 使用库时,这些文件应该支持 AMD 吗?

非常感谢你的帮助。

0 投票
1 回答
340 浏览

ember.js - Ember 数据模型问题:奇怪的请求 URL

我正在尝试使用基于https://github.com/fernandogmar/Emberjs-RequireJS的 AMD 方法(是的,我知道@tomdale 对 AMD 的看法)构建一个简单的 ember 应用程序(文件浏览器),这似乎工作得很好,除了尝试使用此 DS.Model 时,我收到了一个奇怪的请求 URL:

调用:

(不相关的问题:有没有办法使用 get() 从路由器或控制器中获取数据存储?Router.get("DataStore")返回未定义。)

使用标准未修改的 RESTAdapter。产生以下请求 URL:

我不知道是什么原因造成的。推测末尾的“s”是适配器试图使模型名称复数。我不知道paren是从哪里来的。

Ember 版本:v1.0.0-pre.2-123-ga352c48

Ember-data 版本:昨天从https://github.com/emberjs/data/downloads下载的最新版本(在任何地方都找不到版本号)。

这是否与 AMD 方法有关,或者这是一个不相关的问题,最重要的是:我该如何解决?

谢谢你的时间。

0 投票
1 回答
215 浏览

javascript - 我可以将 System.Web.Optimization 与像 requireJS 这样的 AMD 加载程序一起使用吗?

我可以将 System.Web.Optimization 与像 requireJS 这样的 AMD 加载程序一起使用吗?

我想在一次下载中将很多小 JS 文件与 .net 4 中的新 System.Web.Optimization 结合起来。

这个生成的下载如何与 RequireJS 或 dojo 工具包加载器等 amd 加载器一起工作?

有没有人有这方面的经验?