У меня возникло много вопросов на фоне изучения бэкенд-разработки. Чтобы не плодить топики, постараюсь изложить все вопросы здесь, так как они довольно взаимосвязаны.
Первое, что такое SPA и какие есть примеры? Является ли вконтакте примером SPA? Одностраничный лендинг?
Далее, вопросы асинхронности. Благодаря обилию библиотек можно сделать асинхронное приложение на чем угодно, но на чем все-таки лучше? И (да, это глупо) я не до конца понимаю, что на практике означает асинхронное приложение. Только в теории. Если вернуться к примерам на пальцах - вконтакте асинхронное приложение?
И если перейти к конкретной задаче, как написание чата (с отправкой файлов), насколько эффективна связка django+vue? Чат - это пример асинхронного приложения?
Суть в том, что вместо перехода по ссылкам и загрузки новой страницы при каждом клике по ссылке происходит подгрузка некоторых данных через тот же axios во vue. И тот же vue отвечает за отображение этих данных. То есть SPA - это самое что ни на есть разделение на бэкенд и фронтенд - серверную и клиентскую часть. Ничего сложного.
SPA - single page application, то есть одностраничное приложение. Загрузка страницы происходит один раз, а дальше - запрос-ответ. Благодаря этой схеме при первоначальной загрузке грузятся все стили и скрипты (которые уже содержат шаблоны в себе) и дальнейший обмен с сервером получается достаточно экономичным с точки зрения трафика, что положительно влияет на загрузку сервера и скорость получения данных.
Шарпер, можно, кто ж спорит. Только я предпочитаю грузить все сразу, чтобы закешировалось, поскольку xhr-запросы не кэшируются, а каждый раз гонять почти мегабайт скриптов и стилей на даче с интернетом максимум 25 кб/с совсем не айс.
marsdenden, ужасная практика, на страничку логина вы тоже будете грузить бандл 4мб?
Все ресурсы кэшируются без проблем, вопрос только в настройках вашего сервера.
Предалгаю вам разобраться в вопросе и почитать про code-splitting, прежде чем давать подобные советы.
Через xhr запросы должны загружаться только данные, а статика прекрастно кэшируется и подгужается по мере необходимости.
К примеру если у вас на какой-нибудь странице есть модальное окно то, если правильно приготовить, оно не будет загружено до того своего открытия, и в следующий раз будет уже с кэша.
Плюс правильно настроенный вебпак такие компоненты будет подгружать в фоне с низким приоритетом добавляя на страницу <link rel=”prefetch” href="chunk-name.js">
Мне кажется, шарпер имел ввиду, что можно подгружать стили по мере надобности, которые не нужны для большинства людей, например, для админки. При этом они точно так же закешируются, как и первоначальный бандл
Gmail видел? Там нажимаешь всякие кнопочки, менюшки, письма читаешь, пишешь, отправляешь... но страница при этом не перезагружается. Вся движуха на одной странице.
Или вот google docs, гуглокарта (да и яндексовая тоже), яндекс.музыка и куча всего другого.