Routes 如何在Docpad中处理路由

Routes 如何在Docpad中处理路由,routes,docpad,Routes,Docpad,这应该是很明显的,但我就是想不起来 如何在Docpad中添加额外的路由 我正在寻找与express.js相当的Docpad app.post("*", function(res,req,next){ //Do stuff } 据我所知,我需要为此创建一个插件模块? 我如何告诉Docpad使用我的路线? 我猜这与extend server事件有关,我是否将其作为参数放在docpad.coffee中 如何将req对象传递给路由处理程序 我可以强迫DePad首先考虑路由吗?有点像中间件? 我可以将(

这应该是很明显的,但我就是想不起来

如何在Docpad中添加额外的路由

我正在寻找与express.js相当的Docpad

app.post("*", function(res,req,next){
//Do stuff
}
据我所知,我需要为此创建一个插件模块? 我如何告诉Docpad使用我的路线? 我猜这与extend server事件有关,我是否将其作为参数放在docpad.coffee中

如何将req对象传递给路由处理程序

我可以强迫DePad首先考虑路由吗?有点像中间件?


我可以将(已处理的)url传递回Docpad标准路由吗?怎么做?

你在找这样的东西吗:

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
                });
这是docpad.coffee文件中的事件(服务器扩展)。它拦截请求并根据正则表达式(可能只是一个简单的url)进行测试。用户将看到他们输入的url,但会提供index.html

或者更接近您的案例:

server.post "*", (req,res,next) ->
                #do stuff
里面有咖啡

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