2013-10-10 37 views
3

如何翻譯從shrinkroute README文件中的例子:如何在jade模板hrefs中嵌入shrinkroute url()?

// 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 

感謝。

回答

2

首先內locals.buildFullUrl功能,確保您使用的shrinkroute中間件:

app.use(shrinkr.middleware); 

它會自動爲您提供以下助手:

  • req.buildUrlres.locals.url - 建立一個路由路徑。與使用shrinkr.url()相同。
  • req.buildFullUrlres.locals.fullUrl - 爲路線構建完整的網址。與使用shrinkr.fullUrl()相同。

在玉,你只需要使用以下命令:

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的創造者。

2

這是從模板內調用函數的一般解決方案;看到@gustavohenke的答案如何使用特定的解決方案shrinkroute的內置玉模板

// 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> 
+0

感謝柏拉圖。但是,我們的目標是調用玉模板中的shrinkroute.url()方法,使用傳遞的參數從名爲「user」的路由中創建url。我不確定這是否適用於玉器。 – user1161178

+0

已編輯以演示模板的調用功能。如果你想使用現有的功能,你也可以在節點中設置'locals.shrinkUrl = shrinkUrl.url'。 – Plato

+0

非常好。謝謝! – user1161178

相關問題