2017-09-18 5 views
0

基本的には、私の主なアプリケーションファイルに経路リストがあふれている状況を避けたいと思います。私はそれは、例えば、ユーザー、クライアント、それぞれ独自のルータファイルに場所を整理することが可能かどうか疑問に思っているし、一種のマスタールータは、これらのファイルのすべてを私のアプリケーションのエントリポイント(インデックスなど) js/server.js/app.js)。すべてのExpressルートをアプリファイルの外に集中できますか?

可能であれば、私は、これに似た何かを撮影しています:

app.js

const app = require('express')(); 
const mainRouter = require('app/routes/main'); 

app.use(mainRouter); 

main.js

const mainRouter = require('express').Router(); 

const usersRouter = require('./users'); 
const locationsRouter = require('./locations'); 

mainRouter.use('/users', usersRouter); 
mainRouter.use('/locations', locationsRouter); 

module.exports = mainRouter; 
+0

新しいタイトルに合わせて質問タイトルを更新しました。それが正確であることを確認してください。 – Soviut

+0

中規模の急行アプリを整理するための作業と充分に文書化されたアドバイスのコンパイルhttps://github.com/focusaurus/express_code_structure – lunohodov

答えて

2

をあなたは論理的なグループにあなたのルートを分割することができますexpress.Routerオブジェクトを使用します。各ルートセットは、/routesディレクトリに格納され、関連付けられているルートの種類を示す名前(例:clients.js)が付けられます。

/routes/clients.js

const express = require('express') 

const router = express.Router() 

router.get('/', (req, res, next) => { 
    res.render('clients/index', { clients: [] }) 
}) 

module.exports = router 

これらのルートは、あなたのapp.jsにインポートし、app.use()方法を使用してアプリに登録されます。このメソッドでは、インポートされたルートの各グループがネストされるベースURLを割り当てることもできます。そのため、それぞれのルートでフルパスを指定する必要はありません(例:の代わりに/details)。

app.js

const express = require('express') 

const app = express() 

app.use('/clients', require('./routes/clients')) 

ブラウズhttp://localhost/clients/に、それはあなたに戻ってviews/clients/index.htmlを返します。同様の構造でビューをグループ化することができます。

+0

元の投稿を更新して、私が意味することをより明確に理解できるようにしました。 –

+0

あなたの更新された例では、そうすることができます。しかし、 '/ static'ルートのすぐ隣に置かれるので、app.jsに基本ルート(' app.use() '宣言を保持したいかもしれません。 – Soviut

関連する問題