如何给依赖列表建道场成一个单一的文件,?(How to build Dojo into a sing

2019-07-05 03:20发布

我有一个简单的Dojo应用程序,但这只是一个require调用加载所有的依赖关系。 麻烦的是,虽然它是非常简单,它仍然从服务器最终装载〜100个文件。 我试图解决使用Dojo构建系统的问题,但似乎我没有足够深的理解。

所以我的问题是 - 给依赖列表,如下所示:

["dojo/parser",
 "dijit/registry",
 "dojo/dom",
 "dojo/on",
 "dojo/query",
 "dojo/dom-class",
 "dojo/request",
 "dijit/form/ValidationTextBox", 
 "dijit/form/Select",
 "dijit/form/NumberSpinner",
 "dijit/form/CheckBox",
 "dijit/layout/ContentPane",
 "dijit/Dialog",
 "dojo/NodeList-traverse",
 "dojo/domReady"]

我该如何建立构建以创建单个文件(或多个文件,只是没有100文件)道场文件?

Answer 1:

如果您使用Dojo的require()装载机,有构建工具 ,你可以用它来合并文件,然后再缩小。 据现场,构建工具不包括在正式发布,所以你必须从一开始他们的开发版本 (具体看在buildscripts目录)。

道场文档中包含的一些信息构建系统 ,您还可以找到有用的。

作为概念验证 ,这里是我采取的步骤:

  1. 前往下载页面 ,并下载源代码Dojo Toolkit的SDK(它是包含所需要构建的UTIL脚本唯一的一个)。

  2. 提取到一个位置(这个职位的缘故,让我们说这是/opt/dojo-toolkit )。

  3. 从Dojo工具包目录 (即/opt/dojo-toolkit ),运行构建UTIL: ./util/buildscripts/build.sh action=release htmlFiles=/path/to/my/index.html (小心,这放慢我的5岁的双核到爬行)

的实施例index.html (这个人是完全内部dojo-toolkit目录):

...
<head>
    <script src="dojo/dojo.js"></script>
    <script>
    dojo.require("my.test");
    </script>
</head>
...

require()调用看起来嵌套模块(我无法得到它与一个顶层模块工作),所以在这种情况下,我有my的目录里面dojo-toolkit包含一个test.js文件。 该文件是在加载所有依赖的主要“引导”文件。 我刚一放就乱require()调用我的:

dojo.require('dijit.ProgressBar');
dojo.require('dijit.Tree');

这应该这样做。 基本上,运行针对您的HTML文件(包含引用的dojo.js之一)的构建工具可以确保所有的相关性发现,从顶部开始。

:构建系统创建一个release与内置输出目录,但它看起来有点起初误导-这似乎已经过压缩每个单独的文件,但如果你看看你的实际的引导文件( my/test.js ,在这情况下),这将是一个组合,精缩用(我相信),你需要运行你的应用程序的一切文件。


否则,如果你使用AMD的风格require()的(如在require.js),你可以使用它的优化工具 。 据该网站,它会:

  1. 将所有相关文件(包括require.js本身)到一个文件中。 分析了require()调用找出哪些文件需要相结合。

  2. 无论是使用UglifyJS(默认)或关闭编译压缩JavaScript。



Answer 2:

我需要做同样的事情,这是我如何解决它。

如果你了解如何创建自定义建立的文档( http://dojotoolkit.org/documentation/tutorials/1.8/build/ ),在他们谈论创建自定义图层图层部分。 您可以添加你需要的任何的所有模块。 这是我的定制层文件的例子:

layers : {
"dojo/dojo" : {
    include : [
            "dojo/dojo",
            "dojo/_base/window",//
            "dojo/dom",//
            "dojo/dom-class",//
            "dojo/ready",//
            "dojo/store/Memory"
    ],
    customBase : true,
    boot : true
}
}

这是什么会做的是建立只有那些模块插入的dojo.js,与引导加载程序一起,这样就可以在飞行中加载其他模块。



文章来源: How to build Dojo into a single file, given a list of dependencies?