Có một công cụ mẫu cho Node.js không? [đóng cửa]


271

Tôi đang thử nghiệm xây dựng toàn bộ ứng dụng web bằng Node.js. Có một công cụ mẫu tương tự (ví dụ) công cụ mẫu Django hay tương tự như vậy ít nhất cho phép bạn mở rộng các mẫu cơ sở?


17
Tôi mới phát hiện ra rằng công cụ JavaScript V8 nhanh hơn Ruby, PHP và Python. Tuyệt vời nhanh chóng cho một ngôn ngữ năng động. Mặc dù chậm hơn Java và C #.
Nosredna

77
@Nosredna: Làm thế nào Java có thể nhanh hơn bất cứ thứ gì?! ;)
Daniel Sloof

27
@Daniel Java thực sự khá nhanh trong những ngày này, đánh bại mọi thứ trừ Ada, C và C ++ trong các tiêu chuẩn Shootout của Debian.
Mentalikstall

20
Bất cứ ai không quan tâm đến cú pháp, năng suất và bất cứ điều gì khác ngoài hiệu suất, nên sử dụng Raphters (khung web cho C)
Pablo B.

6
node.js không phải là về ngôn ngữ. Đó hoàn toàn là về thiết kế và cách js xử lý IO, thật tuyệt vời. Bạn có thể làm cho các khung web ruby ​​chạy nhanh nếu bạn thiết kế lại các thư viện IO.
julx

Câu trả lời:



52

Bạn sẽ có thể sử dụng mustache.js, nếu nó không hoạt động, hãy gửi cho tôi các vấn đề và tôi sẽ sửa nó vì dù sao tôi cũng sẽ sử dụng chúng trong node.js.

http://github.com/janl/mustache.js

Tôi biết rằng nó hoạt động mà không cần DOM vì một loạt các ứng dụng độc lập CouchDB đang sử dụng nó trong máy chủ xem Spidermonkey.


3
Ngoài ra còn có một bài đăng trên blog về việc sử dụng Mustache và Underscore cùng với Node.js: boldr.net/create-a-web-app-with-node
MKroehnert

@MKroehnert liên kết bị hỏng
yukashima huksay

40

Nếu bạn thích haml, nhưng muốn một cái gì đó thậm chí tốt hơn hãy xem http://jade-lang.com cho nút, tôi cũng đã viết haml.js :)


4
Ngọc khá tuyệt. Tôi mới bắt đầu sử dụng nó, vì vậy không thể nói về hiệu suất của nó, nhưng tôi thích cú pháp. Và hỗ trợ tích hợp trong Express là một lợi thế.
broofa

3
hiệu suất là đủ, dù sao mẫu cũng nên được lưu trữ. Ngoài ra, hãy nhớ chia tỷ lệ theo chiều ngang, không theo chiều dọc, nếu không bạn cũng có thể không sử dụng công cụ mẫu và chỉ một số chức năng / concats
tjholowaychuk

14

Có động cơ templating mới tất cả các thời gian.

underscore.js thêm rất nhiều hỗ trợ lập trình chức năng cho js và có templating.

Và chỉ hôm nay tôi đã nghe về điều này: http://github.com/SamuraiJack/Shotenjin-Joosed


6
Thumbs up cho underscore.js. Thư viện tuyệt vời, tôi sử dụng cả cho phía khách hàng của mình cũng như node.js hoạt động. Công cụ tạo khuôn mẫu của họ dựa trên công cụ tạo khuôn mẫu Micro Micro của John Resig ( ejohn.org/blog/javascript-micro-templating ) mà tôi đã sử dụng nhiều lần trước đây. Afaik tùy chọn tốt nhất của bạn tại thời điểm này khi làm việc với node.js.
Felix Geisendorfer

2
Có bất kỳ trong số những hỗ trợ thừa kế?
Nick Retallack

1
@Nick jinjs dường như hỗ trợ thừa kế, hãy xem dòng đầu tiên: github.com/ravelsoft/node-jinjs/blob/master/test/temsheet/iêu
panchicore

13

Bạn nên xem qua nút-asyncEJS , được thiết kế rõ ràng để đưa tính chất không đồng bộ của node.js vào tài khoản. Nó thậm chí còn cho phép các khối mã async bên trong mẫu.

Dưới đây là một ví dụ mẫu tài liệu:

<html>
  <head>
    <% ctx.hello = "World";  %>
    <title><%= "Hello " + ctx.hello %></title>
  </head>
  <body>

    <h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000)  %></h1>
    <p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000)  %></p>

  </body>
</html>

7

Bạn có thể thử râu (lấy cảm hứng từ mối hàn / tấm):

Ví dụ:

{ post:
  { title: "Next generation templating: Start shaving!"
  , text: "TL;DR You should really check out beardless!"
  , comments:
    [ {text: "Hey cool!"}
    , {text: "Really gotta check that out..."}  ]
  }
}

Mẫu của bạn:

<h1 data-template="post.title"></h1>
<p data-template="post.text"></p>
<div>
  <div data-template="post.comments" class="comment">
    <p data-template="post.comments.text"></p>
  </div>
</div>

Đầu ra:

<h1>Next generation templating: Start shaving!</h1>
<p>TL;DR You should really check out beardless!</p>
<div>
  <div class="comment">
    <p>Hey cool!</p>
  </div>
  <div class="comment">
    <p>Really gotta check that out...</p>
  </div>
</div>

Vui lòng mô tả nhiều hơn trong câu trả lời của bạn về mã của bạn và liên kết bạn đã đề cập. Tham khảo: Cách trả lời
vào

Sẽ rất thú vị, làm thế nào để thực sự xử lý tệp hoặc nhập các biến trong Node
Julian F. Weinert

6

Tôi đã thực hiện một số công việc trên một cổng khá hoàn chỉnh của ngôn ngữ mẫu Django cho dự án djangode Simon Willisons (Các hàm tiện ích cho node.js mượn một số khái niệm hữu ích từ Django).

Xem tài liệu ở đây .


6

Tôi sử dụng Twig với Symfony và hiện đang tìm hiểu về node.js, vì vậy tôi đang xem https://github.com/justjohn/twig.jshttps://github.com/paularmstrong/swig , bạn sẽ có lẽ thích nếu bạn sử dụng django.


2
TwigJS là loại người chết, GitHub nói rằng lần cam kết cuối cùng là 2 năm trước. Swig, mặt khác, là khá nhạy bén. Tôi sẽ đi cho Swig.
Darkhogg

FYI : Theo cam kết này vào ngày 25 tháng 6 năm 2015 , Swith github tuyên bố nó không còn được duy trì . Điều đó có thể thay đổi trong tương lai, nhưng đến bây giờ, đó là điều cần xem xét.
nghe nhìn 17/8/2015

Nunjucks có cú pháp rất giống nhau, với giá trị của nó.
mwcz

5

Nếu bạn đang tìm kiếm một cách tiếp cận tối giản cho các mẫu, bạn có thể kiểm tra Mẫu JSON .

Một thay thế đầy đủ tính năng hơn là EJS . Nó hơi giống với thứ bạn nhận được từ Django.

Số dặm của bạn có thể khác nhau đối với mỗi loại này - chúng được thiết kế cho môi trường Javascript của trình duyệt chứ không phải Node.js.


2
Nó hoàn toàn không giống với các mẫu của Django, vì một mẫu của Django có tài liệu tốt . EJS là một cuộc đấu tranh để vượt qua và cuối cùng bạn sẽ đọc mã nguồn của nó chỉ để hiểu những gì có sẵn cho bạn.

5

CẢNH BÁO: JinJs không được duy trì nữa. Nó vẫn hoạt động nhưng không tương thích với phiên bản express mới nhất.

Bạn có thể thử sử dụng jinjs . Nó là một cổng của Jinja, một hệ thống tạo khuôn Python rất tốt. Bạn có thể cài đặt nó với npm như thế này:

npm install jinjs

trong template.tpl:

I say : "{{ sentence }}"

trong template.js của bạn:

jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);

Đầu ra sẽ là:

I say : "Hello, World!"

Chúng tôi đang tích cực phát triển nó, một tài liệu tốt sẽ đến khá sớm.


4

haml là một lựa chọn tốt cho node.js

http://github.com/creationix/haml-js

ham-js

!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
  %head
    %title Sample haml template
  %body
    .profile
      .left.column
        #date= print_date()
        #address= current_user.address
      .right.column
        #email= current_user.email
        #bio= current_user.bio

html

<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sample haml template
</title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009
</div><div id="address">Richardson, TX
</div></div><div class="right column"><div id="email">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>




2

Bạn đã thử PURE ?
Nếu bạn dùng thử, vui lòng gửi bất kỳ rắc rối nào bạn có thể gặp phải tại diễn đàn

Mặc dù nó được thiết kế chủ yếu cho trình duyệt, nhưng nó hoạt động tốt với Jaxer và Rhino.

Tôi chưa biết node.js nhưng nếu bạn có thể lưu trữ một số hàm và hàm JS trong bộ nhớ, tốc độ sẽ còn ấn tượng hơn nữa.


Node.js không hiểu DOM ... PURE sử dụng DOM, nhưng vì nó tạo ra chuỗi của nó. Điều này là thú vị để điều tra. Xin lỗi vì sự ồn ào.
Mic

2

Có một cổng của công cụ tạo khuôn mẫu Django sang JavaScript. Tuy nhiên, nó không được cập nhật trong một thời gian dài nhưng nó vẫn có thể có đủ các tính năng.

http://code.google.com.vn/p/jtl-javascript-template/


2

Hãy thử Yajet quá. ;-) Đây là một cái mới mà tôi mới phát hành ngày hôm qua, nhưng tôi đang sử dụng nó một thời gian và nó ổn định và nhanh chóng (các mẫu được biên dịch thành hàm JS gốc).

Nó có IMO cú pháp tốt nhất có thể cho một công cụ mẫu và một bộ tính năng phong phú mặc dù kích thước mã nhỏ của nó (rút gọn 8,5K). Nó có các chỉ thị cho phép bạn giới thiệu các điều kiện, lặp lại mảng / băm, xác định các thành phần mẫu có thể sử dụng lại, v.v.


Thú vị, làm việc tốt mishoo. Nó có bất kỳ lợi thế hơn EJS?
trusktr

0

Tôi đã tìm thấy hogan.js từ Twitter và được đề xuất bởi Tim O'Reilly trên trang web của anh ấy. Tôi không có cách thực hành tốt nhất với nó, nhưng tôi tin tưởng trên Twitter và O'Reilly. Bạn nên thử...




-1

Bạn có thể sử dụng dojox.dtl của DojoToolkit.org. Lưu ý rằng dojo 1.7 có thể chạy tốt trên NodeJS và hoạt động như một thư viện phía máy chủ. Nếu bạn quan tâm, tôi có thể cho bạn một ví dụ đơn giản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.