node.js - 如何在 Jade 模板中包含服务器端脚本?

标签 node.js express pug

我刚刚安装了moment.js ;现在我想在我的 Jade 模板中访问 moment。示例:

.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")

明确地说,我希望在服务器端格式化日期,然后作为呈现的字符串发送到客户端。

那么如何在 Jade 模板中提供 JavaScript 库?


我可能应该注意到我正在将它与 Express 一起使用:

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

是否有一些我必须以某种方式传递的选项来告诉它要包含哪些库?


我突然想到这与传入局部变量完全没有区别。例如,

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

但我不想将它传递给每个 View ;如果我忘记了它,我的应用程序会在主布局中使用时中断。那么如何确保它始终可用?

最佳答案

从 Express 3 或 4 中删除助手。

请使用 app.locals

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

app.locals 对象是一个 JavaScript 对象。添加到它的属性将在应用程序中作为局部变量公开。

所以你可以在任何 View 文件中使用 app.localsJadeEJS;

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

关于node.js - 如何在 Jade 模板中包含服务器端脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14310056/

相关文章:

node.js - 我需要远程调用 mongoexport 并从 node.js 获取结果

javascript - 为什么 "Hello world"打印了 2 次?

mysql - Node mysql顺序查询执行

node.js - 使用 ava 和 proxyquire 用 sinon 加载模块后无法 stub 方法

javascript - 竖琴服务器连字符在 Jade 中不起作用

node.js - 有没有办法在通过响应发送之前获取 JADE 模板的 HTML

reactjs - React 类似(Jade 或 Slim)的语法?

node.js - 应用程序启动时出现nodejs pm2错误

javascript - 在没有脚本标签的 Jade 中单击按钮

node.js - express js API server多个请求互相阻塞?