2012-11-02 11 views
7

Mam raczej solidny projekt, który ma wszystkie szablony zaimplementowane w Slim i trochę Haml. Zastanawiam się nad przeniesieniem projektu do struktury opartej na Node.js (prawdopodobnie zbudowanej na Tower.js lub czymś podobnym, może na Meteor), jednak chciałbym nadal używać Slim lub Haml do szablonów zamiast przechodzić do innego szablonu silnik.Używanie Slim lub Haml & Sass/SCSS z Node.js?

Czy ktoś to zrobił lub spędził czas, aby dowiedzieć się, jak to osiągnąć, a jeśli tak, jakie były twoje ustalenia?

Odpowiedz

1

Tower.js owija układu silnika express.js szablonu, więc powinieneś być w stanie wykorzystać każdy silnik express.js szablonu poprzez dodanie następujących konfiguracji Tower.View.engine = "haml"

Tower.js używa mint, który ma haml wbudowany, więc potrzebujesz tylko haml module w twoim katalogu.

Slim jest jednak problematyczny. Najpierw nie jest to bezpośrednio w witrynie mint.js, więc musisz zarejestrować nowy mechanizm szablonów. Todo że trzeba

  1. utworzyć funkcję customAdapter że mint.js można użyć, można spojrzeć na źródłowego mint.js. Herezje przykład funkcji adaptera haml:

    function(content, options, callback) { 
        var result; 
        result = require('hamljs').render(content, options || {}); 
        if (callback) { 
        callback.call(this, null, result); 
        } 
        return result; 
    } 
    
  2. trzeba dodać adapter do mint.js wykonując require("mint").engines.slim = customAdapter

Ale nie ma silnika express.js dla Slim, a ponieważ Slim zawiera fragmenty kodu ruby, to raczej nie będzie.
Jeśli naprawdę chcesz to zrobić, musisz utworzyć własny parser javascript dla plików szablonów (prawdopodobnie używając czegoś takiego jak http://opalrb.org/, ale bez konkretnych bibliotek ruby), a następnie utworzyć silnik express.js (który ja nie wiem jak).

Wątpię, czy będzie to bardzo owocne ćwiczenie.
Proponuję, abyś przekonwertował swoje pliki Slim na haml (lub jade, lub dowolny silnik szablonów, który może być używany przez express.js) lub nie wykonuj przeniesienia.
Nie mogłem również znaleźć sposobu na automatyczną konwersję Slim na haml lub inny silnik szablonów (prawdopodobnie ze względu na fakt, że zawiera on kod ruby), więc będziesz musiał wykonać konwersję całkowicie ręcznie.

+0

Z tego co słyszałem od Slim facetów, powinno być stosunkowo łatwe do wdrożenia ze Slim, ale nikt nie zajął się nim za pośrednictwem swoich mechanizmów. Dodatkowo, czy miałbyś jakieś spostrzeżenia, przesuwając to w kierunku Meteor kontra Tower, ponieważ zasadniczo straciliśmy trochę na Tower ze względu na wolniejsze nadchodzące aktualizacje w ostatnim czasie. – ylluminate

+0

Przepraszam, nie znam Meteora. Tower.js jest po prostu klejem pomiędzy bardzo popularnymi modułami i wykorzystuje wewnętrznie express.js do renderowania widoku. Meteor wydaje się być bardziej zaangażowanym frameworkiem i łączy funkcje serwera i klienta. Biorąc to pod uwagę, wyobrażam sobie, że trudniej będzie przenieść istniejącą aplikację na Meteor, a następnie na wersję Tower.js. Niełatwo jest też wkroczyć do Meteorytu w języku szablonów, chociaż są już osoby, które już utworzyły dla niego pakiety (z mojego bardzo szybkiego wyszukiwania w tej sprawie) –