Apakah ada mesin template untuk Node.js? [Tutup]


271

Saya bereksperimen dengan membangun seluruh aplikasi web menggunakan Node.js. Apakah ada mesin template yang mirip dengan (misalnya) mesin template Django atau sejenisnya yang setidaknya memungkinkan Anda untuk memperpanjang template dasar?


17
Saya baru tahu bahwa mesin JavaScript V8 lebih cepat daripada Ruby, PHP, dan Python. Sangat cepat untuk bahasa yang dinamis. Lebih lambat dari Java dan C #.
Nosredna

77
@Nosredna: Bagaimana mungkin Java bisa lebih cepat dari apapun ?! ;)
Daniel Sloof

27
@Daniel Java sebenarnya cukup cepat akhir-akhir ini, mengalahkan segalanya kecuali Ada, C dan C ++ di tolok ukur baku tembak Debian.
Mentalikryst

20
Siapa pun yang tidak peduli dengan sintaks, produktivitas, dan apa pun selain kinerja, harus menggunakan Raphters (kerangka kerja web untuk C)
Pablo B.

6
node.js bukan tentang bahasa. Ini benar-benar tentang desain dan cara js menangani IO, yang brilian. Anda bisa membuat kerangka web ruby ​​berjalan cepat jika Anda mendesain ulang itu perpustakaan IO.
julx

Jawaban:



52

Anda harus dapat menggunakan kumis.js, jika tidak berhasil kirimi saya masalah dan saya akan memperbaikinya karena saya akan menggunakannya di node.js.

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

Saya tahu ini berfungsi tanpa DOM karena banyak aplikasi mandiri CouchDB menggunakannya di server tampilan Spidermonkey.


3
Ada juga posting blog tentang menggunakan Moustache dan Underscore bersama dengan Node.js: boldr.net/create-a-web-app-with-node
MKroehnert

@MKroehnert tautannya rusak
yukashima huksay

40

Jika Anda suka haml, tetapi ingin sesuatu yang lebih baik lihat http://jade-lang.com untuk node, saya juga menulis haml.js :)


4
Jade cukup keren. Saya baru saja mulai menggunakannya, jadi saya tidak bisa bicara soal kinerjanya, tapi saya suka sintaksisnya. Dan dukungan bawaan di Express adalah nilai tambah.
broofa

3
kinerjanya cukup, template tetap harus di-cache. Plus ingat untuk skala secara horizontal, bukan vertikal, jika tidak, Anda mungkin tidak menggunakan mesin template sama sekali dan hanya beberapa fungsi / concats
tjholowaychuk

14

Ada mesin templating baru sepanjang waktu.

underscore.js menambahkan banyak dukungan pemrograman fungsional untuk js, dan telah templating.

Dan baru hari ini saya mendengar tentang ini: http://github.com/SamuraiJack/Shotenjin-Joosed


6
Acungan jempol untuk underscore.js. Perpustakaan yang luar biasa, saya menggunakannya untuk sisi klien saya dan juga simpul.js. Mesin templating mereka didasarkan pada mesin Micro Templating JS Resig dari John Resig ( ejohn.org/blog/javascript-micro-templating ) yang telah saya gunakan berkali-kali sebelumnya. Afaik ini pilihan terbaik Anda saat ini ketika bekerja dengan node.js.
Felix Geisendörfer

2
Apakah ada yang mendukung warisan?
Nick Retallack

1
@Nick jinjs tampaknya mendukung warisan, lihat baris pertama: github.com/ravelsoft/node-jinjs/blob/master/test/templates/…
panchicore

13

Anda harus melihat node-asyncEJS , yang secara eksplisit dirancang untuk mempertimbangkan sifat asinkron dari node.js. Bahkan memungkinkan blok kode async di dalam template.

Berikut ini contoh formulir dokumentasi:

<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

Anda dapat mencoba berjanggut (terinspirasi oleh las / piring):

Sebagai contoh:

{ 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..."}  ]
  }
}

Template Anda:

<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>

Keluaran:

<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>

Harap lebih deskriptif dalam jawaban Anda tentang kode Anda dan tautan yang Anda tuju. Lihat: Cara Menjawab
askmish

Akan menarik, bagaimana sebenarnya memproses file atau mengisi variabel dalam Node
Julian F. Weinert

6

Saya telah melakukan beberapa pekerjaan pada port yang cukup lengkap dari bahasa template Django untuk proyek djangode Simon Willisons (Fungsi utilitas untuk node.js yang meminjam beberapa konsep yang berguna dari Django).

Lihat dokumentasi di sini .


6

Saya menggunakan Twig dengan Symfony dan sekarang saya mencoba-coba node.js, jadi saya melihat https://github.com/justjohn/twig.js dan https://github.com/paularmstrong/swig , yang akan Anda gunakan mungkin seperti jika Anda menggunakan Django.


2
TwigJS agak mati, GitHub mengatakan komit terakhir adalah 2 tahun yang lalu. Swig, di sisi lain, cukup aktif. Saya akan pergi untuk Swig.
Darkhogg

FYI : Sampai dengan komitmen ini pada 25 Juni 2015 , Swig github mengklaim itu tidak lagi dipertahankan . Itu mungkin berubah di masa depan, tetapi sampai sekarang, itu sesuatu untuk dipertimbangkan.
radiovisual

Nunjucks memiliki sintaks yang sangat mirip, untuk apa nilainya.
mwcz

5

Jika Anda mencari pendekatan minimalis untuk templat, Anda dapat memeriksa JSON Templat .

Alternatif yang lebih berfitur lengkap adalah EJS . Ini sedikit lebih mirip dengan sesuatu yang Anda dapatkan dari Django.

Jarak tempuh Anda mungkin berbeda untuk masing-masing - mereka dirancang untuk lingkungan Javascript peramban, dan bukan Node.js.


2
Sama sekali tidak mirip dengan template Django, karena satu template Django memiliki dokumentasi yang baik . EJS adalah perjuangan untuk melewati dan Anda akhirnya akan membaca kode sumbernya hanya untuk memahami apa yang tersedia untuk Anda.

5

PERINGATAN: JinJs tidak dipertahankan lagi. Ini masih berfungsi tetapi tidak kompatibel dengan versi express terbaru.

Anda bisa mencoba menggunakan jinjs . Ini adalah pelabuhan Jinja, sistem templating Python yang sangat bagus. Anda dapat menginstalnya dengan npm seperti ini:

npm install jinjs

di template.tpl:

I say : "{{ sentence }}"

di templat.js Anda:

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

Outputnya adalah:

I say : "Hello, World!"

Kami secara aktif mengembangkannya, dokumentasi yang baik harus segera hadir.


4

haml adalah pilihan yang baik untuk node.js

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

haml-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

Apakah Anda mencoba PURE ?
Jika Anda mencobanya, jangan ragu untuk mengirim masalah yang mungkin Anda hadapi di forum

Sementara itu terutama dirancang untuk browser, ia bekerja dengan baik dengan Jaxer dan Rhino.

Saya belum tahu node.js tetapi jika Anda dapat men-cache beberapa JS dan fungsi dalam memori, kecepatannya akan lebih mengesankan.


Node.js tidak mengerti DOM ... MURNI menggunakan DOM, tetapi karena membuat string itu. Ini menarik untuk diselidiki. Maaf atas kebisingannya.
Mic


2

Coba Yajet juga. ;-) Ini yang baru yang baru saja saya rilis kemarin, tapi saya menggunakannya untuk sementara waktu sekarang dan itu stabil dan cepat (template dikompilasi ke fungsi JS asli).

Ini memiliki IMO sintaks terbaik yang mungkin untuk mesin template, dan fitur yang kaya ditetapkan meskipun ukuran kode kecil (8,5K minified). Ini memiliki arahan yang memungkinkan Anda untuk memperkenalkan conditional, iterate array / hash, mendefinisikan komponen template yang dapat digunakan kembali dll.


Menarik, kerja bagus mishoo. Apakah ada keunggulan dibandingkan EJS?
trusktr

0

Saya menemukan hogan.js dari Twitter dan direkomendasikan oleh Tim O'Reilly di situsnya. Saya tidak punya praktik terbaik dengan itu, tapi saya percaya di Twitter dan O'Reilly. Kamu harus mencobanya...




-1

Anda dapat menggunakan dojox.dtl dari DojoToolkit.org. Perhatikan bahwa dojo 1.7 dapat berjalan dengan baik di NodeJS dan berfungsi sebagai pustaka sisi server. Jika Anda tertarik, saya bisa memberikan contoh sederhana.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.