如何在Docpad中处理路线 [英] how to handle routes in Docpad
问题描述
这应该是很明显的,但是我只是无法理解
This should be really obvious but I just cant get my head around it
如何在Docpad中添加额外的路线?
How do I add extra routes in Docpad??
我正在寻找相当于express.js的Docpad。
Im looking for the Docpad equivalent to express.js's
app.post("*", function(res,req,next){
//Do stuff
}
据我了解,我需要为此创建一个插件模块吗?
我如何告诉Docpad使用我的路由?
我猜它与扩展服务器事件有关,我可以吗?将其作为参数放入docpad.coffee中?
As far as I can understand I need to create a plugin module for this? How do I tell Docpad to use my routes? Im guessing it has something to do with the extend-server event, do I put that as parameter in docpad.coffee?
如何将req对象传递给路由处理程序?
How do I pass the req object to my route handler?
我可以强制docpad始终首先考虑我的路由吗?有点像中间件吗?
可以将(处理后的)网址传回docpads标准路由吗?如何?
can I force docpad to always consider my routing first? kinda like middleware? can I pass a (processed) url back to docpads standard routing? how?
推荐答案
您是否正在寻找类似的东西:
Are you looking for something like this:
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。
This is an event (server extend) in the docpad.coffee file. Its intercepting the request and testing it against a regex (could easily just be a plain url). The user will see the url they input but the index.html will be served.
或更接近您的情况:
server.post "*", (req,res,next) ->
#do stuff
在docpad.coffee内部
inside 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
这篇关于如何在Docpad中处理路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!