6 мая у сайта очередная памятная дата - 06.05.2019 был запущен написанный мною сайт. В закрытом режиме и параллельно с тем сайтом, о котором я писал ранее (движок question2answer).
Тогда он выглядел несколько иначе, чем сейчас
С тех пор было много изменений, были они часто и довольно стабильно - по пятницам в 22.00 - 23.00.
В какой-то момент это прекратилось. Последнее значимое изменение было в январе - были добавлены ограничивающие теги. Последующие изменения касались только рекламы.
Но прекратились они не потому, что я решил забросить развитие сайта. Просто я задумал глобальное обновление.
Одним из ранних изменений было внедрение на сайт Ajax - раньше новые уведомления можно было получить только перезагрузив страницу (или перейдя с одной странице на другую), а, например, поставленный лайк заставлял всю страницу перезагружаться. Ajax избавляет сайт от подобного. Эта технология позволяет взаимодействовать с сервером без перезагрузки страницы. Например, зачем перезагружать страницу, когда Вы ставите лайк? Ведь на ней ничего не изменилось, кроме того самого лайка.
Посмотрите на сайт - у него есть шапка, нижняя панель с уведомлениями. Если Вы пользуетесь планшетом или компьютером, то у него также есть левая навигационная панель. Они ведь почти не изменяются, но когда Вы переходите с одной страницЫ на другую - они также перезагружаются.
Глядя на социальные сети (а они подобным не страдают - там обновляется только центральная часть), я стал думать, что надо бы и мне на нашем сайте сделать подобное…
Второй причиной стало желание интегрироваться в соцсеть. Просто для того, чтобы пользователи соцсети могли пользоваться сайтом не выходя из соцсети (для увеличения посещаемости сайта). Тогда я узнал про vk-mini-apps, или «Сервисы Вконтакте» - мини приложения, запускаемые непосредственно в приложении VK или на сайте ВКонтакте.
И тогда же я узнал, что есть такая штука, как React - JS Фреймворк, который как раз позволит мне воплотить эти идеи.
Примерно в конце ноября я нашёл на YouTube курс по React, и стал его потихоньку смотреть, выполняя поставленные там задачи (адаптируя их под свои задумки). Если кому интересно - ссылка на канал вот
(плейлист «Курс "React JS - путь самурая 1.0", уроки, практика»).
После просмотра курса я начал воплощать свои задумки параллельно. Первая часть - переделка основного сайта, вторая - написание сервиса ВК.
Собственно их я сейчас и хочу анонсировать. Кодовое название «Отвечай 2.0» и «Отвечай-мини» :)
Немного технических подробностей (постараюсь коротко и не слишком сложно):
Вам, как пользователю, важно получить страничку в своём браузере. Собственно это Ваша цель при посещении сайта.
Как страничка строится сейчас:
Вы отправляете запрос на определённый адрес;
Сервер получает этот запрос, анализирует его (на какой адрес он был отправлен, какие данные с ним пришли), запрашивает данные из базы, проводит какие-то модификации, если нужно, и передаёт его в определённый шаблон;
Шаблон, на основе своих правил и полученных данных, генерирует страницу и передаёт её Вам;
Вместе со страницей Вы получаете скрипты, которые также модифицируют полученную Вами страницу, но уже у Вас в браузере (например с сервера приходит дата в не очень читаемом формате, но скрипты преобразовывают её в дату, или в надпись «сколько-то минут/часов назад»).
Как страничка будет строиться в новой версии:
При обращении к какому-то адресу Вы получите пустую страницу и много скриптов. Фактически это будет приложение, только запускаться оно будет внутри браузера;
Приложение (в Вашем браузере) будет анализировать адреса, к котором Вы обращаетесь, и отправлять запросы на другие адреса сервера;
Получив такой запрос, сервер будет его анализировать, брать данные из базы, но вместо передачи их в шаблон, он будет формировать из них определённую структуру данных (json) и возвращать эти данные приложению;
Приложение получив эти данные, построит на их основе страницу и отобразит Вам.
Серверная часть по умному зовётся Backend (back - задняя сторона, то, чего пользователь не видит), приложение - Frontend (front - перед, лицо - то, что находится непосредственно перед пользователем).
Frontend посылает запросы в Backend, получает ответы и работает основываясь на них.
Звучит это всё, возможно, страшно, но на деле ничего страшного нет - соцсети давно работают по такому принципу.
Зачем всё это надо?
Хочу :)
Подобная структура позволит снять с серверной части задачи по построению страницы;
Позволит сократить трафик между Вами и сервером;
Улучшит пользовательский опыт (сайт банально будет более отзывчивым);
Позволит внедрять интерактивные штуки в интерфейс (например скрытие/отображение элементов по нажатию на кнопку);
Позволит в будущем добавлять интерфейсы, не меняя серверную часть. Например сейчас речь идёт про 2 приложения (мини и полноценный сайт), а в будущем, например, можно будет сделать приложения для мобильников (как вариант), или ещё для чего…;
Переписывание серверной части должно повысить её стабильность и производительность - всё же за год я набрался какого-то опыта, и вижу ошибки, которые совершал ранее.
Также давно хотел изменить дизайн сайта. Отойти от использования сторонних стилей (bootstrap) и сверстать его самостоятельно.
Как это будет выглядеть?
Версия для компьютера и планшета
Версия для мобильного
Мини
(подробности чуть ниже - в новом блоге)
Когда эти обновления будут установлены?
Не известно. Сделано много работы, но осталось ещё больше. Я создал отдельный блог, в котором буду публиковать новости по разработки. Это обычный блог, без обязательных уведомлений. Если кому-то интересно следить за этими новостями - подписывайтесь (на данный момент там есть видео с демонстрацией того, что сделано сейчас). Новости разработки будут там. В «Новости проекта» их публиковать не буду. https://otvechai.com/blog/devnews/
По идее я должен полностью реализовать тот функционал, который есть на текущей версии сайта (чтобы новая версия не была хуже старой) и только после этого публиковать его для публики. Возможно версия «мини» появится раньше, чем основной сайт - просто потому, что её функционал будет урезан. Я не планирую на данный момент включать туда блоги. Только вопросы, профиль и личка. (Если эта версия взлетит - для блогов можно будет сделать отдельное приложение). Также там не будет админско-модераторской части (оно там не нужно - админить-модерировать можно будет из основного сайта). Объём работы меньше, скорее всего и закончена эта работа будет раньше.
Как будет происходить обновление?
На данный момент я стараюсь сделать так, чтобы новая версия серверного приложения была совместима с текущей базой (если я и вношу какие-то изменения в базу, они не должны влиять на работу старого приложения). Это значит, что будет период, в который будут работать сразу и старая и новая версия сайта. И уж когда новая версия «приработается» (будут найдены и устранены возникшие проблемы), тогда будет осуществлён полный переход на новую версию (и её дальнейшее развитие).
Ссылки в старой и новой версии отличаться не будут (если Вы сохранили ссылку на вопрос в старой версии сайта, она будет работать и в новой)
В общем оставайтесь с нами, должно стать только лучше :)
Тогда он выглядел несколько иначе, чем сейчас
С тех пор было много изменений, были они часто и довольно стабильно - по пятницам в 22.00 - 23.00.
В какой-то момент это прекратилось. Последнее значимое изменение было в январе - были добавлены ограничивающие теги. Последующие изменения касались только рекламы.
Но прекратились они не потому, что я решил забросить развитие сайта. Просто я задумал глобальное обновление.
Одним из ранних изменений было внедрение на сайт Ajax - раньше новые уведомления можно было получить только перезагрузив страницу (или перейдя с одной странице на другую), а, например, поставленный лайк заставлял всю страницу перезагружаться. Ajax избавляет сайт от подобного. Эта технология позволяет взаимодействовать с сервером без перезагрузки страницы. Например, зачем перезагружать страницу, когда Вы ставите лайк? Ведь на ней ничего не изменилось, кроме того самого лайка.
Посмотрите на сайт - у него есть шапка, нижняя панель с уведомлениями. Если Вы пользуетесь планшетом или компьютером, то у него также есть левая навигационная панель. Они ведь почти не изменяются, но когда Вы переходите с одной страницЫ на другую - они также перезагружаются.
Глядя на социальные сети (а они подобным не страдают - там обновляется только центральная часть), я стал думать, что надо бы и мне на нашем сайте сделать подобное…
Второй причиной стало желание интегрироваться в соцсеть. Просто для того, чтобы пользователи соцсети могли пользоваться сайтом не выходя из соцсети (для увеличения посещаемости сайта). Тогда я узнал про vk-mini-apps, или «Сервисы Вконтакте» - мини приложения, запускаемые непосредственно в приложении VK или на сайте ВКонтакте.
И тогда же я узнал, что есть такая штука, как React - JS Фреймворк, который как раз позволит мне воплотить эти идеи.
Примерно в конце ноября я нашёл на YouTube курс по React, и стал его потихоньку смотреть, выполняя поставленные там задачи (адаптируя их под свои задумки). Если кому интересно - ссылка на канал вот
После просмотра курса я начал воплощать свои задумки параллельно. Первая часть - переделка основного сайта, вторая - написание сервиса ВК.
Собственно их я сейчас и хочу анонсировать. Кодовое название «Отвечай 2.0» и «Отвечай-мини» :)
Немного технических подробностей (постараюсь коротко и не слишком сложно):
Вам, как пользователю, важно получить страничку в своём браузере. Собственно это Ваша цель при посещении сайта.
Как страничка строится сейчас:
Вы отправляете запрос на определённый адрес;
Сервер получает этот запрос, анализирует его (на какой адрес он был отправлен, какие данные с ним пришли), запрашивает данные из базы, проводит какие-то модификации, если нужно, и передаёт его в определённый шаблон;
Шаблон, на основе своих правил и полученных данных, генерирует страницу и передаёт её Вам;
Вместе со страницей Вы получаете скрипты, которые также модифицируют полученную Вами страницу, но уже у Вас в браузере (например с сервера приходит дата в не очень читаемом формате, но скрипты преобразовывают её в дату, или в надпись «сколько-то минут/часов назад»).
Как страничка будет строиться в новой версии:
При обращении к какому-то адресу Вы получите пустую страницу и много скриптов. Фактически это будет приложение, только запускаться оно будет внутри браузера;
Приложение (в Вашем браузере) будет анализировать адреса, к котором Вы обращаетесь, и отправлять запросы на другие адреса сервера;
Получив такой запрос, сервер будет его анализировать, брать данные из базы, но вместо передачи их в шаблон, он будет формировать из них определённую структуру данных (json) и возвращать эти данные приложению;
Приложение получив эти данные, построит на их основе страницу и отобразит Вам.
Серверная часть по умному зовётся Backend (back - задняя сторона, то, чего пользователь не видит), приложение - Frontend (front - перед, лицо - то, что находится непосредственно перед пользователем).
Frontend посылает запросы в Backend, получает ответы и работает основываясь на них.
Звучит это всё, возможно, страшно, но на деле ничего страшного нет - соцсети давно работают по такому принципу.
Зачем всё это надо?
Хочу :)
Подобная структура позволит снять с серверной части задачи по построению страницы;
Позволит сократить трафик между Вами и сервером;
Улучшит пользовательский опыт (сайт банально будет более отзывчивым);
Позволит внедрять интерактивные штуки в интерфейс (например скрытие/отображение элементов по нажатию на кнопку);
Позволит в будущем добавлять интерфейсы, не меняя серверную часть. Например сейчас речь идёт про 2 приложения (мини и полноценный сайт), а в будущем, например, можно будет сделать приложения для мобильников (как вариант), или ещё для чего…;
Переписывание серверной части должно повысить её стабильность и производительность - всё же за год я набрался какого-то опыта, и вижу ошибки, которые совершал ранее.
Также давно хотел изменить дизайн сайта. Отойти от использования сторонних стилей (bootstrap) и сверстать его самостоятельно.
Как это будет выглядеть?
Версия для компьютера и планшета
Версия для мобильного
Мини
(подробности чуть ниже - в новом блоге)
Когда эти обновления будут установлены?
Не известно. Сделано много работы, но осталось ещё больше. Я создал отдельный блог, в котором буду публиковать новости по разработки. Это обычный блог, без обязательных уведомлений. Если кому-то интересно следить за этими новостями - подписывайтесь (на данный момент там есть видео с демонстрацией того, что сделано сейчас). Новости разработки будут там. В «Новости проекта» их публиковать не буду. https://otvechai.com/blog/devnews/
По идее я должен полностью реализовать тот функционал, который есть на текущей версии сайта (чтобы новая версия не была хуже старой) и только после этого публиковать его для публики. Возможно версия «мини» появится раньше, чем основной сайт - просто потому, что её функционал будет урезан. Я не планирую на данный момент включать туда блоги. Только вопросы, профиль и личка. (Если эта версия взлетит - для блогов можно будет сделать отдельное приложение). Также там не будет админско-модераторской части (оно там не нужно - админить-модерировать можно будет из основного сайта). Объём работы меньше, скорее всего и закончена эта работа будет раньше.
Как будет происходить обновление?
На данный момент я стараюсь сделать так, чтобы новая версия серверного приложения была совместима с текущей базой (если я и вношу какие-то изменения в базу, они не должны влиять на работу старого приложения). Это значит, что будет период, в который будут работать сразу и старая и новая версия сайта. И уж когда новая версия «приработается» (будут найдены и устранены возникшие проблемы), тогда будет осуществлён полный переход на новую версию (и её дальнейшее развитие).
Ссылки в старой и новой версии отличаться не будут (если Вы сохранили ссылку на вопрос в старой версии сайта, она будет работать и в новой)
В общем оставайтесь с нами, должно стать только лучше :)