知識を明確に学ばせる、コードがあり、解説があり、コピーして、知識を学ぶ!
エクスプレス・ジェネレーターがない場合、路線の分割は構造を明確にするために必要です。
プロジェクト体制
- API
- config データベースの設定ファイル
- db.js データベースに接続する
- model
- public
- routes すべてのルート
- index.js ルートのメインエントリーファイル
- login.js
- user.js
- chat.js
- schema
- test
- index.js エントリーファイル
- middlewareConfig.js すべてのミドルウェアはここで設定する
- package.json
プログラムの構成だけが基準ではありません。
プロジェクトのメインエントランス
ルートパスのindex.js
const express = require("express")
const app = express()
// ミドルウェアを登録する
require("./middlewareConfig")(app)
app.use((req, res, next)=> {
res.redirect("/404.html")
})
app.listen(3002, ()=> {
console.log(`http://:02`)
})
基本的にメインエントランスのピースはよりクリアに
統一ミドルウェア管理
上のindex.jsで必要なミドルウェアを見て、アプリのインスタンスを渡すことを忘れないようにしましょう。
middlewareConfig.js
// ミドルウェアを具体的に登録する
const express = require("express")
const bodyParser = require("body-parser")
const logger = require("morgan")
const cors = require('cors')
require("./config/db")
const path = require("path")
// exportがメソッドで、appがメソッド入力で、appがindex.js ルーティングを
module.exports = app => {
// ログプラグイン
console.log(" ")
app.use(logger("dev"))
// CORS
let corsOpt = {
origin: "*",
optionsSuccessStatus: 200
}
app.use(cors(corsOpt))
// 静的ファイルのホスティング
app.use(express.static(path.join(__dirname, "public")))
// リクエストボディのデータを解析する
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
//
require("./routes")(app)
// .... 他のミドルウェアを追加し続けることができる
}
上記ミドルウェアを一元管理・設定可能
大まかな手順は以下の通りです。
- require
- コンフィギュレーションパック
- app.use(package) パッケージの登録
経路管理
ルート/index.js
const userRouter = require("./user")
const loginRouter = require("./login")
const chatRouter = require("./chat")
const testRouter = require("./test")
const routes = (app) => {
app.use("/api/login", loginRouter)
app.use("/api/chat", chatRouter)
app.use("/api/test", testRouter)
app.use("/api/user", userRouter)
}
module.exports = routes
注意: 上記はすべて app.use("/api/chat", chatRouter) を使っているので、このルートのパスのプレフィックスは /api/chat でなければなりません。
例えば、次のようなインターフェイスがあります。
/api/chat/login
/api/chat/quit
/api/chat/
次のサブルートchat.jsでは、/loginと/quitだけを書くことができ、/api/chatは 書けません。
サブルート
個々のサブルートは以下のように記述します。 例: chatRouter
routes/chat.js
// ルートオブジェクトを作成し、ルートを書き込み、それをエクスポートする。
const express = require("express")
const router = express.Router()
router.get("/login", (req, res)=> {
res.json({
code: 0
})
})
router.post("/quit", (req, res)=> {
res.json({
code: 2
})
})
router.post("/", (req, res)=> {
res.json({
code: 2
})
})
module.exports = router
他のルートも同じように書かれています。
- require express
- ルートの作成 router
- 独自のルートを書く router.get() など。
- 輸出ルーティング