dojo - 是否可以在不修改JS文件的情况下使用Dojo构建?

标签 dojo dojo-build

是否可以使用 Dojo 构建而不需要修改 JavaScript 文件?

文章dgrid and Dojo Nano Build提供了创建构建的指令,但需要将以下行添加到 JavaScript 文件中,以初始化应用程序:

require(['dgrid/dgrid'], function () { 

(用您的构建模块名称替换“dgrid/dgrid”)。

但是,当对自己的模块使用build时,这是非常有问题的,因为,当然,在开发模式下,不能包含具有自己的层的require,否则对自己的模块所做的修改将不可见。但在生产模式下必须添加此行。

因此,您必须在生产构建之前手动修改文件,或者编写一个在构建期间修改文件的脚本。两者都非常容易出错。

有没有更好的方法来实现这个结果? Dojo 是否可以识别已提供的构建并且应该使用该构建,而不是单独加载每个模块?

最佳答案

以下代码行可以包含在开发和生产模式中。

require(['dgrid/dgrid'], function () {

我在回答 here 中描述了原因.

您需要做的是根据环境不同地配置 Dojo。

blog post中我写的,我更详细地描述了这一点。以下是这篇文章的总结:

我创建了三种模式:生产、未压缩和开发。

开发

开发代码时,我会将 js 源链接到 Web 服务器,并且开发模式将指向 dojo.js 文件和原始 css 文件。浏览器将使用 xhr 加载我需要的模块。我指向导入其他 css 文件的顶级 css 文件。结果是向服务器发出大量请求,页面加载速度明显变慢。好处是您无需进行完整构建即可看到开发更改。

生产

生产模式将主 dojo 文件指向 dojo.js这是使用构建工具构建的。我还创建了<script>页面中所需的其他层的元素。我将 css 指向构建工具已内联导入的 css 的构建 css 文件。页面加载速度快,但调试困难

未压缩

与生产类似,但我指向 .uncompressed.js 文件。我们软件的发布版本中提供了生产版和未压缩版。当尝试解决生产环境中的问题时,我使用未压缩。随着开发者工具更好地支持压缩的 javascript(即源映射等),这种模式的值(value)正在逐渐减小

服务器端

默认模式是生产模式,但我使用查询参数来切换模式。我还将当前模式存储在 session 中,这样我只需设置一次模式即可更改它。后续页面将在更改后的模式下运行,直到我将其更改回来。

Here是此代码的 java 实现。

关于dojo - 是否可以在不修改JS文件的情况下使用Dojo构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17787428/

相关文章:

javascript - Dojo - Promise 无法访问变量

javascript - 使用 onShow 和 onLoad 为 dijit.layout.ContentPane 创建程序

javascript - 如何保持 Dojo 开发的高效性并仍然使用 Dojo Build 进行部署?

dojo - dojo 的最低构建配置是什么样的?

javascript - 如何从构建中排除 .js.map?

javascript - 使用 Dojo 时是否需要控制台 shim?

javascript - 关闭 Dojo 菜单项

javascript - dojo增强网格在特定单元格上动态设置可编辑错误不进行更改

cordova - 如何在文件 :///protocol (Cordova/Phonegap) 下使用 dojo 的自定义构建

Dojo 构建 -> dojo.require();还需要吗?