क्या Node.js के लिए कोई टेम्पलेट इंजन है? [बन्द है]


271

मैं Node.js. का उपयोग करके संपूर्ण वेब एप्लिकेशन बनाने के साथ प्रयोग कर रहा हूं क्या Django टेम्प्लेट इंजन (जैसे) के लिए एक टेम्पलेट इंजन समान है या कम से कम आप बेस टेम्प्लेट का विस्तार करने की अनुमति देते हैं?


17
मुझे अभी पता चला है कि जावास्क्रिप्ट V8 इंजन रूबी, पीएचपी और पायथन से तेज है। एक गतिशील भाषा के लिए आश्चर्यजनक रूप से तेज़। जावा और सी # की तुलना में धीमी, हालांकि।
नोसरेडना

77
@ नोस्डन्ना: जावा संभवतः किसी भी चीज़ से अधिक तेज़ कैसे हो सकता है ?! ;)
डैनियल स्लोफ

27
@ डैनियल जावा वास्तव में इन दिनों बहुत तेज है, डेबियन के शूटआउट बेंचमार्क में एडा, सी और सी ++ को हराकर सब कुछ।
मेंटलिस्ट्रोन

20
जो कोई भी वाक्य रचना, उत्पादकता और कुछ और लेकिन प्रदर्शन के बारे में परवाह नहीं करता है, उसे रैपर्स (सी के लिए वेब फ्रेमवर्क) का उपयोग करना चाहिए
पाब्लो बी।

6
नोड.जेएस भाषा के बारे में नहीं है। यह पूरी तरह से डिज़ाइन के बारे में है और जिस तरह से js IO को संभालता है, जो शानदार है। आप रूबी वेब फ्रेमवर्क को तेज गति से चला सकते हैं यदि आप इसे IO लाइब्रेरी को फिर से डिज़ाइन करते हैं।
जुल्फ

जवाबों:


166

नोड जेएस मॉड्यूल विकी पेज देखें। उन्होंने नोडल का समर्थन करने वाले सभी अस्थायी इंजन सूचीबद्ध किए हैं।


7
पृष्ठ पदावनत हो गया आप विज़नमेडिया के विकी पर एक वैकल्पिक पृष्ठ और टेम्प्लेट के बारे में अध्याय पा सकते हैं ।
थॉमस पोटाइरे

@ThomasPotaire यह अपदस्थ हो गया क्योंकि वे इसके बजाय npm खोज का उपयोग करने का सुझाव देते हैं।
inf3rno

52

आपको मूंछों का उपयोग करने में सक्षम होना चाहिए। अगर यह काम नहीं करता है तो मुझे मुद्दों को भेजें और मैं इसे ठीक करवाऊंगा, क्योंकि मैं वैसे भी नोड में इनका उपयोग करने वाला हूं।

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

मुझे पता है कि यह DOM के बिना काम करता है क्योंकि CouchDB स्टैंडअलोन ऐप्स का एक गुच्छा एक स्पाइडरमोंकी व्यू सर्वर में इसका उपयोग कर रहा है।


3
Node.js के साथ मिलकर मूंछ
MKroehnert

@MKroehnert लिंक टूटा है
yukashima huksay

40

यदि आप haml को पसंद करते हैं, लेकिन नोड के लिए http://jade-lang.com पर कुछ बेहतर देखना चाहते हैं , तो मैंने haml.js को :) लिखा है


4
जेड बहुत अच्छा है। मैंने अभी इसका उपयोग शुरू किया है, इसलिए यह प्रदर्शन के लिए नहीं बोल सकता है, लेकिन मुझे सिंटैक्स पसंद है। और एक्सप्रेस में अंतर्निहित समर्थन एक प्लस है।
ब्रूफो

3
प्रदर्शन पर्याप्त है, वैसे भी टेम्पलेट्स को कैश किया जाना चाहिए। प्लस को क्षैतिज रूप से स्केल करने के लिए याद रखें, लंबवत नहीं, अन्यथा आप एक टेम्पलेट इंजन का उपयोग बिल्कुल भी नहीं कर सकते हैं और बस कुछ फ़ंक्शन / कॉन्सर्ट
tjholowaychuk

14

हर समय नए अस्थायी इंजन हैं।

underscore.js js में बहुत से कार्यात्मक प्रोग्रामिंग समर्थन जोड़ता है, और इसमें अस्थायी है।

और आज ही मैंने इस बारे में सुना: http://github.com/SamuraiJack/Shotenjin-Joosed


6
अंडरस्कोर .js के लिए अंगूठे। बहुत बढ़िया पुस्तकालय, मैं इसे अपने क्लाइंट पक्ष के साथ-साथ नोड के लिए काम करता हूं। उनका टेम्प्लेटिंग इंजन जॉन रेसिग के जेएस माइक्रो टेंपलेटिंग इंजन ( ejohn.org/blog/javascript-micro-templating ) पर आधारित है, जिसका मैंने पहले भी कई बार उपयोग किया है। नोड के साथ काम करते समय इस बिंदु पर अपने सबसे अच्छे विकल्प Afaik।
फेलिक्स गिसेन्ड्रॉफ़र

2
क्या इनमें से कोई समर्थन विरासत में मिलता है?
निक रेटलैक

1
@ निक जिन्नज वंशानुक्रम का समर्थन करने लगता है, पहली पंक्ति देखें: github.com/ravelsoft/node-jinjs/blob/master/test/templates/…
panchicore

13

आपको नोड-एसिंक्जैस पर एक नज़र डालनी चाहिए , जो स्पष्ट रूप से नोड की असिंक्रोनस प्रकृति को ध्यान में रखकर बनाया गया है। यह भी टेम्पलेट के अंदर async कोड ब्लॉक की अनुमति देता है।

यहाँ एक उदाहरण प्रलेखन के रूप में:

<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

आप दाढ़ी रहित कोशिश कर सकते हैं (यह वेल्ड / प्लेट्स से प्रेरित है):

उदाहरण के लिए:

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

आपका टेम्प्लेट:

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

आउटपुट:

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

कृपया अपने कोड और आपके द्वारा बताए गए लिंक के बारे में अपने उत्तर में अधिक वर्णनात्मक बनें। संदर्भ: उत्तर कैसे दें
पूछें

दिलचस्प होगा, वास्तव में फ़ाइल को कैसे संसाधित करें या नोड के भीतर चर को कैसे पॉप्युलेट करें
जूलियन एफ। वेनर्ट

6

मैंने साइमन विलिसन डेंजोड प्रोजेक्ट के लिए Django टेम्प्लेट लैंग्वेज के एक बहुत ही पूर्ण पोर्ट पर कुछ काम किया है (यूटिलिटीज फ़ंक्शंस नोड के लिए। जो कि Django से कुछ उपयोगी अवधारणाओं को उधार लेता है)।

दस्तावेज़ यहाँ देखें ।


6

मैं Twig का उपयोग सिम्फनी के साथ करता हूं और अब नोड.जेएस में डब्बल कर रहा हूं, इसलिए मैं https://github.com/justjohn/twig.js और https://github.com/paularmstrong/swig देख रहा हूं , जो आप शायद अगर आप django का उपयोग करते हैं।


2
जिगबस मृत की तरह है, गीथब का कहना है कि अंतिम प्रतिबद्ध 2 साल पहले था। Swig, वह दूसरे हाथ पर, बहुत सुंदर है। मैं स्विग के लिए जाऊंगा।
डार्कहोग

FYI करें : 25 जून 2015 को किए गए इस वचन के अनुसार , Swig github का दावा है कि अब इसका रखरखाव नहीं किया जा रहा है । यह भविष्य में बदल सकता है, लेकिन अभी तक, यह विचार करने के लिए कुछ है।
रेडियोविजुअल

Nunjucks के पास बहुत समान सिंटैक्स है, जो इसके लायक है।
mwcz

5

यदि आप टेम्पलेट्स के लिए एक न्यूनतम दृष्टिकोण की तलाश कर रहे हैं, तो आप JSON टेम्पलेट की जांच कर सकते हैं ।

एक अधिक पूर्ण विशेषताओं वाला विकल्प ईजेएस है । यह Django से आपको मिलने वाली चीज़ के समान है।

आपका माइलेज इनमें से प्रत्येक के लिए भिन्न हो सकता है - वे एक ब्राउज़र जावास्क्रिप्ट पर्यावरण के लिए डिज़ाइन किए गए हैं, न कि Node.js.


2
यह Django के टेम्पलेट्स के समान नहीं है, एक Django के टेम्पलेट्स के लिए अच्छा प्रलेखन है। EJS के माध्यम से प्राप्त करने के लिए एक संघर्ष है और आप अपना सोर्स कोड पढ़कर समझ जाएंगे कि आपके लिए क्या उपलब्ध है।

5

चेतावनी: जिन्स का रखरखाव अभी नहीं किया गया है। यह अभी भी काम कर रहा है लेकिन एक्सप्रेस के नवीनतम संस्करण के साथ संगत नहीं है।

आप jinjs का उपयोग करके देख सकते हैं । यह जिंजा का एक बंदरगाह है, एक बहुत अच्छा पायथन टेम्पोलेटिंग सिस्टम है। आप इसे इस तरह से npm के साथ स्थापित कर सकते हैं:

npm install jinjs

template.tpl में:

I say : "{{ sentence }}"

अपने टेम्पलेट में।

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

उत्पादन होगा:

I say : "Hello, World!"

हम इसे सक्रिय रूप से विकसित कर रहे हैं, एक अच्छा प्रलेखन बहुत जल्द आना चाहिए।


4

haml 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

एचटीएमएल

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


4

"Vash" का प्रयास करें - नोड के लिए razor सिंटैक्स की तरह asp.net mvc

https://github.com/kirbysayshi/Vash

चेकआउट भी करें: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx


// sample
var tmpl = vash.compile('<hr/>@model.a,@model.b<hr/>');
var html = tmpl({"a": "hello", "b": "world"});
res.write(html);

1
Vash shoutout के लिए धन्यवाद!
एंड्रयू

3

Google का क्लोजर टेम्प्लेट एक मूल-जावास्क्रिप्ट टेम्प्लेटिंग सिस्टम है और NodeJS के साथ एक स्वाभाविक रूप से स्वाभाविक रूप से फिट है। उन्हें एकीकृत करने के लिए यहां कुछ निर्देश दिए गए हैं।


2

क्या आपने PURE की कोशिश की ?
यदि आप इसे आजमाते हैं, तो बेझिझक किसी भी मुसीबत को मंच पर महसूस कर सकते हैं

जबकि यह मुख्य रूप से ब्राउज़र के लिए डिज़ाइन किया गया था, यह जैक्सर और राइनो के साथ अच्छी तरह से काम करता है।

मुझे अभी तक नोड.जेएस का पता नहीं है लेकिन अगर आप कुछ जेएस और कार्यों को मेमोरी में कैश कर सकते हैं, तो गति और भी प्रभावशाली होनी चाहिए।


Node.js DOM को नहीं समझता है ... PURE DOM का उपयोग करता है, लेकिन चूंकि यह इसके तार बनाता है। यह जांच के लिए दिलचस्प है। शोर के लिए क्षमा करें।
माइक

2

जावास्क्रिप्ट में Django टेम्प्लेटिंग इंजन का एक बंदरगाह है। हालाँकि, इसके अपडेट को लंबे समय तक अपडेट नहीं किया गया है लेकिन इसमें अभी भी काफी फीचर हो सकते हैं।

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


2

प्रयास करें Yajet भी। ;-) यह एक नया है जिसे मैंने कल जारी किया है, लेकिन मैं इसे अभी थोड़ी देर के लिए उपयोग कर रहा हूं और यह स्थिर और तेज है (टेम्पलेट एक देशी जेएस फ़ंक्शन के लिए संकलित हैं)।

यह एक टेम्पलेट इंजन के लिए IMO सबसे अच्छा वाक्यविन्यास है, और इसके छोटे कोड आकार (8.5K minified) के बावजूद एक समृद्ध विशेषता सेट है। इसमें ऐसे निर्देश हैं जो आपको सशर्त, इटरेस्ट एरे / हैश का परिचय देने, पुन: प्रयोज्य टेम्पलेट घटकों आदि को परिभाषित करने की अनुमति देते हैं।


दिलचस्प, अच्छा काम मिशू। क्या इसका EJS पर कोई फायदा है?
त्रिकूट

0

मुझे ट्विटर से hogan.js मिला और उसकी साइट पर टिम ओ रेली द्वारा सिफारिश की गई। मेरे पास इसके साथ कोई सर्वश्रेष्ठ अभ्यास नहीं है, लेकिन मुझे ट्विटर और ओ'रिली पर भरोसा है। तुम्हें कोशिश करनी चाहिए...



0

ईमानदारी से, Node.js के लिए सबसे अच्छा और सबसे सरल टेम्पलेट इंजन (IMHO) प्लेट्स ( https://github.com/flatiron/plates ) है। तुम भी Node.js ( http://flatiron.org ) के लिए Flatiron MVC ढांचे की जाँच करना चाहते हो सकता है ।


-1

आप DojoToolkit.org के dojox.dtl का उपयोग कर सकते हैं। ध्यान दें कि dojo 1.7 अच्छी तरह से NodeJS पर चल सकता है और सर्वर साइड लाइब्रेरी के रूप में प्रदर्शन कर सकता है। यदि आप रुचि रखते हैं, तो मैं आपको एक सरल उदाहरण दे सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.