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

时间:2013-07-22 12:20:48

标签: dojo dojo-build

是否可以在不需要修改JavaScript文件的情况下使用Dojo构建?

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

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

(用你的构建模块名称替换'dgrid / dgrid')。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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(即源地图等),这种模式的价值正在减少。

服务器端

默认模式是Production,但我使用查询参数来切换模式。我还将当前模式存储在会话中,这样我只需设置一次模式即可进行更改。后续页面将以更改的模式运行,直到我将其更改为止。

Here是此代码的java实现。