Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在express中,他们为什么使用app和main?_Firebase_Express - Fatal编程技术网

Firebase 在express中,他们为什么使用app和main?

Firebase 在express中,他们为什么使用app和main?,firebase,express,Firebase,Express,我当时在跟踪一个程序,发现了这个代码 //initialize express server const app = express(); const main = express(); //add the path to receive request and set json as bodyParser to process the body main.use('/api/v1', app); 为什么他们同时创建app和main,为什么他们将app传递给'/api/v1'路由?看起来他

我当时在跟踪一个程序,发现了这个代码

//initialize express server
const app = express();
const main = express();

//add the path to receive request and set json as bodyParser to process the body 
main.use('/api/v1', app);

为什么他们同时创建
app
main
,为什么他们将
app
传递给
'/api/v1'
路由?

看起来他们使用的
app
有点像一个子应用,其路由都以
/api/v1
为前缀。这样做的通常方法是使用Express router,而不是app对象,只使用一个app,但app也是路由器,因此显然可以工作

因此,他们的
main
应用程序上的路由都在顶层工作,例如
/about
,而他们的
app
应用程序上的路由都在
/api/v1
上工作,例如
/api/v1/users


更常见的方法是将顶级应用命名为
app
,然后为子应用使用路由器。您将替换:

//initialize express server
const app = express();
const main = express();

main.use('/api/v1', app);
与:

然后顶级路由进入
app
对象,而
api
路由进入
apiRouter
对象



但是,这只是一个更普遍的惯例。任何一种方法都可以。

我建议将您的问题提交给本教程的作者,以了解它们的含义。媒体有评论功能。@DougStevenson会的,谢谢!虽然我已经在几个不同的教程中多次看到了这一点,所以这似乎是相当普遍的。
const app = express();                // top level app
const apiRouter = express.Router();   // api router
app.use('/api/v1', apiRouter);        // hook in api router