2013-01-14 35 views
15

Tôi vừa cài đặt moment.js; bây giờ tôi muốn truy cập moment bên trong mẫu Jade của tôi. Ví dụ:Làm cách nào để bao gồm tập lệnh phía máy chủ trong mẫu Jade?

.main-content 
    .container 
     .access-details.clearfix 
      .left 
       div Logged in: <b>#{user.name}</b> 
       div Access Lvl: #{user.accessLevel} 
      .right 
       div= moment().format("dddd, MMMM Do YYYY, h:mm:ss a") 

Để rõ ràng, tôi muốn ngày được định dạng phía máy chủ và sau đó được gửi cho khách hàng dưới dạng chuỗi được hiển thị.

Vậy làm cách nào để tạo một thư viện JavaScript bên trong mẫu Jade?


tôi có lẽ nên lưu ý rằng tôi đang sử dụng này với Express:

var server = express.createServer(); 
server.configure(function() { 
    server.set('view engine', 'jade'); 

Có một số tùy chọn tôi phải vượt qua trong đó bằng cách nào đó để nói với nó mà thư viện để đưa?


Chỉ xảy ra với tôi rằng điều này hoàn toàn không khác với việc chuyển sang biến cục bộ. ví dụ:

server.get('/', function (req, res) { 
    res.render('index', { 
     locals: { 
      moment: require('moment') 
     } 
    }); 
}); 

Nhưng tôi không muốn chuyển điều này vào mỗi chế độ xem; nếu tôi quên nó thì ứng dụng của tôi sẽ bị vỡ khi nó được sử dụng trong layout chính. Vậy làm cách nào để đảm bảo luôn có sẵn?

Trả lời

19

Helpers được xóa nhanh 3 hoặc 4.

Vui lòng sử dụng app.locals

app.locals.moment = require('moment'); 

Đối tượng app.locals là một đối tượng JavaScript. Các thuộc tính được thêm vào nó sẽ được hiển thị dưới dạng các biến cục bộ bên trong ứng dụng.

Vì vậy, bạn có thể sử dụng app.locals trong bất kỳ tệp xem nào, Jade hoặc EJS;

moment().format('YYYY-MM-DD h:mm:ss'); 
8

This answer đã chỉ cho đúng hướng, mặc dù tài liệu trên dynamicHelpers dường như đã biến mất một cách bí ẩn từ tài liệu Express.

Ngoài ra, tôi không cần trợ lý động động, chỉ là một trình trợ giúp tĩnh (không truy cập vào yêu cầu/phản hồi). Vì vậy, tôi đã đâm vào bóng tối tại những gì nó sẽ được gọi là:

server.helpers({ 
    moment: require('moment') 
}); 

Làm việc như một sự quyến rũ! moment hiện khả dụng ở tất cả các chế độ xem của tôi.

+14

Khái niệm người trợ giúp đã bị xóa khỏi Express 3. Ý bạn là gì bởi "người trợ giúp tĩnh" là ['app.locals'] (http://expressjs.com/api.html#app.locals) (' app.locals.moment = require ('moment'); '). Đối với '.dynamicHelpers' sử dụng phần tử trung gian. – elmigranto

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