15 November 2019

Vue Storefront: Второй подход к снаряду

Development for e-commerceMagentoVueJS

Одним из выступленией, заинтересовавших меня на конференции Meet Magento Baltics, было выступление Sander Mangel о возможностях применения Vue Storefront (VSF) совместно с Magento.


PWA является перспективным направлением развития в web-разработке. Разработчики Magento 2 предлагают свой набор инструментов для создания современного, мобильно-ориентированного web-приложения, соответствующего традициям Magento, а разработчики Vue Storefront пошли по пути создания универсального фронта, способного через адаптеры взаимодействовать с различными backend'ами (Magento, WooComerce, Odoo, ...). Несколько месяцев назад я попробовал PWA Studio от Magento и пришёл к выводу, что решение пока что сыровато. Демо-версия Vue Storefront произвела на меня очень хорошее впечатление и мне захотелось пощупать это решение более интимно.


image


Отдаю должное ребятам, подготовившим демку для развёртывания — достаточно соответствовать условиям (иметь предустановленными nodejs, yarn, docker, ...), выбрать все опции по-умолчанию в процессе установки, и можно получить на собственной машине PWA, аналогичное демо-версии. Но мне же не нужно иметь ещё одну демку, мне нужно подключить Vue Storefront к уже имеющимся у меня проектам. И вот тут начинается засада.


У Magento-разработчиков хорошее представление о мире PHP и, как правило, не очень хорошее о мире nodejs. Вещи, тривиальные для второго мира, вызывают ступор у обитателей мира первого. Под катом я описал свой второй подход к развёртыванию Vue Storefront в попытке подключить его к имеющемуся у меня проекту. Сразу скажу, что результатом второго подхода у меня является приложение не подключенное ни к чему, но хотя бы загружающееся в браузер. Очень похоже, что мне придётся сделать ещё не один подход, пока я получу желаемый результат.


Цель


В процессе ознакомления с Vue Storefront мои цели становились всё скромнее и скромнее, пока я остановился на совсем скромной — собрать проект на отдельном сервере и загрузить приложение в браузер.


Рабочее окружение


Для чистоты экспериментов я использую IaaS. Из приведённых в таблице сервис-провайдеров я остановился на Exoscale (моя реферальная ссылка для регистрации). Минимальный депозит при регистрации 5 EUR (+ 21% европейский НДС), но этой суммы хватит, чтобы поиграться не один раз. Сервис действительно снимает деньги только за то, что ты используешь (вычислительные мощности, дисковое пространство, сеть).


Я игрался на small-версии Linux Ubuntu 18.04 LTS 64-bit (2x 2198 MHz CPU, 2 GB RAM, 10GB disk).


Подготовка рабочего окружения:


$ sudo -i
# apt update
# apt upgrade -y

Установка nodejs & npm:


# curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
# apt-get install -y nodejs
# node --version && npm --version
v12.13.0
6.12.0

Установка yarn:


# curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
# apt-get update && sudo apt-get install yarn
# yarn --version
1.19.1

Установка VSF


Предварительно устанавливаем PM2 и vue-storefront/cli:


# npm install pm2@latest -g
# pm2 --version
4.1.2
# npm install @vue-storefront/cli@latest -g

Выходим из root'а и создаём vue-storefront приложение версии 1.10.4 в ручном режиме:


# exit
$ cd ~
$ vsf init 
   Check avalilable versions
? Which version of Vue Storefront you'd like to install? Stable versions (recommended for production)
? Select specific version v1.10.4
? Would you like to use friendly installer or install Vue Storefront manually? Manual installation
   Copying Vue Storefront files

Переходим в корневой каталог приложения и создаём локальную конфигурацию:


$ cd vue-storefront/
$ cat > ./config/local.json 
{
    "server": {
      "host": "0.0.0.0"
    }
}

Базовая конфигурация находится в файле ./config/default.json. Она нас устраивает за исключением опции server.host, т.е. мы собираемся подключаться к серверу удалённо. Порт (server.port) я оставил по-умолчанию — 3000.


Сборка приложения


Вот тут пришлось поэкспериментировать, в конце концов пришёл к такой последовательности команд:


$ npm install
$ yarn install
$ yarn build
$ yarn upgrade # может и не нужно, но на предыдущем шаге попросили выполнить эту команду

Запуск и остановка приложения


$ yarn start
$ pm2 stop all

Подключение к приложению


Адрес приложения: http://xxx.xxx.xxx.xxx:3000/ В результате имеем сообщение об ошибке:


image


Заключение


Да, результат не слишком впечатляет, но зато обошлось и без особого magic'а. Redis, ElasticSearch, GraphQL — это всё настраивается в ./config/default.json и отсутствует на данный момент. А ещё должен быть vue-storefront-api и модуль для репликации данных между vue-storefront-api и Magento 2. Очень надеюсь, что я напишу ещё и про них.


Пока всё. Спасибо за прочтение.

Tags:magento 2vuepwavue storefrontarchitecture
Hubs: Development for e-commerce Magento VueJS
+1
3.2k 18
Comments 10
Top of the last 24 hours