Pull to refresh

Comments 16

Очень вовремя. Завтра же применю его в рабочем проекте: )
И предусмотрено всё, что бывает нужно в практических случаях.
безмодульный синхронный загрузчик
вы серьезно? И если да, то зачем?
Я серьезно.
Yepnope — асинхронный, это означает, что код в каждом файле мне пришлось бы обертывать в callback функции.
Но ведь синхронная загрузка означает совершенно ненужные задержки и подвисание браузера на время этой операции.
Вы видимо пост невнимательно прочли.
Возможно. Я просто так и не понял, почему проще написать свой велосипед, чем взять проверенное решение и обернуть пару десятков файлов в модули.
Ну я могу привести один аргумент: скорость. Конечно тут идет счет на миллисекунды, но все же.
wakeloader сам по себе легче чем requirejs, грузится быстрее, и сама работа requirejs оказалась медленней чем моего загрузчика (смотрите скриншоты).
На девелоперской машине эти миллисекунды ничего не решают. А на продакшене пользователь все равно должен получать склеенные и сжатые скрипты.
Ну тогда уже это дело вкуса, кому что больше понравится.
Мой загрузчик никак не тормозит рендеринг браузера: после того как браузер загрузил и выполнил код загрузчика он идет дальше обрабатывать документ, загрузка остальных скриптов идет асинхронно(не тормозя рендеринг). Если тегу script добавить атрибут async то и загрузка и выполнение кода загрузчика не будет томрозить рендеринг.

Синхронность про которую я говорю — это синхронность в работе скрипта: пока функция require не загрузит скрипты(если скрипт загружен кешем то повторно скрипт не загружается), дальше выполнение кода не пойдет.
Простите, ваша терминология меня сбила с толку.
Вы бы хоть дали ссылку на демо.
Интересно же посмотреть, как браузер встанет раком при синхронной загрузке кучки скриптов, например jQuery и пары десятков плагинов к нему.
Вы достаточно элегантно решили проблему очередности загрузки скриптов — загружаете скрипты в цикле синхронно.
Ну давайте я чейчас демку сделаю а вы протестируете, договорились?
Для себя сделал свой велосипед: gist.github.com/Rulexec/5719946

Правда это совсем не загрузчик, всё равно просто пихаю кучу script-тегов в head. Ну и лишние две строки в каждом файле в начале и конце. Впрочем, если взглянуть на node.js, оно там реализовано так же (например, если попытаться запустить что-нибудь инвалидное на первой строке можно получить:

<code>ruliov@ruliov-laptop:/tmp$ echo glitch > test.js
ruliov@ruliov-laptop:/tmp$ node test.js

/tmp/test.js:1
(function (exports, require, module, __filename, __dirname) { glitch</code>

В теории в среде node.js, а не браузера смогу определить глобальный Module и подпихивать туда настоящие module, exports, require и получить код, который и там и там работает. Да, я знаю, что уже есть такие решения, но не вижу проблем в своём. Потом можно будет просто склеить все подключенные скрипты в один и всё так же будет работать.
Sign up to leave a comment.

Articles