2011-11-22 22 views
6

Mỗi khi tôi viết HTML của mình bằng Ngọc, tôi nhận được khoảng trắng thừa được thêm sau giá trị của mỗi phần tử.Khoảng trống thừa trong các giá trị HTML được hiển thị với Jade

Ví dụ, tôi sẽ có một dòng như thế này trong Template Jade tôi:

label(for="keyword") Keyword 

Và khi nó trả lại, nguồn sẽ trông như thế này:

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

Ran vào một số vấn đề với thêm khoảng trống giữa các trang web/CSS của tôi. Ngoài ra, nó không có vẻ gọn gàng :)

Bất cứ ai cũng biết cách tôi có thể ngăn không cho nó được chèn vào?

+0

Đảm bảo bạn không có khoảng trắng nào sau 'Từ khóa' trong Jade, có thể điều đó có thể gây ra sự cố – alessioalex

+0

Cảm ơn bạn đã kiểm tra kỹ để đảm bảo rằng tôi không có bất kỳ vấn đề nào và tôi vẫn gặp sự cố . – Jon

Trả lời

10

Kiểm tra bản cập nhật vào đáy

Tôi giả sử bạn đang sử dụng express - kiểm tra cài đặt ứng dụng của bạn.

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

Nếu bạn có jade đang hiển thị trong chế độ pretty (pretty: true) sau đó nó sẽ sắp xếp nguồn tạo của bạn (tags) với chư lồng nhau. Tắt khá in ấn sẽ giải quyết vấn đề của bạn (mặc dù chắc chắn rằng bạn không có dấu cách, như được chỉ ra bởi @alessioalex).

Nếu bạn có lý do yêu cầu bạn xuất định dạng khá (thông số khách hàng, trong trường hợp của tôi) thì bạn có thể thử một số thứ khác. Tôi gặp sự cố tương tự khi xảy ra với thẻ textarea; bực bội vì khoảng trắng thực sự được đưa vào nội dung của biểu mẫu. Con đường tôi đã nhận khoảng này là để nhúng một đoạn html đen với thẻ đóng:

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

các docs có thể cung cấp cho bạn một số chi tiết (tìm kiếm html trong trường hợp này). Có mở issue #341 trên github đề xuất một cách tiếp cận như this one for scalate, nhưng hiện không hoạt động ở jade (kể từ phiên bản 0.19.0).

HTH

Cập nhật

Ok - tinh tế và mát mẻ ... có một cách tốt hơn để giữ cho đầu ra sexy từ pretty: true và tránh khoảng cách bên trong của một từ khóa (textarea ví dụ của tôi) .. . tôi chỉ cố gắng phụ thêm một . đến cuối của thẻ (xem code) và nó chỉ cần Làm việc ™ :-)

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

Người cho vay:

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

Làm đẹp!

Tại sao tính năng này hoạt động? Bởi vì jade xử lý hậu tố . trên thẻ làm chỉ báo rằng thẻ sẽ chứa khối văn bản (chỉ) và sau đó không có khối văn bản nào được cung cấp, do đó, giá trị mặc định là '', một chuỗi trống.

+0

Xin chào, cảm ơn vì đã bình luận! Bạn nói đúng, tắt chế độ đẹp chắc chắn sẽ giúp đỡ, nhưng tôi cần phải giữ nó được kích hoạt trong trường hợp của tôi. Bí quyết thú vị với '.', nhưng tôi đang chú ý đến thứ gì đó thực sự có thể mở rộng. Chắc chắn sẽ tiếp tục nhìn vào nó và đăng bất cứ điều gì tôi tìm thấy ở đây. – Jon

+0

@Jon, tôi hy vọng cách tiếp cận kiểu mở rộng sẽ được áp dụng chính thức vì nó có vẻ là một phần mở rộng hợp lý cho hệ thống hiện tại - chúng ta sẽ thấy. TJ đang bận rộn với rất nhiều dự án vừa rồi ... chúng ta sẽ thấy! –

+1

+1 mẹo '.' hoạt động hoàn hảo đối với tôi – greenimpala

Các vấn đề liên quan