brutedev
@brutedev
Python developer. Future sea captain.

Интернет-магазин на Falcon и VueJS?

Всем привет. Есть идея создать интернет-магазин на python3 falcon на бэкэнде и vuejs2 на фронте. На falcon создать api для получения товаров например, а на vuejs настроить роутинг и рендеринг через это api. Знающие люди, подскажите, какие могут быть проблемы при создании такого проекта и вообще возможно ли такое осуществить?
  • Вопрос задан
  • 2330 просмотров
Решения вопроса 1
copist
@copist
Empower people to give
Описанная тобой схема, при которой приложение разбито на две части: клиентское на JS и серверное, которые обмениваются данными через открытое API по HTTP - называется Rich Internet Application или Single Page Application. Реализуется на любом стеке. PHP/Python/NodeJS/Ruby/Go/C#/Java и др. с одной стороны и Vue/Angular/Meteor/React и др. (тыщи их) с другой стороны.

(Упомянуя схема "микросервисная архитектура" по сути декомпозиция серверной части на незаввисимые модули с открытым API, совсем не обязательно реализовано через HTTP. Частный случай SPA/RIA.)

Проблему назову одну. Только она не даёт покоя. Она выматывает душу, нервы и кошелёк.

Интернет магазин должен быть открыт для индексации поисковым ботам, а HTML генерится в runtime на JavsScript. Только Google умеет выполнять JS, и то весьма посредственно. Остальные вообще JS не трогают. Есть два решения:
для индексации сразу рисовать HTML на стороне сервера
или снимать "отпечатки" HTML c приложения через виртуальный браузер, что сбоит

Отрисовка HTML на стороне сервера (server side render) может быть реализована тремя способами:
* подменять выдачу через серверный язык программирования, то есть вместо шаблонизации в Vue рисовать в Falcon - блин, две шаблонизации, две логики работы с данными (через AJAX и напрямую из базы)
* имитировать исполнение JS на сервере (хм, это возможно опять же несколькими способами) - тут вообще танцы с бубном
* отказаться от PHP/Python/Ruby и др. в пользу NodeJS и изоморфного фрейморка, например MeteorJS или VueJS (Nuxt)

Если на рендеринг для поисковиков забить болт и отказаться от органического трафика, то можно мой опус про эту проблему проигнорировать. Трафик может быть не только органический. Его можно гнать через контекстную или тизерную рекламу, через социалки, через медийную или офлайновую рекламу. Зависит от размера кошелька владельца проекта.

P.S. Про Google: проверено, глючит в тех местах, где клиентский JS начинает подкачку данных через HTTP - гугль обрывает рендеринг и в поисковом индексе лежат пустые HTML страницы. Толку от них никакого.
P.P.S Снятие "отпечатков" HTML для SPA можно через специальные сервисы (prerender.io или brombone.com) или сделать самостоятельно, например через PhantomJS или Electron. В любом случае для проекта с десятком тысяч страниц это расходы на оплату сервиса, либо на мощный сервер. И электрон и фантом виснут, а HTML довольно большие и со временем забивают диск/базу. Опят же надо не забывать про то, что страницы требуют подгрузки данных через AJAX, надо чуть подождать.
Пример: web-mastery-gauge.ru сделан на Angular, для поисковиков HTML отрисовывается через prerender.io - для проекта с 15 страницами это вообще никакой сложности не вызывает.
P.P.P.S. SPA просто идеально для реализации той части пользовательского интерфейса, которая не индексируется поисковыми ботами. Например, то доступно только авторизованным пользователям. В этом случае не требуется server side render и 75% проблем отпадают. В том же интернет-магазине может быть админка - её можно сделать на VueJS.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
neuotq
@neuotq
Прокрастинация
Почему Falcon, а не Django? Хочешь построить микросервисную архитектуру? Иначе все же лучше взять Django, который сократит велосипедостроение, многие вещи уже там сделаны.
Ну и самое главное, обычно для интернет магазинов важен момент с SEO, а значит если javascript не синхронный, то скорее всего будут некоторые трудности. А значит для части страниц нужно использовать рендер на стороне сервера.
А так, конечно же можно сделать интерактивное приложение магазин, никаких других больших проблем быть не должно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы