在Express中按路线更改视图目录?

时间:2019-02-17 18:46:58

标签: node.js express routing

我想为每个路由分别设置 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:scheme="content" /> <data android:scheme="asset" /> <data android:scheme="file" /> <data android:mimeType="video/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> 目录,而不是对所有路由都使用views

因此,每个视图都有一个主文件夹,其中包含路线和视图:

/views/

我如何告诉该路径在var main = require('./main/main.js'); var test = require('./test/test.js'); app.use('/', main); app.use('/test', test); /main中查找视图文件,而不是在/ views中查找所有视图文件?

我希望能够仅在/test中传递文件名,而不是相对路径。

可以使用res.render()添加多个视图,但是我宁愿将这些视图链接到该路由,以防在不同文件夹中有相同名称的文件。还有一个问题,当我希望他们都使用相同的布局文件时,它希望布局文件位于同一文件夹中。

1 个答案:

答案 0 :(得分:1)

使用Express middleware根据路由器更改视图目录。您可以根据应用程序需求在应用程序级别或路由器级别编写中间目录。

下面是应用程序级中间件基于路由更改视图目录的示例,

app.use(function (req, res, next) {
    if (req.path === '/main') app.set('views', './views2');
    else app.set('views', './views');
    next()
})

代码段将检查request path,如果是/main路由,它将使用views2目录,否则将使用views目录。