Всем привет! У меня php сайтик на самописном mvc - фреймворке, сейчас хочу использовать методологию БЭМ для своего представления.
Сделал следующее:
Логинимся на наш сервер ( не локальный)
Перехожу в htdocs cd htdocs
Версия git (у меня 2.4.2) git version
Версия php (5.5.26) php -v
Клонирую на сайт git clone --depth 1 -b php-bem-bh git@github.com:bem/project-stub.git ls-php-bem-bh
Иду в эту директорию cd ls-php-bem-bh
Чищу от остальных коммитов — опционально rm -rf .git; git init; git add ./; git commit -m "initial"
Устанавливаю последнюю версию Node.js
Перед установкой необходимо убедиться в наличии libexecinfo. Ставится он так: cd /usr/ports/devel/libexecinfo
sudo make install
Устанавливаем Node.js cd /usr/ports/www/node
sudo make DISABLE_VULNERABILITIES=yes install clean
Проверяю, (должно отобразится Hello World) node
console.log('Hello World');
Для того, чтобы выйти из интерактивной оболочки, необходимо просто нажать Ctrl + C. Ctrl + C (2 раза) Затем устанавливаю менеджер пакетов npm Перехожу в директорию, в которой находился до перехода в текущую директорию cd Устанавливаю curl -L https://npmjs.org/install.sh | sudo sh Проверяю npm -v
Иду в директорию с проектом cd htdocs/ls-php-bem-bh
стягиваю npm и bower зависимости (нужны только для сборки и станка верстальщика) npm install
стягиваем bem/bh-php (можно и через composer: composer require bem/bh
) git clone --depth 1 https://github.com/bem/bh-php.git ./vendor/bem/bh
Собираю проект с помощью ENB:
Конфигурация процесса сборки хранится в файле .enb/make.js. На ее основе ENB подключает все технологии, которые составляют реализацию блоков: шаблоны, зависимости, CSS-правила и JavaScript-функциональность. ./node_modules/.bin/enb make -n смотрим файлы:ls ./desktop.bundles/index/ | grep php Для удобства разработки запускаем сервер: ( переназначаем порт с помощью аргумента –p ) node_modules/.bin/enb server
второй вариант если порт 8080 занят
./node_modules/.bin/enb server -p 3333 На нашем сервере запускаю инструмент для разработки, который при обновлении страницы в браузере будет автоматически пересобирать только ту часть проекта, которую затронули ваши изменения. Результат доступен по ссылке:
http://мой сайт.com:8080/desktop.bundles/index/index.html
или
http://мой сайт.com:3333/desktop.bundles/index/index.html
У меня такие вопросы:
- Как написано здесь https://ru.bem.info/forum/175/ В libs должны лежать бибилиотеки, в т.ч. библиотеки (с суффиксом -php) с bh.php шаблонами. Что-то я немогу их найти, где конкретно искать, и что я сделал не так?
- В папке desktop.bundles/index тоже ничего не вижу с расширением php
- Что мне нужно удалить, какие файлы и с каким расширением создавать?
- как мне передавать данные из своих контроллеров, если структура сайта следующая (упрощенный вариант):
index.php /app |----myapplication.php |----/core |----/config |----/controllers |----/helpers |----/filters |----/models |----/view |----------/contetnt |----------/layout ну и соответственно наш Бэм проект /ls-php-bem-bh |------------------/.bem |------------------/.enb |------------------/.git |------------------/common.blocks |------------------/node_modules |------------------/desktop.blocks |------------------/libs |------------------/desktop.bundles |---------------------------------------/.bem |---------------------------------------/index |-----------------------------------------------index.bemjson.js |-----------------------------------------------index.bemhtml.js |-----------------------------------------------index.html
Это нужно сделать
npm install
, см. https://github.com/bem/project-stub#installationКажется, что там не должно быть ничего перед сборкой кроме bemjson.js. После сборки будет файл с шаблонами, стили, js, и пачка артефактов.
В
desktop.bundles/
описываются страницы в виде папок с файлом<bundle>.bemjson.js
:В шаблонизатор должен приходить bemjson:
Такую структуру могут генерировать либо сами контроллеры, но лучше под это выделить некоторый слой преобразования (подготовки).