完整披露:我是下面提到的节点模块的开发人员。
有一个节点模块可以满足您的要求(并且最终会做更多)。它为 express 提供基于约定优于配置的自动路由。模块名称是 honey-express,但目前处于 alpha 开发阶段,尚未在 NPM 上可用(但您可以从https://github.com/jaylach/honey-express的源代码中获取它。
一个简短的例子说明它是如何工作的:(请注意这个咖啡脚本)
# Inside your testController.coffee file. Should live inside /app/controllers
honey = require 'honey-express'
TestController = new honey.Controller
index: ->
# @view() is a helper method to automatically render the view for the action you're executing.
# As long as a view (with an extension that matches your setup view engine) lives at /app/views/controller/actionName (without method, so index and not getIndex), it will be rendered.
@view()
postTest: (data) ->
# Do something with data
现在,在您的 app.js 文件中,您只需要设置一些简单的配置:
# in your app.configure callback...
honey.config 'app root', __dirname + '/app'
app.use honey.router()
现在,只要有请求进来,honey 就会自动寻找具有指定路由的控制器,然后寻找匹配的动作.. 例如 -
- /test 会自动路由到 testController 的 index/getIndex() 方法
- / 会自动路由到 homeController 的 index/getIndex() 方法(默认控制器是 home),如果存在的话
- 如果 http 方法是 POST,/test/test 会自动路由到 testController 的 postTest() 方法。
正如我所提到的,该模块目前处于 alpha 状态,但自动路由工作得很好,并且现在已经在两个不同的项目上进行了测试 :) 但是由于它处于 alpha 开发阶段,因此缺少文档。如果你决定走这条路,你可以查看我在 github 上的示例,查看代码,或者联系我,我很乐意提供帮助 :)
编辑:我还应该注意,honey-express 确实需要最新(BETA)版本的 express,因为它使用了 express 2.x 中不存在的功能。