问题标签 [requirejs-optimizer]
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 - 使用 RequireJS 优化器的后备路径
我的目标是拥有一个依赖项 foo,从 CDN 加载本地回退,并使用 RequireJS 优化器 (r.js) 捆绑和缩小其他所有内容。
require(['foo'], function (foo) { /*...*/ })
调用应该在没有errbacks的情况下工作- 至少不是在所有依赖 foo 的地方,如果可能的话,我很乐意在共享位置定义一个 errback,但全局onError
似乎不能以这种方式使用。
没有 r.js 的配置:
gulpfile 中的优化调用:
将 foo 的路径更改为数组(而不是单个字符串)后的输出:
错误:优化器不支持路径回退。
我已经尝试按照建议提供路径作为优化调用的替代但没有成功:
这对我来说听起来像是一个基本要求,我不能为使用 RequireJS 及其优化器的模块指定后备路径吗?
jquery - r.js 导致:将 ./lib/jquery.js 评估为模块“jquery”失败并出现错误:TypeError:无法读取未定义的属性“createElement”
我正在尝试在使用 jQuery 的代码上使用 r.js。但是在评估 jQuery 时它失败了。
这是我收到的错误消息:
$ r.js init-edx-machine.js /usr/local/lib/node_modules/requirejs/bin/r.js:393 抛出错误;^
错误:将 ./lib/jquery.js 评估为模块“jquery”失败并出现错误:TypeError: Cannot read property 'createElement' of undefined at Function.req.load (/usr/local/lib/node_modules/requirejs/bin/r .js:2571:23) 在 Object.load (/usr/local/lib/node_modules/requirejs/bin/r.js:1935:21) 在 Module.load (/usr/local/lib/node_modules/requirejs/bin /r.js:1084:29) 在 Module.fetch (/usr/local/lib/node_modules/requirejs/bin/r.js:1074:66) 在 Module.check (/usr/local/lib/node_modules/requirejs /bin/r.js:1106:30) 在 Module.enable (/usr/local/lib/node_modules/requirejs/bin/r.js:1426:22) 在 Object.enable (/usr/local/lib/node_modules /requirejs/bin/r.js:1807:39)在模块。(/usr/local/lib/node_modules/requirejs/bin/r.js:1411:33)在 /usr/local/lib/node_modules/requirejs/bin/r.js:384:
我在 jquery.js 中搜索了“createElement”。大多数时候它使用文档。有时它使用通过参数给出的变量。
jQuery 版本是 2.1.4。我检查了较新的版本,他们也这样做。
我真的不知道这里发生了什么。我现在能做什么?
javascript - 组织打字稿定义以避免重复代码
现在的情况:
有一个类定义在:
lib/components/widgets/MyWidget.ts:
它被编译为 javascript,与其他文件捆绑在一起,作为lib-min.js 的结果
所以因为它在lib/components/widgets/MyWidget.ts我做了一个定义“集合”文件(mydefinition.d.ts),如:
通过这种方式,它可以像这样使用(当然在将lib-min.js 包含到页面中之后):
问题:
我认为很明显,保持这种重复是压倒性的,很容易导致错误。同样在升级到 typescript 2+(从 1.8.9 开始)后,我收到了几个“重复标识符”的编译错误,而且通常它不像以前那样工作。
- 我可以制作一个像 IMyWidget 这样的接口并将其公开,但随后缺少实现并且无法使用 new 创建
- 我可以从mydefinition.d.ts中删除“声明模块...”,但是模块加载器将找不到模块(因为 r.js 优化器从它的路径中命名模块)
问题
是否有一种干净且“便宜”的方法来解决这个问题(并尽可能避免代码重复)?
javascript - RequireJS 捆绑配置与捆绑模块
requirejs 捆绑配置和模块优化(即多个模块)有什么区别?在我看来,两者都产生了相同的东西——而不是创建一个优化的文件,而是创建多个优化的文件,每个文件都有多个模块。我的理解正确吗?与模块捆绑相比,使用捆绑包有什么优势吗?
当使用 r.js 'modules' 进行优化时,可以提供一个 'create: true' 配置,如果模块名称不是现有模块,它会创建一个文件。但是,我没有看到其他使用“create:true”引用该模块的模块相应地发生了变化。
"modules": [{ "name": "some/existing/Module" }, { "name": "some/non/existing/path", "create": true, "include": ["x", "y"] }]
在上述情况下
"some/non/existing/path.js"
,r.js 生成的 JS 文件是如何加载到浏览器中的呢?
javascript - requireJS 优化器 - 将两个匿名模块组合成一个 combine.js 文件
我正在尝试使用RequireJS 优化器将两个 require amd 模块组合成一个 combine.js javascript 文件。
**此问题与此问题不同:Mismatched anonymous define() module where there is not a solution or detail of the questions,并且与reactJS文档有一些矛盾的建议。
模块1.js
模块2.js
推荐的良好做法
在 requireJS wiki 和其他来源中,作为一种好的做法,他们明确建议不要为每个模块设置名称,而是将其保持匿名,没有 id: https ://github.com/requirejs/requirejs/wiki/Updating-existing -图书馆#anon
“通常你不应该注册一个命名模块,而是注册为一个匿名模块...... ”
RequireJS 优化器 - 将模块组合在一个 js 文件中
[构建.js]
[定义.js]
[弹出 requireJS 优化器]
RequireJS 优化器 - 输出 - combine.js
尝试加载 combine.js 文件和模块
[索引.html]
问题
加载combined.js 文件时,我总是得到相同的错误,除非我使用代码为上面的每个模块指定一个ID 名称:define('module1', factory); ...
错误:
附加信息
- 当前,所有文件都使用具有该 UMD 模式的 requireJS 完美加载。但是我不知道是否应该更改某些内容。
- definition.js 和 combined.js 显式加载模块,每个模块都有定义的id 名称。问题可能就在这里。
问题
- 如何将这些匿名模块组合到一个 combine.js 文件中,使用 requireJS 加载该文件,然后获取模块?
- 代码中可能有问题吗?
- 在 requireJS Optimizer 文档中,他们说他们支持加载匿名模块,但我一直无法做到。是否真的可以在不为模块分配 id 名称的情况下做到这一点?
我完全绝望地试图解决它,并且已经查看了许多资源,但找不到明确的答案。非常感谢
javascript - 使用 Gulp 和 r.js 通过 javascript 应用程序构建有什么区别?
我想知道除了连接和缩小我的 javascript 文件之外, RequireJS 的优化器 ( r.js ) 是否还有更多功能。
例如,我可以使用 Gulp 来缩小和连接我的文件吗?
他们的结果会一样吗?
谢谢
requirejs - RequireJS:相对于数据主文件加载模块
我正在使用 RequireJS 加载一些模块。
我正在使用镜像 CDN 提供静态资产。问题是模块是相对于网站域而不是数据主文件加载的,因此模块是以这种方式加载的:
有没有办法相对于数据主文件加载模块,以便使用 CDN 为模块提供服务?
我不能在任何地方对 CDN 域进行硬编码,因为它并不总是相同的。
这是一个样本require-main.js
这是rjs.optimize
我用来缩小所有资产并组合一些模块的功能
gulp - RequireJS:丑化不起作用
我一定在某处犯了错误,但在优化期间它没有被写入标准输出。我正在尝试通过 requirejs 优化文件,但输出没有被缩小。根据文档,UglifyJS 应该缩小代码。
无论如何,下面的代码是微不足道的,但它隔离了问题。
src/index.js:
src/myMod.js:
src/config.js:
这是执行优化的 gulp 任务:
运行任务后, dist/src/index.js 包含所有其他模块。但是,它没有被缩小,并且没有一个变量被重命名。相反,就好像文件只是连接在一起,仅此而已。有人可以告诉我(1)为什么它没有被缩小?(2) UglifyJS 是否抛出错误?如果是这样,有没有办法在运行 gulp 任务时看到它?
编辑这是 RequireJS 文档的链接,其中讨论了在节点中使用优化器,这是在上面提到的 gulp 任务中完成的。它位于“将优化器用作节点模块”下的底部。
javascript - 需要 js 优化器缩小我的项目但不连接到捆绑文件中
我不清楚如何将许多 js 文件捆绑到一个文件中。当我运行优化器时,结果是一个输出目录,其结构反映了我的源目录。里面的所有文件都被缩小了。那挺好的。但我正在寻找的是一个缩小的文件。我不这么认为。所以我的项目是优化的,但没有串联。
我一定对如何配置流程有误解。这就是我正在做的事情:
我在一个目录中有 r.js 和 build.js。在该目录下的一个文件夹中,我有 sourcejs。该 sourcejs 文件夹具有 application.js (我希望优化器跟踪的模块)。该模块“需要”它下面的嵌套文件夹中的很多东西。
这是构建文件:
我假设将优化器指向主模块 application.js 将是从那里产生所需输出所必需的。它将跟踪其中的依赖关系并找到通往所有子文件夹和文件的路径。优化器似乎确实找到了所有来源。我得到输出:
输出文件 application.js 不是项目的串联版本,而只是其自身的缩小版本。
我在这里有什么误解?
javascript - RequireJS 动态加载模块而不导入所有模块
我试图动态导入一个模块。选择的模块应该取决于一些条件(在这个例子中我使用了随机模式)。
需要-conf.js
测试/chart.js
测试/chart2.js
选项1
此选项有效,但必须导入两个脚本。所以,这不是最优的。
输出:Chart() 或 Chart2()
选项 2
此选项是异步的。在加载模块之前打印对象。
输出:空
选项 3
此选项会产生加载错误。
输出:错误
请帮助我以正确的方式动态加载模块。