2011-11-22 13 views
6

Za każdym razem, gdy piszę mój kod HTML w Jade, otrzymuję dodatkowe białe znaki po wartości każdego elementu.Dodatkowe białe znaki w wartościach HTML renderowanych przy użyciu Jade

Na przykład, mam taką linię, jak to w moim Jade Szablon:

label(for="keyword") Keyword 

A gdy jest renderowane, źródłem będzie wyglądać następująco:

<label for="keyword_1">Keyword 
      </label> 

Ran do niektórych problemów z ten dodatkowy biały tekst w moim CSS. Poza tym to po prostu nie wygląda tak porządnie :)

Ktoś wie, w jaki sposób mogę zapobiec jego wstawieniu?

+0

Upewnij się, że nie ma żadnych spacji po słowach "Słowo kluczowe" w Jade, być może to powoduje problem. – alessioalex

+0

Dzięki, sprawdziliśmy dwukrotnie, aby upewnić się, że nie mam żadnych i nadal mam problem . – Jon

Odpowiedz

10

Sprawdź aktualizację na dole

Zakładam, że używasz express - sprawdzić ustawienia aplikacji.

app.set('view options', { pretty: false }) 

Jeśli masz jade renderowania w pretty trybie (pretty: true) to będzie zorganizować wygenerowany źródło (tagów) z zagnieżdżonego wcięcie. Wyłączenie ładnego drukowania powinno rozwiązać problem (chociaż upewnij się, że nie masz wolnego miejsca, jak wskazano przez @alessioalex).

Jeśli masz powód, dla którego chcesz wydrukować ładne formatowanie (specyfikacja klienta, w moim przypadku), możesz wypróbować inne rzeczy. Miałem podobny problem z występowaniem z tagiem textarea; frustrujące, ponieważ białe spacje są w rzeczywistości wstrzykiwane do treści formularza. Sposób mam wokół to było osadzić dosłowne HTML z tagiem zamykającym:

<textarea name="someField"></textarea> 

docs może dać trochę więcej szczegółów (szukaj html w tym przypadku). Jest otwarty issue #341 na github co sugeruje podejście takie jak this one for scalate, ale obecnie nie działa w jade (od wersji 0.19.0).

HTH

Aktualizacja

Ok - subtelny i cool ... nie ma lepszego sposobu, aby utrzymać produkcję sexy z pretty: true i uniknąć odstępów wewnątrz znacznika (mój textarea przykład) .. . po prostu próbowałem dołączenie . do końca znacznika (patrz kod) i prostu działa ™ :-)

form(name='frmname', method='POST') 
    textarea(name='someField'). 

Renderowanie:

<form name="frmname" method="POST"> 
    <textarea name="someField"></textarea> 
</form> 

Piękno!

Dlaczego to działa? Ponieważ jade traktuje przyrostek . w tagu jako wskaźnik, że znacznik będzie zawierał blok tekstowy (tylko), a następnie nie zostanie podany blok tekstu, więc domyślnie jest to '', pusty ciąg.

+0

Hej, dzięki za komentarz! Masz rację, wyłączenie ładnego trybu zdecydowanie pomogłoby, ale muszę go włączyć w moim przypadku. Interesująca sztuczka z '.', ale nie mam oczu na coś, co naprawdę może się skalować. Na pewno będę nadal zaglądał do niego i opublikuję to, co tu znajdę. – Jon

+0

@Jon, mam nadzieję, że podejście oparte na skalanach zostanie oficjalnie przyjęte, ponieważ wydaje się logicznym rozszerzeniem obecnego systemu - zobaczymy. TJ jest teraz zajęty wieloma projektami ... zobaczymy! –

+1

+1 sztuczka '.' działa idealnie dla mnie – greenimpala