2012-05-08 3 views
0

Кто-нибудь использовал LabJs в сочетании с javascriptmvc steal? что подразумевает загрузку зависимостей на уровне дочерних элементов, а также использование преимуществ повышения производительности Async LabJs.Лаборатория js + Javascriptmvc steal

a.js

.....

украсть (../ b.js) .then (../ c.js) //c.js требует b.js и d.js быть загружен, прежде чем он может загрузить

b.js

.....

украсть (../ d.js) // (необходимо загрузить d.js, когда б .js, загрузка d.js для лучшей классификации и обслуживания)

Любые статьи или опыты для labjs + steal будут замечательными.

ответ

0

steal собирается создать ваше производственное приложение в одном JS-файле. Вы можете загрузить этот файл, как хотите.

0

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

понятие аннотирования зависимостей вложенными внутри каждого сценария означает, что, само по себе, вы не можете в полной мере воспользоваться параллельной загрузки, поскольку загрузчик не знает, какие сценарии зависят от A, пока не закончит загрузку A и не увидит, что ему нужны B и C. Конечно, когда он знает о B и C, он может загружать эти два параллельно, но он не может загрузить B и C параллельно с A.

Другая проблема заключается в том, что LABjs (и большинство других динамических загрузчиков сценариев), строго говоря, неблокирует поведение, поэтому, если вы загружаете некоторые сценарии, подобные этому, у вас будет проблема:

- зависит от В и С

D - зависит от А и Е

Когда А завершает загрузку, а затем начать загрузку В и С, вы не можете изначально (без дополнительных предварительных усилий) сделайте D до тех пор, пока не будут выполнены B и C (и, следовательно, A).

Причины этого довольно сложны для объяснения, но достаточно сказать, что этот сценарий является проблематичным для динамической загрузки с вложенной аннотациями зависимостей.


Однако, если вы знаете о дереве зависимостей в начале (то есть, вы не ждать загрузок скриптов, чтобы узнать об их вложенных аннотациях зависимостей), вы можете легко воспользоваться динамической параллельной загрузкой сохраняя при этом порядок. Вы можете легко сделать это:

B C E D

и загрузить все 5 из них параллельно, при этом убедившись, что они выполняют в этом правильном порядке, как указано. Лучший способ выяснить, что дерево зависимостей и необходимый порядок выполнения - это процесс сборки, который просматривает все ваши сценарии и определяет, что такое список и его необходимый порядок.

Используя LABjs, что цепь выше будет выглядеть следующим образом:

$ LAB.setOptions ({AlwaysPreserveOrder: истинно}) скрипт ([В, С, А, Е, D]);.

Довольно простой и понятный, предполагая, что вы знаете, что это за список/заказ. Просто у вас скрипт сборки отбросит одну строку кода на вашу HTML-страницу и бум, вы в порядке.

Если у вас нет такого сценария сборки, чтобы сделать это (у меня свой, что я построил для своих различных проектов, которые нуждаются в таком роде вещь), у вас есть два варианта:

  1. Не использовать вложенная аннотация по зависимостям. Управляйте своим списком зависимостей (приведенный выше список) самостоятельно и убедитесь, что он в правильном порядке. В течение десятилетия или более, так люди, использующие скриптовые теги в браузерах, работали нормально, поэтому, вероятно, этого вполне достаточно для большинства сайтов. На многих моих сайтах у меня есть сети LABjs, которыми я управляю вручную, и это не проблема, как и тысячи других сайтов, которые используют LABjs.

  2. Используйте скрипт сборки (например, Steal), который просто помещает их всех в один файл (конечно, он тоже должен найти правильный порядок!). Вы не получаете преимущества параллельной загрузки. Облом.

Надеюсь, это пролить свет на проблемы.

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