如何翻译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
提前致谢。
答案 0 :(得分:2)
这是从模板中调用函数的一般解决方案;请参阅@gustavohenke关于如何在玉石模板中使用shrinkroute的内置locals.buildFullUrl
函数的特定解决方案的答案
// 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>
答案 1 :(得分:2)
首先,确保您使用的是shrinkroute中间件:
app.use( shrinkr.middleware );
它会自动为您提供以下帮助:
req.buildUrl
和res.locals.url
- 为路径构建路径。与使用shrinkr.url()
相同。req.buildFullUrl
和res.locals.fullUrl
- 为路线构建完整的网址。与使用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的创作者。