Open dima117 opened 8 years ago
Чтобы где-то осталось описание.
Возможны 3 варианта мэппинга:
DefaultBundle
(по умолчанию default
)<bemSettings Mapper="Single" DefaultBundle="index" />
<bemSettings Mapper="ByController" />
Название бандла определяется по названию контроллера: слова разделяются дефисами, приводятся к нижнему регистру, удаляется суффикс "controller" и добавляется префикс p-
(например, MainPageController
→ p-main-page
). Есть идея еще добавить возможность настройки названия бандла для контроллера через C# атрибуты.
Mapper
:<bemSettings Mapper="MyApplication.MyNamespace.InnerNamespace.MyMapperClass" />
Класс мэппера должен быть унаследован от System.Web.Bem.BundleMappers.Mapper
и реализовывать метод abstract string GetBundleName(ControllerContext context)
, получающий на вход контекст запроса и возвращающий название бандла. Также, при желании, можно переопределить метод virtual string GetBundlePath(string bundleName)
, возвращающий по названию бандла путь к файлу с bemhtml шаблонами (по умолчанию формируется путь <RootDir>\<bundleName>\<bundleName>.bemhtml.js
)
Крутотень!
огонь!
а bemhtml сделан на основе портирования нового bem-xjst?
а bemhtml сделан на основе портирования нового bem-xjst?
@veged, там в .NET процессе запускается нода. Соответственно, выполняется та версия bem-xjst, которая была использована при сборке шаблонов.
Спасибо!
Давай переводить на английский и публиковать во всех наших каналах.
@vithar Перевели, можно публиковать: https://github.com/dotnet-bem/system-web-bem/blob/master/README.md
Когда мы скрещивали БЭМ и .NET в прошлый раз, на выходе получили зачатки библиотеки для bemhtml-шаблонизации в приложениях ASP.NET MVC. За прошедший месяц библиотека выросла в NuGet пакет, содержащий всё необходимое для БЭМ-разработки на .NET.
Что изменилось
System.Web.Bem
, по аналогии сSystem.Web.Mvc
Появился механизм мэппинга http-запросов на БЭМ бандлы и его настройки вынесены в конфиг приложения (
Web.config
). Секция конфига должна называтьсяbemSettings
. C её помощью можно задать путь к папке с бандлами (по умолчанию~/Bem/desktop.bundles
) и используемый алгоритм выбора бандла для текущего запроса. Пример:Быстрый старт
nuget install System.Web.Bem -Prerelease
.Bem/desktop.blocks
и добавляем их в декларациюBem/desktop.bundles/default/default.bemdecl.js
(по умолчанию в настройках указано собирать весь проект в один бандл с именемdefault
).System.Web.Bem.BemhtmlResult
и передаем ему в конструкторе bemjson (например, вот так)bem-components
. После установки пакета файлы блоков будут добавлены в папкуBem/libs
. Нужно подключить папки с файлами как уровни переопределения в конфиг enb (должно получиться примерно так).Что дальше
Как видите, часть пунктов из прошлого плана дальнейших действий выполнено. Но не все. По-прежнему планирую разобраться с отладкой серверных шаблонов и померять производительность. Также хочется написать хелперы для контроллеров, чтобы не писать каждый раз
new BemhtmlResult(...)
.Вы же посмотрите демо-странички и поиграйтесь с БЭМ на примере какого-нибудь небольшого проекта. Буду рад, если эта моя штука кому-то будет полезна и с удовольствием отвечу на любые вопросы.