问题标签 [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.

0 投票
1 回答
1218 浏览

javascript - RequireJS 优化和文本插件

我正在使用 RequireJS 优化器来优化也使用文本插件的模块。为了没有文字!每个优化模块一遍又一遍地加载插件,我这样做

哪个有效,部分产生以下内容

不幸的是,如上所示,我不能再“正常”使用文本插件。上面的错误存根阻止我添加文本!调用未优化的依赖列表。

有没有办法解决?有没有什么我可以放入的选项,比如说,将这些text引用动态更改为texto然后执行类似的操作

或者其他一些选项可以优化具有文本依赖性的模块,同时又不会扼杀我继续动态使用它的能力?

0 投票
1 回答
614 浏览

requirejs - 无法获取 Require Optimizer 来破坏输出

我正在使用 Require Optimizer 将我们所有的源文件合并到一个文件中。这很好用,但是当我尝试设置optimize: 'uglify'optimze: 'uglify2'没有得到损坏的输出时:所有内容都合并到单个文件的一行中,但该行填充了原始变量名。

我尝试设置各种 uglifier 选项,例如:

或者:

但他们不工作。谁能解释我如何让优化器破坏它的输出?

编辑

这是我的build.js文件:

0 投票
1 回答
470 浏览

requirejs - Require.js (almond.js) 定时关闭

我正在尝试使用 Almond.js 和 Require.js 优化器来制作一个可以在没有 Require.js 的情况下使用的独立文件。我已经能够成功编译该文件,并且所有代码都运行了,但是有一个问题:代码以错误的顺序执行。

假设我的主文件(include=传递给优化器的选项中的那个)具有以下内容:

然后在我的HTML中我有:

由于我使用的是 almond.js 和一个编译文件(因此没有文件加载正在进行),我希望得到输出:

然而,事实证明仍然存在一些异步性,因为我实际看到的是:

如果我尝试window.foo从 HTML 检查它不存在。

所以,我的问题是,我怎样才能让代码更像一个普通/同步的 JS 文件,在将内容传递到下一个script块之前首先运行它的所有代码?我不能准确地告诉我的用户“将所有代码包装在 window.setTimeout 中”。

0 投票
0 回答
94 浏览

requirejs - 在多页应用程序中使用 RequireJS

我们有一个具有以下结构的多页应用程序:

ApplicationModule是包含所有应用程序逻辑模块的根文件夹,如Usermanagement和其他如下所示:

/应用程序模块/用户管理

//在userManagement文件夹中,我们有 html 页面及其对应的 .js(main) 文件 //所以我们有 login.htmllogin.js

Login.js反过来需要/加载执行页面逻辑所需的所有脚本文件,因此它的配置如下:

现在,在投入生产之前,我们要使用优化器,以便将所有需要的文件连接起来并缩小为单个文件。

站在 UserManagement 文件夹中,我们为优化器运行以下命令: node ../../r.js -o name=Login out=optimize.js

但它给了我们以下错误:

跟踪依赖项:登录错误:ENOENT,没有这样的文件或目录 'D:[some application path]\ApplicationModules\UserManagement\appSession Manager.js' 在模块树中:登录

错误:错误:ENOENT,没有这样的文件或目录 'D:[some application path]\ApplicationModules\UserManagement\app SessionManager.js' 在模块树中:登录

SessionManager.js文件的错误很明显,它试图在 usermangement 文件夹中找到它,但我希望它在 Scripts 文件夹中查找此文件,如login.js 文件的配置路径中所述。

如果有人能帮助我们解决这个问题,我将不胜感激。

0 投票
0 回答
307 浏览

d3.js - NVD3 + D3 + 需要优化器:任何干净的解决方案?

我正在尝试使用两个库:

  • D3(一个 Javascript 图形库)
  • NVD3(特定于图形的 D3 扩展)

我也在尝试使用 Require Optimizer,这就是事情变得艰难的地方。D3 与 AMD 兼容,因此如果它检测到您正在使用 Require 它将定义一个模块而不是导出全局d3变量。NVD3 不支持 AMD,但 Require 有针对这种情况的“垫片”。

但是,如果我“填充”NVD3 并为该填充提供 D3 的依赖项,则它不起作用,因为 NVD3 期望有一个全局d3变量,而 D3 在 Require 环境中不会生成该变量。因此,为了解决这个问题,我制作了一个新模块(d3Shim),它只需要 D3,然后将其注册为全局变量:

我让 NVD3 依赖于 d3Shim,然后一切正常……在正常的 Require-land 中。当我尝试使用 require-optimizer 将所有内容合并到一个文件中时,我发现 NVD3 又开始崩溃了,因为缺少d3变量。

事实证明,优化器会为 shims 执行此操作:

因此,无论我有什么依赖关系,NVD3 代码都会在 d3shim 模块发挥其魔力之前运行。

我的问题是,有什么方法可以将这两个库与 Require Optimizer 一起使用,而无需更改任何一个文件?如有必要,我总是可以编辑 NVD3 的代码以使其成为 AMD 模块,但出于显而易见的原因,编辑 3rd 方库是一种不好的做法,所以我更喜欢非编辑解决方案。

0 投票
1 回答
140 浏览

requirejs - requirejs 优化器是否有不删除空目录的配置选项?

我有一个项目结构,它有一个空目录(可能是自动生成的,但需要)。在这个结构上运行 requirejs 优化器不会将它(这个空目录)复制到输出构建目录。如何告诉优化器在生成输出时保留此目录?

项目结构:

构建配置

0 投票
1 回答
13 浏览

requirejs - RequireJS 优化是否仅适用于驻留在同一服务器上的脚本?

我使用的大约一半脚本位于 CDN 上,另一半与应用程序位于同一台服务器上。我不知道在这种情况下要优化什么。有人可以建议吗?

0 投票
1 回答
4053 浏览

node.js - npm + 摩卡 + RequireJS

我有很多时间尝试使用 Mocha 和 RequireJS 设置 node/npm。这就是我所做的。

我创建了一个 testing/ 目录,结构如下:

以下是每个相关文件包含的内容:

包.json:

测试/mocha.opts:

测试/小部件/mywidget/test.js

它将在“需要之前”和“完成”输出控制台行,但只要我有 requirejs(['mywidget... 行,它就不会命中 after require。如果我删除 requirejs 行(和相应的右括号/括号行),而是使用直接“var myObj =”行,我得到“找不到模块”,如果我使用第二个“var myObj”行,我得到“参考错误:未定义定义”。

为了方便其他开发人员,我正在尝试使用 npm 打包这一切,以便我从顶部的“testing/”目录中运行命令“npm test”。

我一直在寻找答案并尝试了很多事情,但我似乎不需要使用 RequireJS 的文件并定义了“define()”。我可以执行测试,这不是问题......它只是试图将 RequireJS 插入到我开始遇到问题的组合中。

任何帮助都将是巨大的!

谢谢!

0 投票
1 回答
997 浏览

javascript - 防止优化文本!和json!requirejs优化工具上的插件

我正在为基于多页 requirejs 的应用程序使用以下架构。: https ://github.com/requirejs/example-multipage-shim

该存储库解释了如何通过运行 r.js(用于此类任务的命令行工具)来优化应用程序。

一切都应该可以正常工作,但我的项目作为一些具有依赖项的模块执行 HTTP GET 请求以从服务器获取数据(可以是文本或 json)

这是因为我的某些页面使用的一些 json 和模板需要在服务器端处理以进行本地化。

这是一个基本示例来说明我在说什么:

向我的服务器 localhost/pagelang/login 发出 HTTP 获取请求,该请求返回 json

这同样适用于template/template_name从服务器返回将其 UI 翻译成用户语言的 html。

通过运行 r.js,它会尝试为服务器上现有的目录目录加载这些位置,而这显然不存在。

所以,我想阻止命令行工具优化文本!和json!模块。可能吗?

我检查了 requirejs 构建设置,但没有找到解决问题的方法。有什么帮助吗? https://github.com/jrburke/r.js/blob/master/build/example.build.js

0 投票
0 回答
345 浏览

dojo - 引用插件时 RequireJS 优化失败 (xstyle/css)

我遵循了http://requirejs.org/docs/optimization.html中描述的示例文件结构并得到了一个工作版本。然后我将 two.js 修改为如下所示:

并将 xstyle/css 添加到 build.js 中:

添加再次运行构建:

r.js.cmd -o build.js 优化=无

现在我看到了这个错误:

有很多引用相同的错误,但没有解决这个特定问题(例如):

Requirejs 无法编译我的 dojo 依赖模块

RequireJs 优化器忽略插件

https://github.com/odoe/AGSModularDemo

是否可以使用 requirejs 优化 dojo 应用程序?