blog

expressがルートを分割する

express-generatorがない場合、ルートの分割は必要であり、構造はより明確になります プロジェクト構造は唯一の標準ではなく、チームごとに独自のスタイルがあります プロジェクトのメインエント...

Dec 30, 2020 · 3 min. read
シェア
知識を明確に学ばせる、コードがあり、解説があり、コピーして、知識を学ぶ!

エクスプレス・ジェネレーターがない場合、路線の分割は構造を明確にするために必要です。

プロジェクト体制

- 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)
 
 // .... 他のミドルウェアを追加し続けることができる
}

上記ミドルウェアを一元管理・設定可能

大まかな手順は以下の通りです。

  1. require
  2. コンフィギュレーションパック
  3. 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

他のルートも同じように書かれています。

  1. require express
  2. ルートの作成 router
  3. 独自のルートを書く router.get() など。
  4. 輸出ルーティング
Read next

データ構造とアルゴリズム

ソートアルゴリズムは、データ構造とアルゴリズムの中で最も基本的なアルゴリズムの1つです。 ソートアルゴリズムは内部ソートと外部ソートに分類できます。 内部ソートは、データレコードがメモリ内でソートされます。 一方、外部ソートは、ソートされるデータが非常に大きく、一度にすべてのソートされたレコードを保持することができず、ソートプロセス中に外部メモリにアクセスする必要がある場合です。 挿入ソート、ヒルソート、選択ソート、バブルソート、マージソート、クイックソート、ヒープソート...

Dec 30, 2020 · 7 min read