Додзё строит...? Что теперь?

Некоторое время назад я искал решение для "флеш-памяти нестандартного содержимого" при использовании тем Dojo и Dojo. Кто-то предложил объединить все путем создания сборки, и это сократит время загрузки / разбора и избавит от необходимости использовать наложения предзагрузчика и т. Д.

Тем не менее, похоже, что Dojo крайне не хватает простых, "реальных" примеров использования и учебных пособий по многим его функциям, особенно это касается. Многие ресурсы рассказывают, как настроить сборку, но не как ее реализовать.

Допустим, у меня есть это в "pageinit.js":

require([
    'dojo/parser', 
    'dojo/dom',
    'dojo/dom-class',
    //etc...

    'dijit/form/ValidationTextBox', 
    'dijit/form/CheckBox',
    // etc...

    // Dom Ready call
    'dojo/domReady!']
    function(
        Parser, 
        Dom,
        Class,
        // etc...){
    // do stuff with parser, dijits, so on.
    }
)

Для краткости некоторые звонки по требованию были удалены, но есть несколько dom требует, style классы, некоторые dijitsи т. д. Когда эта страница загружается, появляется вспышка нестандартного содержимого, а затем все в порядке.

Используя Dojo Web Builder, я выбрал используемые модули и запустил его. Он загрузил zip с большим количеством файлов, включая новый dojo.js а также custom_layer.js,

Итак, мой вопрос сейчас, как я могу использовать эти новые комбинированные и минимизированные файлы вместо моей "некомпилированной" версии? Что я require? Или я?

Так неловко...

2 ответа

Решение

Во-первых, давайте разберемся, как работает API AMD(требуют / определяют).

require([
  'dojo/parser', 
  'dojo/dom',
  'dojo/dom-class'
], function(parser, dom, domClass){
});

Это вызовет функцию require, указав, что мне нужно три модуля для выполнения некоторой работы. Требуется получить каждый модуль. Если будет определять, был ли загружен модуль. Если этого не произойдет, он получит файл асинхронно и загрузит модуль во время выполнения javascript. Как только require извлечет все ваши требуемые модули, он выполнит ваш обратный вызов (функцию), передав модули в качестве аргументов функции.

Далее давайте разберемся со сборкой. Сборка Dojo делает именно то, что вы описываете. Это сожмет кучу отдельных файлов в один файл. это ускорит загрузку страницы и предотвратит ту "вспышку", которую вы описываете.

Наконец, собрав все вместе, вы должны включить custom_layer.js файл вместе с dojo.js файл.

<script type="text/javascript" src="path/to/dojo/dojo.js" />
<script type="text/javascript" src="path/to/custom_layer.js" />

Веб-браузер загрузит эти два файла и оценит код. Вместо того, чтобы лениво загружать каждый модуль в свой собственный файл, модуль уже будет загружен, потому что он был определен в custom_layer.js,

Таким образом, ответ на ваш последний вопрос заключается в том, что вы НЕ должны изменять какой-либо код на основе конкретной версии кода (исходный код или пользовательская сборка), которую вы используете. Используя AMD API, он должен просто работать.

Не уверен, что это лучший метод или нет, но когда я впервые начал (несколько дней назад), я видел вспышку нестандартного контента и где-то видел несколько примеров, о которых нужно просто спрятать. <body>, Parse покажет это, когда будет готов что-то показать.

<body style="visibility: hidden;">
Другие вопросы по тегам