Express
https://gyazo.com/ac003a3e9f9e2c6df5355c818222729e
デファクトスタンダードなNode.jsのserver library
昔から使われているのと、利用者が多いのとで、転がっている記事の質があまり良くない印象があるmrsekut.icon
TSではなくJSを使っていたり、書き方が粗雑だったりする
TypeScript firstではないので、チラホラ運用でカバーが必要な箇所が散見されるmrsekut.icon
例えばnext()の呼び忘れとか、到達しないroute関数の存在は、静的に気付けない
開発者は@tj
github
docs
examples
https://github.com/GeekyAnts/express-typescript
ExpressのEndpointに型を付ける
ExpressのMiddleware
ExpressのRouting
ExpressのError Handling
#WIP
ExpressのMiddlewareの追加時にReqの型を拡張する
middlewareを追加すると、reqにpropertyが生えるので、それを入れる必要がある
code:例.ts
declare global {
namespace Express {
interface Request {
timedout: number;
}
}
}
code:ts
declare module 'express' {
interface Request {
timedout: number;
}
}
そのmiddlewareがts firstになっていれば、libraryを入れれば上のような定義が自動で入っているはず
/mrsekut-book-483996937X/263
/mrsekut-book-483996937X/266
Expressのtest
#??
rootのファイルにroutingをベタベタ書いていくの、どうにかならんのか?
できれば型で定義したいんだけどmrsekut.icon
こんな感じに書くか
mainの処理を上部に書くを実践したい
code:ts
main();
function main() {
const app = express();
settings(app);
routes(app);
run(app);
}
function settings(app: Express) {
app.use(cors());
}
function routes(app: Express) {
app.use('/users', users);
}
function run(app: Express) {
app.listen(3001, () => console.log('Server is running'));
}
appがinstanceなので、全然純粋じゃなくてキモい
関連するlibraryとか
express-generator
http://expressjs.com/en/starter/generator.html
ひな形を生成する
jadeとか要らんもの入ってくるの嫌だなmrsekut.icon
JSだしmrsekut.icon
めちゃくちゃ小さいので、参考にはなるが使う必要なくない?という気がするmrsekut.icon
express-generator-typescript
https://github.com/seanpmaxwell/express-generator-typescript
typescript版
express-generatorに比べて生成されるものの量が多い
express-session
express-jwt
express-validator
https://express-validator.github.io/docs/
Express v5
Next.jsの拡張基盤とすることもできるらしい
https://expressjs.com/ja/advanced/best-practice-performance.html
ベスプラ
routingの静的解析ツール
https://efcl.info/2021/04/21/express-router-dependency-graph/
https://efcl.info/2021/03/26/create-validator-ts/
logger
morgan-body
https://github.com/sirrodgepodge/morgan-body
log4js-node
/gyarasu/Express(Node.js)のベストプラクティス
https://github.com/goldbergyoni/nodebestpractices/blob/master/README.japanese.md
nodejsのベスプラ