在Express.js中使用一个公开的对象作为翡翠模板中的值或helper

Using an exposed object as value or helper in Express.js with jade templating?

本文关键字:对象 helper js Express 一个      更新时间:2023-09-26

我(出于测试目的)暴露了一个对象和一个命名函数:

var express = require('express')
  , expose  = require('express-expose')
  , app     = express();
// ...
// Expose with 'utils' namespace, default 'javascript' buffer
app.expose({ foo: 'bar' }, 'utils');
// Expose named function with 'funcs' buffer
app.expose(function foo() { return 'bar'; }, 'funcs');

JavaScript变量创建得很好:

doctype 5
html(lang="en")
    head
        meta(charset='utf-8')
        title
        // Buffer 'javascript'
        script!= javascript
        // Buffer 'funcs'
        script!= funcs
    body
输出:

<!-- Buffer 'javascript'-->
<script>
    window.utils = window.utils || {};
    utils["foo"] = "bar";
</script>
<!-- Buffer 'funcs'-->
<script>
    function foo() { return 'bar'; }
</script>

但是我想从Jade内部访问对象{ foo: 'bar' }function foo() { return 'bar'; }。根据express.expose,两者都可以在翡翠…但是在哪里?

你可以通过在app.locals中添加local来为你的jade模板应用范围添加local。

app.locals.foo = function foo() { return 'bar'; }