问题标签 [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.
requirejs - 用假名替换模块 ID
想象一个 AMD JavaScript 应用程序,由三个具有这些 ID 的模块组成:
- 通用/核心/api
- 普通/数据/foo
- 普通/远程/酒吧
当我使用 r.js 构建优化文件时,这些 id 仍在编译文件中。IMO 这是不必要的。例如,当我搜索和替换以下内容时,优化的文件仍然有效:
- 通用/核心/api -> 一个
- 普通/数据/foo -> b
- 普通/远程/栏-> c
替换的优点是:
- 较小的文件大小
- 更好的模糊性
(是的,你永远不应该信任客户端。不过,替换模块名称需要逆向工程师来猜测,而不是通过模块名称立即找到应用程序的重要部分)
是否有一个原因我错过了为什么没有这样做或一个额外的工具/命令来用一些自动生成的 ID 替换这些 ID?
javascript - 为什么 r.js 会合并缩小 JS,然后将所有文件复制到输出目录?
我一直在使用 RequireJS 优化器为我的项目创建多个优化的 JS 文件,并且遇到了我在其他帖子中提到但尚未找到解决方案的问题。
当使用 r.js 优化单个文件时,它会将所有 JS 依赖项拉到单个文件中,并将其放入构建文件中“out”属性指定的文件中。但是,当尝试创建两个优化文件(即使用“模块”属性的多页项目)时,r.js 创建了两个经过优化的文件,但随后将所有文件夹和文件从 appDir 放到输出目录中。也就是说,它将所有 JS 依赖项拉在一起并缩小,然后将各个文件复制到输出目录中。
我意识到 r.js 并非旨在成为部署工具,所以这是设计使然,或者有办法告诉 r.js 不要将依赖文件和目录复制到输出目录中。
javascript - RequireJS 优化器:排除特定库
我的构建过程将每个应用程序脚本和供应商库组合到一个 .min.js 文件中。现在,假设这个供应商库之一是 jQuery。我的应用程序将在已经使用 jQuery 的环境中运行。所以我不需要在我的构建中包含 jQuery。但是,在我的应用原型(开发环境)中我仍然需要它,所以只能在构建过程中将其移除。
因此,在构建我的 .min.js 文件时,我需要排除 jQuery,但应用程序应该仍然可以工作,并且依赖项仍然应该得到正确解决。
我的 grunt-contrib-requirejs 构建看起来像:
有预定义的方法来解决它吗?或任何解决方法的想法?
javascript - 使用 angularjs 的 Requirejs 优化器
我正在尝试使用 angularjs、ui-router 和 requirejs 制作一个示例应用程序来延迟加载我的控制器。它在本地运行良好,但我想为生产环境编写 requirejs 优化器,为此尝试使用 grunt:requirejs 工具,但它对我不起作用。它甚至没有给出任何脚本加载错误或其他东西..
我正在使用 grunt:requirejs 任务来编译优化的 dist 文件“main.js”和 grunt 副本以在 dist 目录中修改 index.html:
grunt:requirejs 并修改 index.html -->
加载 dist/index.html 时它什么也没给我,浏览器中没有错误,只是不起作用,如果它给我控制器的脚本加载错误,它可能有任何意义,但它没有。这里完全没头绪。。
requirejs - requirejs 多页应用优化器合并多个js文件,但仍然http请求非必要文件
我创建了一个多页面的 Web 应用程序,包括: - 单个 requirejs 配置文件,requestjsConfig.js - 一些库,如 jquery.js 等... - 页面 js,如 homePage.js - 表单事件绑定 js,如pageHeader.js - 常见的逻辑处理,如 shoppingCart.js
我尝试使用 r.js 来丑化我的脚本,并合并为 1 个 js 文件。一般来说,它可以工作,但有一个小问题。编译后,浏览器仍然会加载表单绑定js文件,事件它们仍然合并到页面js文件中。
需要JSConfig.js
主页.js
pageHeader.js
r.js 的 build.js 进行优化
运行 node tools/r.js -o tools/build.js 后,访问首页时,还是需要 pageHeader.js。
javascript - requirejs 和预构建的包
我无法bundles
在优化的构建中工作,我正在尝试加载一些外部预构建包(不包含在需要构建过程输出中)。
在requirejs.config
:
test-bundle
内容是:
在构建配置 paths
中mymodules
,mymodule1
并mymodule2
设置为empty:
(或构建过程失败),我没有使用构建配置modules
中的选项来生成捆绑包。
如果我按原样使用源,那么一切正常,正如预期的那样。
在构建版本(但未优化)test-bundle
中加载并"defining modules"
打印,然后超时加载mymodule2
:
在构建和优化的版本中,还有一个错误:
就像 if在implementtest-bundle
之前加载。requirejs
define()
我错过了什么或做错了什么?
编辑
我已经使用上面的测试创建了一个分支来安装和构建(nodejs
npm
并且可能grunt-cli
在系统上是必需的)
(请参阅此提交以获取所有修改以添加测试包的文件)
javascript - 尽管有 'stubModules' 参数,r.js 仍会评估 'text' 插件
首先是一些代码:
我运行的 r.js 启动文件r.js.cmd -o static/js/boot.js
然后插件在控制台中抛出异常:
有人可以回答我为什么 r.js 评估“文本”插件,尽管在构建配置文件属性中使用“stubModules”参数?
我以前读过这篇文章:
提前致谢。
node.js - 优化多个requirejs配置文件
我对 r.js 的优化有疑问
我有一个项目有多个 requirejs 配置文件
每个 main.js 都有自己的包
main.js 代码是:
module1/main.js 代码如下:
build.js 文件是这样的:
当我执行$ r.js -o build.js
它时返回一个错误
angularjs - 如何在 Routeprovider 中加载 Json 数据?
在这里我无法加载 JSON 数据。我在下面的代码中做错了什么。谁能指导我?
requirejs - RequireJS 优化成多个模块
我正在尝试使用 RequireJS 将我们的 JS 模块化为几个更大的 JS 文件,以便可以按需加载依赖项,但在加载页面时无需大量的单个 JS 下载。
例如,JS 文件为:
- js/main.js
- js/views/category1/js1.js
- js/views/category1/js2.js
- js/views/category2/js1.js
- js/views/category2/js2.js
应用程序的某些部分(例如 category1 中的所有内容)仅由某些类型的用户使用,与 category2 类似,因此为每个用户加载它是没有意义的。
我正在尝试为 r.js 构建配置,以创建两个动态加载的模块(category1.js 和 category2.js),其中包含各自 js1.js 和 js2.js 文件中的所有代码。
但是,在加载编译后的输出时,浏览器会抱怨找不到views/category1/js1、views/category1/js2 等。
我什至不确定是否可以从 RequireJS 中的多个较小的 JS 文件创建一些高级模块。有没有人有这方面的经验?
编辑
主.js:
索引.html:
JS1、JS2 等文件是从 router.js 中引用的。