2012-07-05 35 views
26

OK Tôi có trang chủ chủ yếu là tĩnh nhưng tôi muốn có một phần lượt xem cho điều hướng, chân trang vv. Tôi đang sử dụng EJS và nó trông như thế này:phần ejs 'không được xác định'

điều khiển của tôi: home.js

// Dependencies 
var express = require('express'); 


    module.exports = { 
     get: function(req, res) { 
      app.set('view engine', 'ejs'); 
      var model = { 
      layout:'home', 
        }; 


      res.render('home'); 


     } 
    }; 

thư mục quan điểm của tôi đã NAV, nhà và footer tất cả .ejs

Sau đó, các tập tin html thực tế tước văn bản sẽ trông như sau.

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" > 
<title>Tom Jones</title> 

<!-- CSS --> 
<link rel="stylesheet" href="/css/home.css" type="text/css" media="screen" > 

</head> 
<body> 

<%- partial('nav') %> 

<!--content part --> 
<div id="showcontainer"> 
     <section> 

     </section> 
</div> 

<div id="maincontainer"> 
     <section> 

     </section> 
</div> 

</body> 
</html> 

Vấn đề Khi nào tôi thử nghiệm, tôi chạy vào phần lỗi không được xác định. Tôi đã thử yêu cầu ej nhưng không thành công.

Trả lời

4

Một phần đã bị xóa trong 3.x. Nó bây giờ là lên đến động cơ templating để cung cấp partials.

+1

Tối đa ej hoặc Express – lostAstronaut

+0

ejs. Có một dự án cầu nối cho express.js và rất nhiều công cụ tạo khuôn được gọi là consolidate.js và có thể tìm thấy ở đây: https://github.com/visionmedia/consolidate.js – Pickels

+6

Trớ trêu thay, đây chỉ là một phần ' câu trả lời. Bạn có thể cung cấp giải thích về cách làm cho Partials hoạt động ở tốc độ 3.x và EJS bằng cách sử dụng consolidate.js không? – Joshua

53

Khi @ Pickels cho biết, một phần đã bị xóa trong 3.x. Tuy nhiên, phiên bản mới nhất của EJS cung cấp một cơ chế trong đó có "partials", được gọi là "bao gồm":

https://github.com/visionmedia/ejs#includes

Bao gồm có liên quan đến các mẫu với bao gồm tuyên bố, ví dụ nếu bạn có " ./views/users.ejs "và" ./views/user/show.ejs "bạn sẽ sử dụng <% bao gồm người dùng/show%>. (Các) tệp được bao gồm theo nghĩa đen được đưa vào mẫu, không có IO nào được thực hiện sau khi biên dịch, do đó các biến cục bộ có sẵn cho các mẫu được bao gồm này.

Sau đây sẽ hoạt động như một sự thay thế cho hàm part() cũ của bạn. Bạn sẽ cần phải chỉnh sửa ở nơi khác để hỗ trợ Express 3.x hoàn toàn, nhưng đối với hầu hết các phần này dường như làm việc tốt (thực sự tốt hơn - ít mã hơn và hiệu suất hơn).

<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> --> 
+3

Điều cần lưu ý ở đây là bạn cần phải bao gồm tên tệp: http://stackoverflow.com/a/13537052/131809 – Alex

+0

Ngoài ra, phần bố cục trên trang web ejs có ví dụ về việc sử dụng bao gồm https: // github. com/visionmedia/ejs/blob/master/Readme.md # bố cục để hỗ trợ một cái gì đó giống như những gì bạn đang tìm kiếm. –

+0

Bất kỳ ý tưởng làm thế nào để bao gồm một phần trong một thư mục mẹ? Sử dụng '../ path/partial' không hoạt động ... – Vadorequest

Các vấn đề liên quan