2012-02-09 27 views
5

Xin chào Tôi muốn biết làm thế nào tôi có thể hiển thị đầu ra trong công cụ tạo khuôn mẫu dot.js. Tôi nghĩ rằng đó là một câu hỏi chung chung về nútjs templating. (Đọc ý kiến ​​để biết thêm thông tin). Lý do tại sao tôi đã chọn mẫu động cơ này thay vì ngọc bích hoặc ejs là bởi vì nó có vẻ là động cơ nhanh nhất xung quanh.Làm cách nào để hiển thị mẫu doT.js trong nútjs?

Đây là app.js tôi:

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' }); 

}); 

Dưới đây là html của tôi:

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

Tôi chỉ không thể tìm thấy tài liệu tốt về nó. Điều này là không đủ: http://olado.github.com/doT/. Xin hãy giúp nếu có thể. Điều này sẽ cải thiện sự hiểu biết của tôi theo cấp số nhân về cách dữ liệu được truyền tới khung nhìn trong các nút. Cảm ơn bạn.

Trả lời

14

Bạn cần phải cho biết rõ ràng để sử dụng Dot là mẫu động cơ như thế này:

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

Cảm ơn, điều đó dường như hoạt động. Nó luôn luôn là thoát để có được một câu trả lời hình thức người sáng tạo. Tôi vẫn phải tìm ra cách lặp lại các bản ghi mà tôi kéo lên mẫu mongodb, nhưng đó sẽ là một câu hỏi khác ... Cảm ơn. – user000001

+0

Xin chào, có thể bạn có thể xem [this] (http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js- templating-engine) câu hỏi quá, nó dựa trên một trong những bạn trả lời ở đây. Tôi nghĩ bạn là người đủ điều kiện nhất để giải quyết câu hỏi này. Vui lòng giúp đỡ nếu bạn có thể. – user000001

+0

Bạn có thể xem xét vấn đề này http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js-templating-engine – user000001

1

Nếu bạn đang chạy nhanh 3, nó chưa được hỗ trợ. tuy nhiên bạn có thể sử dụng nhanh-dot:

npm install express-dot

Sau đó, trong cấu hình

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

Sau đó, trong các tuyến đường:

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

bài của tôi là một plug không biết xấu hổ, nhưng nó có thể giúp đỡ người khác ngoài.

tôi đã không phải là rất hài lòng với cách các module hiện có làm việc với Express 3.x, tôi đã viết một gọi là dot-emc:

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

Cách sử dụng cũng tương tự như những gì đã được đăng tải trên. Cài đặt nó với nom:

npm install dot-emc 

Sau đó thiết lập nó làm công cụ xem mặc định của bạn. Tôi thích sử dụng phần mở rộng .def kể từ khi soạn thảo văn bản tôi nhận file Dot như file Graphviz, vì vậy cú pháp là hơi khác nhau:

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

Sau đó, bạn có thể bắt đầu sử dụng nó như bạn làm bất kỳ công cụ xem khác trong tuyến đường của bạn, ví dụ:

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

Vì phích cắm của bạn được thiết kế để giúp mọi người được chào đón, sau khi tất cả điều này là toàn bộ điểm của trang web này, để giúp đỡ ... – user000001

+0

Cảm ơn cue8chalk. Đây là khó khăn hơn sau đó nó phải được tìm thấy. – Druska

1

Tôi biết đây là câu hỏi cũ nhưng gần đây tôi muốn thử nghiệm doT với ứng dụng Express 4.xx được tạo tiêu chuẩn. Tôi không tìm thấy ví dụ rõ ràng từ @olado để khớp dễ dàng với ứng dụng được tạo của tôi. Tôi đã thử các plugin khác nhau (làm cho nó hoạt động, nhưng không hài lòng), vì vậy tôi đã viết công cụ mẫu như thế này để có được các tệp dot được biên dịch trước với hỗ trợ bao gồm (#) mà không cần thêm bất kỳ plugin nào:

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 

Bây giờ tôi có thể sử dụng nó trong các tiêu chuẩn "res.render" cách trong các tuyến đường như thế này (đối với index.js):

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

Hãy nhớ sử dụng {{it.value}} trong Dot tệp mẫu. Trong ví dụ cơ bản ở trên, chỉ mục.chấm sẽ trông giống như sau:

<!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> 
Các vấn đề liên quan