i在我的服务器中创建一个子路由,例如'/users'
,它使用userRoute = express.Router()
但是在MountPath部分中的Express Document中,它使用另一种方式,例如使用userRoute = express()
进行子路由,并将其称为sub App,此处是:
var app = express(); // the main app
var admin = express(); // the sub app
...
app.use('/admin', admin); // mount the sub app
他们的区别和用法是什么?
您始终需要使用express()
来创建顶级服务器应用程序,但是要创建包含隔离路由块或其他功能的子应用程序,则可以在安装新的express()
应用程序之间进行选择或express.Router()
路由器。
它们之间的区别在于该块提供的特定功能的数量;路由器更简单,主要专注于路由,并且在许多情况下,您只想在逻辑上组织应用程序。如果您查看已记录的属性,方法&应用程序和路由器对象都可以使用的事件,您会看到应用程序具有路由器所做的所有内容,可以将其他内容分组为四个主要功能领域:
- 应用程序设置(
get()
,set()
,disable()
,disabled()
,enable()
,enabled()
) - 模板(
engine()
,render()
,locals
) - 可以在由父应用(
mount
事件)安装时通知的能力 - 访问其安装在(
mountpath
,path()
)
的路径
因此,如果您不需要使用任何一种,或者在某些情况下不需要使用它们,但不需要与父级隔离,则可以使用路由器。
感谢jfriend00当我使用app
而不是router
时,我可以设置特定的主题引擎或...为我的路线。