2012-02-09 8 views
5

हाय मैं जानना चाहता हूं कि मैं dot.js templating इंजन में आउटपुट कैसे प्रस्तुत कर सकता हूं। मुझे लगता है कि यह नोडज templating के बारे में एक सामान्य सवाल है। (अधिक जानकारी के लिए टिप्पणियां पढ़ें)। जेड या ईजे के बजाए मैंने इस टेम्पलेट इंजन को चुना है क्योंकि यह चारों ओर सबसे तेज़ इंजन लगता है।nodejs में doT.js templating प्रस्तुत करने के लिए कैसे?

यहाँ मेरी app.js है:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset='utf-8'> 
<title>Index</title> 
</head> 
<body> 

//This is where I am trying to receive data and output it... 
{{=it.output}} 

</body> 
</html> 

मैं बस उस पर अच्छा डॉक्स नहीं पा सके:

var express = require('express'), 
    app = express.createServer(), 
    doT = require('doT'), 
    pub = __dirname + '/public', 
    view = __dirname + '/views'; 

app.configure(function(){ 
    app.set('views', view); 
    app.set('view options', {layout: false}); 
    app.set('view engine', 'dot'); 
    app.use(app.router); 
}); 

app.register('.html', { 
    compile: function(str, opts){ 
     return function(locals){ 
      return str; 
     } 
    } 
}); 


app.get('/', function(req, res){ 

    //This is where I am trying to send data to the front end.... 
    res.render('index.html', { output: 'someStuff' }); 

}); 

यहाँ मेरी एचटीएमएल है। यह पर्याप्त नहीं था: http://olado.github.com/doT/। कृपया सहायता करें, अगर आप कर सकते हैं। इससे मेरी समझ में सुधार होगा कि नोडज में दृश्य को डेटा कैसे पास किया जाता है। धन्यवाद।

app.set("view engine", "html"); 
app.register('.html', doT); 

उत्तर

14

आप एक्सप्रेस पता इस तरह टेम्पलेट इंजन के रूप में उपयोग करने के लिए डॉट जाने की जरूरत है।

npm install express-dot

तो कॉन्फ़िगर में मार्गों में

app.set('view engine', 'dot'); 
app.engine('dot', require('express-dot').__express); 

तब:: आप फिर भी एक्सप्रेस-डॉट का उपयोग कर सकते

res.render('profile', {}); // you will need to create views/profile.dot 
+0

धन्यवाद, यह काम करने लग रहा था। निर्माता हमेशा उत्तर देने के लिए बाहर निकलना हमेशा बाहर निकलता है। मुझे अभी भी यह पता लगाना है कि मैं रिकॉर्ड्स पर पुन: प्रयास कैसे करूं जो मैं फॉर्म मोंगोडब खींचता हूं, लेकिन यह एक और सवाल होगा ... धन्यवाद। – user000001

+0

हाय, हो सकता है कि आप [इस] में देख सकें (http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js- टेम्पलेटिंग इंजन) सवाल भी है, यह उस पर आधारित है जिस पर आपने उत्तर दिया था। मुझे लगता है कि आप इस सवाल से निपटने के लिए सबसे योग्य हैं। कृपया सहायता करें, अगर आप कर सकते हैं। – user000001

+0

क्या आप इस समस्या को देख सकते हैं http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js-templating-engine – user000001

1

आप एक्सप्रेस 3 चला रहे हैं, यह अभी तक समर्थित नहीं है:

5

मेरे पोस्ट में एक बेशर्म प्लग है, लेकिन यह कोई मदद कर सकता है बाहर।

https://github.com/nerdo/dot-emc

प्रयोग क्या ऊपर नियुक्त किया गया है के समान है:

मैं जिस तरह से मौजूदा मॉड्यूल एक्सप्रेस 3.x के साथ काम किया साथ बहुत खुश नहीं था, मैं एक बुलाया डॉट ईएमसी लिखा था। इसे नाम से स्थापित करें:

npm install dot-emc 

फिर इसे अपने डिफ़ॉल्ट दृश्य इंजन के रूप में सेट करें। मैं .def एक्सटेंशन का उपयोग कर के बाद से मेरी पाठ संपादक Graphviz फ़ाइलों के रूप में .dot फ़ाइलों को पहचानता है पसंद करते हैं, तो वाक्य रचना थोड़ा अलग है:

app.engine("def", require("dot-emc").__express); 
app.set("view engine", "def"); 

तो फिर तुम के रूप में इसका उपयोग करना प्रारंभ तुम अपने मार्गों में किसी अन्य दृश्य इंजन, उदाहरण के लिए:

app.get("/", function(req, res) { 
    res.render("index", {"title": "title goes here"}); 
}); 
+0

चूंकि आपका प्लग लोगों के स्वागत में मदद करने के लिए है, क्योंकि यह सब इस साइट का पूरा बिंदु था, ... – user000001

+0

धन्यवाद cue8chalk। यह कठिन था तो यह खोजना चाहिए। – Druska

1

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं हाल ही में एक मानक उत्पन्न एक्सप्रेस 4.xx अनुप्रयोग के साथ डॉट का परीक्षण करना चाहता था। मुझे अपने जेनरेट किए गए ऐप के साथ आसान मिलान करने के लिए @ ओलाडो से व्यक्त उदाहरण नहीं मिला। मैंने विभिन्न प्लगइन्स (इसे काम करने के लिए प्राप्त करने की कोशिश की, लेकिन संतुष्ट नहीं) की कोशिश की, इसलिए मैंने पूर्व-संकलित डॉट फाइलों को बिना किसी अतिरिक्त प्लगइन के समर्थन के साथ (#) के साथ समर्थन के साथ टेम्पलेट इंजन लिखना समाप्त कर दिया:

var users = require('./routes/users'); 
// Standard app above this 

var dot = require("dot").process({ 
    path: (__dirname + "/views") 
}); 

var app = express(); 

// view engine setup 
app.engine('dot', function(template, options, cb){ 
    // using .dot files 
    var temp = path.parse(template).name; 

    var cont = dot[temp](options); 

    return cb(null, cont); 


    // Or as one liner 
    // return cb(null, dot[path.parse(template).name](options)); 

    // If you want to do error checking, return the error as callback functions first arg 
    // return cb(new Error('Something went wrong'); 
}); 

app.set('views', path.join(__dirname, './views')); 
app.set('view engine', 'dot'); 

// Standard generated app below this 

अब मैं इसे मानक "res.render" रास्ते में इस तरह मार्गों में (index.js के लिए) का उपयोग कर सकते हैं:

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 

उपयोग करना न भूलें {{it.value}} .dot में टेम्पलेट फाइलें उपरोक्त मूल उदाहरण में, सूचकांक।डॉट इस तरह कुछ दिखाई देगा:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>{{=it.title}}</title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1>{{=it.title}}</h1> 
    <p>Welcome to {{=it.title}}</p> 
    </body> 
</html> 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^