ฉันกำลังทดลองกับการสร้างเว็บแอปพลิเคชันทั้งหมดโดยใช้ Node.js มีแม่แบบเอ็นจิ้นที่คล้ายกับ (ตัวอย่าง) เครื่องยนต์แม่แบบ Django หรืออย่างนั้นอย่างน้อยช่วยให้คุณสามารถขยายแม่แบบฐาน?
ฉันกำลังทดลองกับการสร้างเว็บแอปพลิเคชันทั้งหมดโดยใช้ Node.js มีแม่แบบเอ็นจิ้นที่คล้ายกับ (ตัวอย่าง) เครื่องยนต์แม่แบบ Django หรืออย่างนั้นอย่างน้อยช่วยให้คุณสามารถขยายแม่แบบฐาน?
คำตอบ:
ตรวจสอบหน้า wiki ของโมดูล Node js พวกเขาได้แสดงเครื่องมือสร้างเทมเพลตทั้งหมดที่สนับสนุน node.js
คุณควรจะสามารถใช้ mustache.js ถ้ามันไม่ทำงานส่งปัญหาให้ฉันและฉันจะได้รับการแก้ไขเพราะฉันกำลังจะใช้พวกเขาใน node.js ต่อไป
http://github.com/janl/mustache.js
ฉันรู้ว่ามันทำงานได้โดยไม่ต้องใช้ DOM เพราะมีแอพ CouchDB แบบสแตนด์อโลนจำนวนมากกำลังใช้งานอยู่ในเซิร์ฟเวอร์มุมมอง Spidermonkey
หากคุณชอบ haml แต่ต้องการสิ่งที่ดียิ่งขึ้นลองดูที่http://jade-lang.comสำหรับ node ฉันเขียน haml.js ด้วย :)
มีเครื่องยนต์ templating ใหม่ตลอดเวลา
underscore.js เพิ่มการสนับสนุนการเขียนโปรแกรมเชิงฟังก์ชันจำนวนมากให้กับ js และมีการสร้างเทมเพลต
และเพียงแค่วันนี้ฉันได้ยินเกี่ยวกับเรื่องนี้: http://github.com/SamuraiJack/Shotenjin-Joosed
คุณควรดูที่node-asyncEJSซึ่งได้รับการออกแบบมาอย่างชัดเจนเพื่อพิจารณาลักษณะของอะซิงโครนัสของ node.js นอกจากนี้ยังอนุญาตให้บล็อกโค้ด 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>
คุณสามารถลองใช้เครา (มันได้รับแรงบันดาลใจจากการเชื่อม / แผ่น):
ตัวอย่างเช่น:
{ 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>
ฉันทำงานบางอย่างบนพอร์ตภาษาแม่แบบ Django ที่สมบูรณ์สำหรับโครงการ djangode ของ Simon Willisons (ฟังก์ชั่นยูทิลิตี้สำหรับ node.js ที่ยืมแนวคิดที่มีประโยชน์จาก Django)
ฉันใช้ Twig กับ Symfony และตอนนี้ฉันเล่นน้ำอยู่ใน node.js ดังนั้นฉันจึงดูที่https://github.com/justjohn/twig.jsและhttps://github.com/paularmstrong/swigซึ่งคุณจะได้ อาจชอบถ้าคุณใช้ django
หากคุณกำลังมองหาวิธีการที่เรียบง่ายเพื่อแม่, คุณสามารถตรวจสอบแม่แบบ JSON
ทางเลือกที่เต็มรูปแบบมากขึ้นคือEJS มันค่อนข้างคล้ายกับสิ่งที่คุณจะได้รับจาก Django
ระยะทางของคุณอาจแตกต่างกันไปในแต่ละประเภท - ออกแบบมาสำหรับสภาพแวดล้อม Javascript ของเบราว์เซอร์ไม่ใช่ Node.js
คำเตือน: JinJs จะไม่ได้รับการบำรุงรักษาอีกต่อไป มันยังคงใช้งานได้ แต่ไม่สามารถใช้งานร่วมกับ Express เวอร์ชันล่าสุด
คุณสามารถลองใช้jinjsได้ มันเป็นพอร์ตของ Jinja ซึ่งเป็นระบบการสร้างเทมเพลต Python ที่ดีมาก คุณสามารถติดตั้งด้วย 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!"
เรากำลังพัฒนามันอย่างแข็งขันเอกสารที่ดีน่าจะมาเร็ว
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
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>
ฉันได้ยินสิ่งดีๆเกี่ยวกับ {dust} http://akdubya.github.com/dustjs/#dust
ลองใช้ "vash" - asp.net mvc เช่นไวยากรณ์ razor สำหรับ node.js
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);
เทมเพลตการปิดของ Google เป็นระบบการสร้างเทมเพลตแบบจาวาสคริปต์และเหมาะสมกับ NodeJS อย่างเป็นธรรมชาติ นี่คือคำแนะนำสำหรับการรวมเข้าด้วยกัน
คุณลองPURE แล้วหรือยัง
หากคุณลองใช้งานอย่าลังเลที่จะโพสต์ปัญหาที่คุณอาจเผชิญในฟอรัม
ในขณะที่มันถูกออกแบบมาสำหรับเบราว์เซอร์ แต่ก็ทำงานได้ดีกับ Jaxer และ Rhino
ฉันยังไม่รู้จัก node.js แต่ถ้าคุณสามารถแคช JS และฟังก์ชั่นบางอย่างในหน่วยความจำความเร็วจะน่าประทับใจยิ่งขึ้น
มีพอร์ตของเครื่องมือสร้างเทมเพลต Django เป็นจาวาสคริปต์ อย่างไรก็ตามมันไม่ได้รับการปรับปรุงเป็นเวลานาน แต่อาจยังมีคุณสมบัติเพียงพอ
ลองYajetด้วย ;-) มันเป็นอันใหม่ที่ฉันเพิ่งเปิดตัวเมื่อวานนี้ แต่ฉันใช้ไประยะหนึ่งแล้วและมันก็เสถียรและรวดเร็ว
มี IMO ไวยากรณ์ที่ดีที่สุดสำหรับเทมเพลตเอนจิ้นและชุดคุณลักษณะที่หลากหลายแม้จะมีขนาดรหัสเล็ก (8.5K ลดขนาด) มันมีคำสั่งที่อนุญาตให้คุณแนะนำเงื่อนไขซ้ำแถว / แฮชกำหนดองค์ประกอบแม่แบบนำมาใช้ใหม่ ฯลฯ
ฉันพบhogan.jsจาก Twitter และแนะนำโดย Tim O'Reilly ในเว็บไซต์ของเขา ฉันไม่มีแนวปฏิบัติที่ดีที่สุด แต่ฉันเชื่อใจใน Twitter และ O'Reilly คุณควรลอง...
นี่คือการประเมินที่ดีของเครื่องยนต์หลาย ๆ ตัวที่ http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
เครื่องมือสร้างแม่แบบที่ดีที่สุดและง่ายที่สุดสำหรับ Node.js คือเพลต (IMHO) ( https://github.com/flatiron/plates ) คุณอาจต้องการตรวจสอบกรอบ Flatiron MVC สำหรับ Node.js ( http://flatiron.org )
คุณสามารถใช้ dojox.dtl ของ DojoToolkit.org โปรดทราบว่า dojo 1.7 สามารถรันบน NodeJS ได้ดีและทำหน้าที่เป็นไลบรารีฝั่งเซิร์ฟเวอร์ หากคุณสนใจฉันสามารถให้ตัวอย่างง่ายๆ