Pull to refresh

Comments 37

UFO just landed and posted this here
Я не очень хорошо знакома с роботами, но они ведь заходят на сайт по ссылке, значит запускают все скрипты, которые и делают подмену текста, я планирую за завтра написать вторую часть где оставшаяся часть будет расписана

Не индексируют они скрипты. На примере комментариев от дискуса. Или там сделано иначе?

Если бы все было так круто, веб бы изменился в течение часа.
Но нет. Поисковики не запускают JS. Пытаются потихоньку, но пока особо нет результатов.

Впрочем, лендинг и не рассчитан на индексацию. Он рассчитан на рекламные каналы, которым наплевать на индексацию.
Если зайти через консоль вебмастера Гугла на сайт, где контент загружается через JS и посмотреть на страницу «глазами» робота, то видно, что js они запускают. И после появления node.js, наверное, все более-менее приличные боты JS стали уметь.
Другое дело — как такой текст ранжируется. Но тут только СЕОшники подскажут, т.к. надо на практике сравнивать.
Верно, не так выразился. Запускать то они его запускают, но вот я не видел пока ни одного JS-сайта, который бы хорошо ранжировался без дополнительных плясок с бубном.

Хотя я надеюсь, что это лишь вопрос времени. Самому надоело думать об индексации при написании более-менее сложного функционала сайта.
Не очень понятно, почему «после появления node.js, наверное все более-менее приличные боты JS стали уметь», как это связано. Node — это серверная платформа, которая просто использует js как язык для разработки. Сервер отдаёт уже готовые html страницы, которые и индексируется поисковиками. Было бы удивительно, если бы поисковые боты могли читать js на сервере.
Потому, что раньше, чтобы получить контент, который генерируется на js, надо было писать интерпретатор js и прикручивать его к парсеру html.

А node.js + headless chromium позволили в «3 строчки» писать ботов, которые сразу и html отлично парсили и js умели исполнять аналогично тому, как это делают браузеры.

Ну, точнее, это больше заслуга headless chomium, но именно node.js дает ту инфраструктуру, которая позволяет запускать это все «тремя строками» и открыла возможность писать полнофункциональные парсеры страниц даже школьникам.

node в данном случае — инфраструктура для ботов, сайт может быть на чем угодно написан. Для бота это все равно html+css+js
UFO just landed and posted this here
У меня тоже :) Был. Потом я переделал его в полноценный сайт и дела пошли гораздо лучше.
Google и Yandex уже неплохо индексируют SPA и с основным содержимым хорошо справляются.
UFO just landed and posted this here
Можете, пожалуйста, уточнить, в чем посыл статьи серии статей?
Надеялся увидеть красивое применение Vue.js (а скорей Nuxt.js) в качестве подобия статического генератора, создание переиспользуемых компонентов которые берут данные из markdown-файлов…
А получил примеры верстки хтмл\цсс (в чем ее полезность в рамках статьи?) и jquery скрипты (зачем нужен jquery если есть vue.js?).
Такое количество кода лучше выносить на какой-нибудь гитхаб.
В конце второй части я именно так и сделаю
Поэтому она и называется: Часть 1. Все что будет связано с Vue будет в следующей части
Очень странная статья, прям с первого абзаца. Надо обновить сайт и выбор пал на lp. Может вы имели ввиду spa?
В теле страницы куча текста! С такой разметкой же невозможно работать. А если надо поменять информацию? Это надо лезть в html, искать нужное, и менять в нескольких местах

А почему бы не создать сайт с помощью vue и добавить имитацию базы?

Аж сгораю от любопытства, "имитация базы" на vue для редактирования контента — без сервера?


По теме — даже если на выходе всего одна страница — можно использовать пост-процессор html-include и в процессе работы все запчасти и кусочки держать в отдельных подшаблонах, готовую страницу сбилдит вебпак/парсел/ролап
Пример
image

Зачем в лендинг-пейдж тащить тонну скриптов — vue и jquery?
Можно же использовать шаблонизатор (например nunjucks/twig), вместо базы использовать json со строками на всех нужных языках. Gulp-ом или webpack-ом собрать статические странички соответственно языкам «инклюдя» туда нужные строки из «базы», например page-ru.html, page-en.html и т.д.
Чтоб seo-шники не нервничали по поводу дублирования контента, в head главной странички добавить link rel=«alternate» hreflang=«en» href=«page-en.html», и в head переведённой странички добавить link rel=«alternate» hreflang=«ru» href=«page-ru.html»

Есть большая беда с вашей статьёй: уровень знания вёрстки, судя по коду, у вас довольно начальный или устаревший. Это даже не уровень хорошего новичка, которого возьмут на работу верстальщиком.


И нет ничего плохого, в том, чтобы быть новичком. А если вы не новичок, то знайте: в коде много ошибок и устаревшие подходы.


Как бы то ни было, вы радостно демонстрируете этот код в рамках наверняка очень полезной статьи. Но код плохой, я бы никому не рекомендовал делать что-то подобное.


Может быть когда вы перейдёте к части про Vue.js, я буду ошеломлён и повержен. Но сейчас это урок плохой вёрстки.

UFO just landed and posted this here
А где хороший?
А как надо писать?
Дайте примеры раз все так ужасно

Ну давайте разбираться. То, что я приведу ниже — это не повод поспорить (оправдаться) по каждому пункту, это общепринятые практики в современной вёрстке. Я её практикую сам и учу в рамках HTML Academy — это мой ответ на вопрос «а где научиться?»


1. Опасные селекторы: #main может встречаться только один раз на странице, а значит никакой универсальности и сделать второй элемент с такими же стилями не получится. Плюс селектор по #id специфичнее, а значит его будет сложно перебить. Напротив, header может встречаться несколько раз на странице, а вы к нему обращаетесь глобально, мол, вообще все header на странице. Селектор .scroll-nav li a слишком зависит от структуры HTML, которая может и будет меняться.


#main { … }
header { … }
.scroll-nav li a { … }

Один из признаков того, что у вас проблемы с селекторами — это !important, который сам по себе является антипаттерном.


.lang-first-init {
    display: none !important;
}

Вывод: сегодня подавляющее большинство разработчики пишут селекторы вида .main и .header, это самое гибкое и удачное решение. Познакомьтесь с подходом БЭМ — это хорошая система именования классов и описания интерфейсов, которая сегодня мейнстрим в разработке интерфейсов.


2. Синтаксические ошибки: Это не CSS-комментарии (они выглядят так: /* … */) и такой код ломает следующий за ним селектор, то есть все стили для header не применятся.


<---------------header--------------->
header { … }

Да, это «всего лишь пример в статье», но это показывает небрежность. Скопированный отсюда код сломается.


3. Префиксы: В одном месте вы пишете очень подробную батарею префиксов для свойства transition, а в другом не пишете для animation и @keframes, притом, что кроссбраузерность у transition на поколение-два браузеров лучше, чем у animation.


.transition{
    -webkit-transition: all 500ms linear;
    -moz-transition: all 500ms linear;
    -o-transition: all 500ms linear;
    -ms-transition: all 500ms linear;
    transition: all 500ms linear;
}
@keyframes hideBlock {
    …
}

Уже года три верстальшики не пишут префиксы для браузерных свойств руками. Для этого используется Автопрефиксер, которому вы, при желании, можете скормить список браузеров, которые вы хотите поддерживать. Код с префиксами слишком раздувается, а их наличие — признак устаревшего кода и отсутствия шага сборки (оптимизации) этого кода.


4. Технологии вёрстки: Вы используете только флоаты float: left, которые хоть и продолжают работать во всех браузерах, но уже пару-тройку лет как уступили место флексам display: flex. Флексы гораздо удобнее: их не нужно клиарить, вертикальное выравнивание и колонки одинаковой высоты в них — ерундовое дело.


<div class="clearfix"></div>

Когда в коде есть .clearfix, то этот код с душком: либо устарел код, либо навыки автора.


5. Лишние атрибуты: У вас вроде есть и <nav>, и <header>, и даже пара заголовков <h3> — за что вам отдельное спасибо. Но есть места, где мусорные (ненужные) атрибуты показывают небрежность.


<link rel="stylesheet" type="text/css" href="css/style.css" media="all">
<link rel="stylesheet" href="css/style.css">
…
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script src="scripts/jquery.min.js"></script>
Статья ни о чем. Если опустить вступление, то 98% статьи это листинг кода сомнительного качества.
UFO just landed and posted this here
Почему же все так подробно?
Да все дело в том, что когда я только начинала и натыкалась на статьи на хабре мне это казалось непонятным. «Добавим метод» — куда? почему? Ответ — это же и так понятно, тривиально. Вспоминая эти свои поиски нужной мне информации, я решила сделать более подробно чем привыкли тут.
Запомните если вы в этой сфере уже давно и вам все понятно, то есть много начинающих разработчиков которые этого могут не понимать
Ну а раз тут все написано неправильно, прошу вас выложить переделанный данный код в «Правильном и современном» варианте
Меня очень пугают сайты, где начинают мешать jquery и vue. Ненадо так делать…
а что у нас Vue использует какой то другой язык? А, он наверно на CSS написан? Или как? А создаете Vue компонент вы наверно прямо в HTML? Скрипты при этом не используются?
Vue это не более чем обертка для более быстрого и красивого написания того же кода
Что значит использует какой-то другой язык? Jquery не используется во вью. Когда пишут для вью библиотеку и по факту она является просто оберткой Jquery, то от такой библиотеки надо бежать и не оборачиваться, а вы собственноручно (!) пытаетесь засунуть сюда Jquery. Jquery мощная либа, но она ушла в прошлое. Почему? Потому что очень затратная по времени и ресурсам и на место ее пришли «реактивные» react, angular, vue. И ключевое здесь «вместо», а не «вместе».

Решая использовать один из этих реактивных «фронт-енд фреймворков», первым делом забудьте про Jquery. Не можете забыть? Не используйте фремворки
UFO just landed and posted this here
UFO just landed and posted this here
Лучше иметь один источник состояния или модель, или (простите) ДОМ.
$("#flag-menu").click(function () {
        isMenuClicked = true;
        showOrHideMenu();
    })


Вместо addClass('show') + removeClass('hide') в If'ах можно попробовать toggleClass('show'), изначально элемент спрятан.
Зачем jQuery и Vue.js вместе? Это было бы обосновано если бы был постепенный перевод уже давно работающего сайта с jQuery на Vue, но использовать их вместе с нуля дикая тупость.
Sign up to leave a comment.

Articles