【问题标题】:Questions about Dojo modules from Dojo newb?关于 Dojo newb 中的 Dojo 模块的问题?
【发布时间】:2012-02-17 04:24:33
【问题描述】:

我是 Dojo 的新手,所以我不太了解 Dojo 的所有功能。这里有一些问题,但我确信其中一些看起来很愚蠢,因为我还不太了解 Dojo 的结构:

  1. 如何在单个 js 文件中创建多个模块并访问它创建的文件中的模块?另外,如何从包含多个模块的文件中访问特定模块?

  2. require和define有什么区别?

  3. 我成功地从文件中请求了一个模块,但我不知道如何从文件中取出变量,你是怎么做的?

  4. 我正在查看 Dojo 如何需要它的模块,并注意到它为每个文件执行一个 http 请求,但是当您处理大量模块和/或在大型站点上时,效率并不是那么低,您真的想尽量减少必要的 http 请求数吗?有什么办法解决这个问题?

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    通读The Dojo Loader 将提供答案。

    基本上 module = file 并且经常(作为最佳实践)module = file = class(更准确地说是public class 通过dojo/_base/declare 定义) .

    广告#4:您需要使用The Dojo Build System,这将解决所有依赖项并将所有模块放入一个文件(或更多文件,这取决于您的构建配置文件)。查看Dojo Boilerplate 项目,它可能有助于构建您的应用程序。

    【讨论】:

      【解决方案2】:
      1. 如何在一个 js 文件中创建多个模块?

        虽然这是可能的,并且是由构建系统在创建层文件时完成的,但不建议这样做。将多个模块放在一个文件中意味着您必须使用不同形式的 define 为每个模块提供明确的 ID。与从文件名和路径自动派生模块 ID 相比,这不太灵活(与旧式模块相比,这与相对路径一起使得移动和重命名 AMD 模块更加更容易)

      2. require和define有什么区别?

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

      3. 我成功地从文件中请求了一个模块,但我不知道如何从文件中取出变量。

        我不确定 toyu 的意思(没有给出具体的可运行示例),但您所要做的就是创建一个对象作为模块的值并从 define 返回它。这与使用手动“命名空间”以旧方式定义模块的方式相差不远

        //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. 我正在查看 Dojo 如何需要它的模块,并注意到它对每个文件执行 http 请求...

        正如 phusick 所指出的,构建系统可用于将所有模块捆绑到一个文件中(为您提供两全其美的优势 - 开发期间的模块化和部署期间的性能)。它还可以做其他很酷的事情,比如捆绑 CSS 和通过压缩器或通过 Closure 编译器传递 Javascript,检查 ifdef 以创建依赖于平台的构建等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-02
        • 2013-11-08
        • 2023-03-12
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        相关资源
        最近更新 更多