• Роутинг на JS. Это легально?

    Stalker_RED
    @Stalker_RED
    Gmail и яндекс.музыука - точно spa.

    Про целиком весь вконтакт не уверен, но если у вас музыка не прерывается при смене страниц, то это не магия, а SPA - т.е. на самом деле полная перегрузка страницы не происходит, а при смене url перерисовывается только часть страницы.

    Свой роутер можно написать, но если он не круче какого-то из популярных, то стоит задуматься о целесообразности.
    Ответ написан
    Комментировать
  • Роутинг на JS. Это легально?

    @afanasiyz
    Javascript-разработчик
    Вечер добрый.
    Вы не тупой, в ангуляре существует модуль роутинга.
    Да, ангуляр сам получает событие изменения адресной строки, и, согласно вашему коду, на него реагирует.
    Ответы:

    1. Да, сервер, в случае SPA просто отдает данные из БД а если роут ему неизвестен - просто отдаст index.html, в котором будет бандл angular (или React) приложения, которое развернется и проверит, что написано в адресной строке, может ли это приложение обработать этот запрос. Все таки изначально, при первом запросе url идет до бэкэнда.
    2. Ну, если вы не хотите использовать Angular - да, такой подход имеет место быть, вопрос только зачем - современные фреймверки позволяют без боли создавать приложения. не нравится ангуляр - пробуйте React или Vue.
    3. Да, ангуляр, как и реакт - для SPA. Не отвечу точно про ВК, судя по всему да, или использует много элементов оттуда.
    4. Да, дает, ваш бэкэнд в данном случае (в случае православного простого SPA) превращается в обертку для БД (очень условно, тапками не кидайте, всякое бывает, я знаю).
    Ответ написан
    1 комментарий
  • Остановка плавающего блока перед футером?

    @Codebaker
    Всё умею, всё могу!
    function checkOffset() {
      var padding = 10;
      var social_float_height_css_px = 120;
      if($('#social-float').offset().top + $('#social-float').height() >= $('#footer').offset().top - padding)
      {
        $('#social-float').css('position', 'fixed');
        $('#social-float').offset({ top: $('#footer').offset().top - social_float_height_css_px - padding });
      } else {
        $('#social-float').css('position', 'fixed');
        $('#social-float').offset({ top: $(document).scrollTop() + padding });
      }
    	$('#social-float').text($(document).scrollTop() + window.innerHeight);
    }
    Ответ написан
    Комментировать