2014-02-28 58 views
0

這應該是顯而易見的,但我不能讓我的頭在附近如何處理docpad中的路線

如何在Docpad中添加額外的路線?

林尋找Docpad相當於express.js的

app.post("*", function(res,req,next){ 
//Do stuff 
} 

至於我能理解,我需要爲此創建插件模塊? 如何告訴Docpad使用我的路線? 我猜它與擴展服務器事件有關,我把它作爲docpad.coffee中的參數嗎?

如何將req對象傳遞給我的路由處理程序?

我可以強制docpad始終考慮我的路由嗎?有點像中間件? 我可以將(處理的)URL傳遞迴docpads標準路由嗎?怎麼樣?在docpad.coffee文件

server.get /list\/[a-zA-Z]+/, (req,res,next) -> 
       document = docpad.getCollection('documents').findOne({relativeOutPath: 'index.html'}); 
       docpad.serveDocument({ 
        document: document, 
        req: req, 
        res: res, 
        next: next, 
        statusCode: 200 
       }); 

這是一個事件(服務器拉):

回答

1

您正在尋找這樣的事情。它攔截請求並對照正則表達式進行測試(可能很容易就是一個普通的url)。用戶將看到他們輸入的url,但index.html將被提供。

或接近的情況下:

server.post "*", (req,res,next) -> 
       #do stuff 

內docpad.coffee

events: 

    # Server Extend 
    # Used to add our own custom routes to the server before the docpad routes are added 
    serverExtend: (opts) -> 
     # Extract the server from the options 
     {server} = opts 
     docpad = @docpad 

     # As we are now running in an event, 
     # ensure we are using the latest copy of the docpad configuraiton 
     # and fetch our urls from it 
     latestConfig = docpad.getConfig() 
     oldUrls = latestConfig.templateData.site.oldUrls or [] 
     newUrl = latestConfig.templateData.site.url 

     server.post "*", (req,res,next) -> 
      #do stuff