Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   AMD и подгрузка css (https://javascript.ru/forum/misc/51873-amd-i-podgruzka-css.html)

FanAizu 23.11.2014 14:19

AMD и подгрузка css
 
Читаю сейчас статью про модульную систему AMD в javascript http://addyosmani.com/writing-modular-js/
и не поймут одну вещь. Вот здесь говорится, что помимо javascript ассинхронно можно подгружать css файлы:

// With AMD, it's possible to load in assets of almost any kind
// including text-files and HTML. This enables us to have template
// dependencies which can be used to skin components either on
// page-load or dynamically.

define(['./templates', 'text!./template.md','css!./template.css'],
function( templates, template ){
console.log(templates);
// do some fun template stuff here.
}
});

Но дальше идет предупреждение, что не всегда можно установить точно загрузился ли уже css или нет:

Note: Although css! is included for loading CSS dependencies in the above example, it's important to remember that this approach has some caveats such as it not being fully possible to establish when the CSS is fully loaded. Depending on how you approach your build, it may also result in CSS being included as a dependency in the optimized file, so use CSS as a loaded dependency in such cases with caution.

В чём прикол, почему нельзя установить загрузился css или нет? Если я правильно понимаю, то любой файл грузится, например, используя ajax.
Если так, то в ajax есть событие успешной загрузки файла, точнее не файла, а вообще получения ответа с данными от сервера и тогда не должно быть никаких проблем с определением загрузился ли css файл или нет. Поясните, пожалуйста, этот момент.

И второй мини вопрос. AMD позиционируется, как модульная система с асинхронной загрузкой модулей. Почему-то используя require.js мое приложение работает, модули подгружаются, но во вкладке net в фаербаге нету никаких ajax запросов на сервер. Как тогда подгружаются модули с сервера? Или для современных браузеров с поддержкой вебсокетов юзаются веб сокеты, а для старых браузеров - ajax запросы? Спасибо.

Vlasenko Fedor 23.11.2014 22:47

Скрипты и css файлы подгруженные с помощью аякс не кешируются в браузере. Это минус
Нет аякс запросов, так как скрипты и стили подключаются динамически
var link = document.createElement("link");
link.rel = "stylesheet";
link.href = 'http://mysite/style.css';
document.head.appendChild(link);

var script = document.createElement("script");
script.src = 'http://mysite/myscript.js';
document.head.appendChild(script);

FanAizu 23.11.2014 23:53

Цитата:

Сообщение от Poznakomlus (Сообщение 342540)
Скрипты и css файлы подгруженные с помощью аякс не кешируются в браузере. Это минус
Нет аякс запросов, так как скрипты и стили подключаются динамически
var link = document.createElement("link");
link.rel = "stylesheet";
link.href = 'http://mysite/style.css';
document.head.appendChild(link);

var script = document.createElement("script");
script.src = 'http://mysite/myscript.js';
document.head.appendChild(script);

Скажите, этот исходный код из requir-а взят или это вы сами для примера написали?

Vlasenko Fedor 24.11.2014 00:15

Для примера
https://github.com/jrburke/requirejs...ter/require.js стр 1842 функция load

FanAizu 24.11.2014 00:58

Цитата:

Сообщение от Poznakomlus (Сообщение 342547)
Для примера
https://github.com/jrburke/requirejs...ter/require.js стр 1842 функция load

благодарю


Часовой пояс GMT +3, время: 17:35.