是否可以在不需要修改JavaScript文件的情况下使用Dojo构建?
文章dgrid and Dojo Nano Build提供了创建构建的说明,但它需要将以下行添加到JavaScript文件中,该文件初始化应用程序:
require(['dgrid/dgrid'], function () {
(用你的构建模块名称替换'dgrid / dgrid')。
然而,当为自己的模块使用构建时,这是非常有问题的,因为当然,在开发模式中,不能包括具有自己的层的需求,否则对自己的模块所做的修改将是不可见的。但在生产模式中,必须添加此行。
因此,您必须在生成构建之前手动修改文件,或编写将在构建期间修改文件的脚本。两者都非常容易出错。
有没有更好的方法来实现这一结果? Dojo是否可以识别提供并应该使用构建,而不是单独加载每个模块?
答案 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实现。