2012-02-17 2 views
2

Я новичок в Dojo, поэтому я не совсем понимаю все возможности Dojo. Вот некоторые вопросы, но я уверен, что некоторые из них, кажется, действительно глупо, так как я не совсем понимаю, как Dojo структурирована еще:Вопросы о модулях Dojo от Dojo newb?

  1. Как создать несколько модулей в один JS файл и получить доступ к модуль в созданном файле? Кроме того, как вы получаете доступ к определенным модулям из файла, содержащего несколько модулей?

  2. В чем разница между требованием и определением?

  3. Мне удалось получить модуль из файла, но я не могу понять, как получить переменные из файла, как вы это делаете?

  4. Я смотрел, как Dojo потребовал свои модули и заметил, что он выполняет HTTP-запрос для каждого файла, но не настолько эффективен, когда вы имеете дело с большим количеством модулей и/или на большом сайте, вы действительно хотели бы свести к минимуму количество необходимых HTTP-запросов? Каким образом это происходит?

ответ

1
  1. Как вы создаете несколько модулей в одном файле js?

    Хотя это можно сделать и выполняется системой сборки при создании файлов слоев, это не рекомендуется. Помещение нескольких модулей в один файл означает, что вы должны использовать другую форму define, которая дает явный идентификатор для них. Это менее гибко, имеющие идентификаторы модуля автоматически полученные из имени файла и пути (это, вместе с относительными путями делает гораздо легче перемещать и переименовывать модули AMD, по сравнению с модулями старого стиля)

  2. В чем разница между требованием и определением?

    define - это расширенная версия запроса, которая определяет новый модуль с его возвращаемым значением.

  3. Мне удалось получить модуль из файла, но я не могу понять, как получить переменные из файла.

    Я не уверен, что Ва 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. Я смотрел, как Dojo требуется его модули и обратите внимание, что он делает запрос HTTP для каждого файла ...

    Как указывал Phusick, система сборки может быть использована для объединения всех модулей в один файл (предоставляя вам лучшее из обоих миров - модульность во время разработки и производительности во время развертывания). Он также может выполнять другие интересные вещи, такие как объединение CSS и передача Javascript через мини-блок или через компилятор Closure, проверку ifdef для создания зависимых от платформы сборок и т. Д.

4

Чтение через The Dojo Loader предоставит ответы.

В основном модуль = файл и очень часто (как вопрос наилучшей практики) модуля = файл = класс (точнее public класса, определенного с помощью dojo/_base/declare).

Объявление № 4: Вам необходимо будет использовать The Dojo Build System, который разрешит все зависимости и поместит все ваши модули в один файл (или больше файлов, это зависит от вашего профиля сборки). Взгляните на проект Dojo Boilerplate, это может помочь при создании вашего приложения.

+0

Да, модуль является файлом – Krishna

Смежные вопросы