3

如何翻译 shrinkroute README 文件中的示例:

// or views...
<a href="<%= url( "user", { id: 1 }) %>">User profile</a>
<a href="<%= fullUrl( "user", { id: 1 }) %>">User profile</a>

用于玉模板?例如,像

a(href="#{ url( "user", { id: 1 }) }") User profile

提前致谢。

4

2 回答 2

2

这是从模板中调用函数的通用解决方案;locals.buildFullUrl有关如何在翡翠模板中使用 shrinkroute 的内置函数的具体解决方案,请参见 @gustavohenke 的回答

// node.js
var url = require('url');
// Set up locals.shrinkUrl for every request
app.all('*', function(req, res, next){
  res.locals.shrinkUrl = function(path, queryObject){
    var out = url.format({
      pathname: path,
      query: queryObject,
    });
    return out;
  };
  next();
});

// template.jade
a(href=locals.shrinkUrl("user", {id: 1}) ) User profile

// rendered
<a href='/user?id=1'>User profile</a>
于 2013-10-10T21:27:07.517 回答
2

首先,确保您使用的是 shrinkroute 中间件:

app.use( shrinkr.middleware );

它会自动为您提供以下助手:

  • req.buildUrlres.locals.url- 为路线构建路径。与使用相同shrinkr.url()
  • req.buildFullUrlres.locals.fullUrl- 为路由构建完整的 URL。与使用相同shrinkr.fullUrl()

在 Jade 中,您只需使用以下内容:

a(href=url( "user", { id: 1 } )) My Username
a(href=fullUrl( "user", { id: 1 } )) My Username

渲染输出:

<a href="/user/1">My Username</a>
<a href="http://localhost/user/1">My Username</a>

上面的输出将取决于您在 shrinkroute 实例中命名的路由。

免责声明:我是 Shrinkroute 的创建者。

于 2013-10-14T19:33:34.917 回答