2012-02-17 25 views
2

我是新来的道场,所以我不太明白所有的Dojo的功能。这里有一些问题,但我敢肯定,他们中的一些似乎很愚蠢,因为我不完全得到如何道场目前还不结构:有关Dojo newb的Dojo模块的问题?

  1. 你怎么一个js文件中创建多个模块和访问它创建的文件中的模块?另外,如何从包含多个模块的文件访问特定的模块?

  2. 有什么需要,并定义之间的区别?

  3. 我成功需要从文件的模块,但我无法弄清楚如何获得变量出来的文件,你怎么办呢?

  4. 我在研究Dojo如何需要它的模块,并注意到它为每个文件执行一个http请求,但是当处理大量模块和/或在大型站点上时,这并不是非常低效,你真的想尽量减少必要的http请求数量?这是怎么回事?

回答

1
  1. 如何在单个js文件中创建多个模块?

    虽然这是可以做到的,由当它创建图层文件生成系统来完成,所以不推荐。在一个文件中把多个模块意味着你必须使用不同形式的定义给出一个明确的ID来eahc他们。这是不太灵活然后具有从所述文件名和路径自动导出模块ID(在此,具有相对路径一起使得得多更容易移动和重命名AMD模块,相比于旧式模块)

  2. require和define有什么区别?

    定义是一个强化版本的require,它定义了一个带有返回值的新模块。

  3. 我成功地从一个文件需要一个模块,但我无法弄清楚如何从文件中获取变量。

    我不知道WHA toyu这个意思(没有给出一个具体的例子可运行),但所有你所要做的就是创建一个对象是你的模块的价值和返回它定义。这是不是从你如何定义模块的老办法,具有手动“命名空间”

    //foo.js 
    define([], function(){ 
    
        var M = {}; //the exported stuff will go here 
    
        var myVariable = 16; //private function variables are private (like they are everywhere else) 
             //and cannot be seen from the outside 
    
        M.anumber = myvariable + 1; //things on the returned object can be seen from the outside 
    
        return M; //people who require this module will get this return value 
    }); 
    
    //bar.js 
    define(['foo'], function(foo){ 
        console.log(foo.anumber); 
    }); 
    
  4. 我一直在寻找如何在需要道场及其模块和很离谱注意到它为每个文件的http请求...

    正如phusick指出的那样,构建系统可以用来将所有模块绑定到单个文件中(为您提供两全其美的模块化 - 开发期间的模块化和部署期间的性能)。它也可以做其他很酷的东西,比如捆绑CSS并通过缩小器或Closure编译器传递Javascript,检查ifdef是否创建平台依赖版本等。

4

通过The Dojo Loader的阅读将提供答案。

基本上模块=文件和非常频繁(作为最佳做法的问题)模块=文件=类(经由dojo/_base/declare更精确地限定public类)。您需要使用The Dojo Build System,这将解决所有依赖关系,并将所有模块放入单个文件(或更多文件,这取决于您的构建配置文件)。看看Dojo Boilerplate项目,它可以帮助构建应用程序。

+0

yes,module is file – Krishna 2013-09-17 07:27:35