Wiązanie stylów w NancyFx z użyciem Tanka Nancy Optimization framework

Podczas migracji z ASP.NET MVC do NancyFx napotykamy na problem konieczności dostosowania Razora. Poniżej opisany jest krok po kroku sposób jak aktywować możliwość używania składni wiązania arkuszy CSS znanej z ASP.NET MVC:

 Instalacja Tanka Nancy Optimization framework

Framework ten implementuje funkcjonalność grupowania zarówno arkuszy CSS jak i skryptów JavaScript w wiązki (ang. bundles). Na chwilę obecną ten framework jest dostępny w wersji 0.2.0-beta. Zadziwiająca jest mała ilość pobrać pakietu z Nugeta. Do instalacji należy użyć Nugeta:

Framework jest też dostępny na GitHubie.

Tworzenie pakietów z arkuszy CSS

Definicja pakietu odbywa się poprzez stworzenie klasy dziedziczącej z klasy StyleBundle rezydującej w przestrzeni nazw Tanka.Nancy.Optimization. Oto przykład:

Powyższy kod definiuje wiązkę sklejoną z plików bootstrap.css i dropzone.css udostępnioną pod adresem /Content/css. Jak to bywa w NancyFx większość kodu znajduje się w konstruktorze klasy :). Klasy nie trzeba nigdzie rejestrować; Nancy znajdzie ją sama.

Filozofia wiązania jest zbliżona do tej znanej z ASP.NET MVC, gdzie wykonuje się to mniej więcej tak:

W chwili obecnej możemy już użyć pod razorem składni:

Użycie powyższego kodu spowoduje wygenerowanie na wyjściu razora kodu HTML:

Pamiętamy, że adres nie zawiera tyldy (~) na początku t.j. /Content/css nie zaś ~/Content/css.

Dodanie przestrzeni nazw Tanka.Nancy.Optimization do kompilatora razor

Konieczność podawania pełnej nazwy klasy Tanka.Nancy.Optimization.Styles w kodzie razora nie jest wygodne. Można zatem skonfigurować go tak, aby przestrzeń nazw Tanka.Nancy.Optimization była automatycznie dodawana w trakcie kompilacji strony. W tym celu należy stworzyć klasę implementującą IRazorConfiguration i tam wskazać dodatkową przestrzeń nazw do zaimportowania. Klasa może wyglądać tak:

Tej klasy także nie trzeba nigdzie rejestrować, Nancy i tu znajdzie ją sama. Teraz spokojnie można używać skróconej składni

Odnośniki do źródeł

 Suplement

Radość trwała krótko, ponieważ framework zawiera pewien błąd. Więcej na ten temat w poście Błąd w cache Tanka Nancy Optimization.