Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8960

Node.jsでルーティングを行う方法と、やってはいけないこと

$
0
0

ルーティング

ルーティングとは:アクセスするパスに応じて、表示する内容や行う処理を変えること

Node.jsでのルーティングの記述方法

・Node.jsアプリのファイル構成

├──app.js    //アプリのメインのバックエンド処理
├── public   //UI(css,クライアントサイドのjavascript)を記述
│   └── css
│       └── style.css
├── routes   //ルーティング処理を記述
│   └── index.js
└── views  //特定のパスにアクセスした時に引き渡すファイル。テンプレートエンジンを用いて記述
    ├── home.ejs
    ├── index.ejs
    ├── login.ejs
    └── register.ejs

・app.js

'use strict'//共通変数constpath=require('path');constmorgan=require('morgan'); //ターミナルにHTTPの処理をリアルタイムで表示させるconstexpress=require('express');constapp=express();constrouter=require('./routes/index.js') //ルーティング処理を書いたファイルをモジュールとして読み込む//POSTのミドルウェアapp.use(express.urlencoded());app.use(express.json());//テンプレートエンジンの設定constviewsPath=path.join(__dirname,'./views')constpublicDirectoryPath=path.join(__dirname,'./public')app.set('view engine','ejs');app.set('views',viewsPath)app.use(express.static(publicDirectoryPath));app.use(morgan({format:'dev',immediate:true}));//ルーティング処理app.use('/',router);app.listen(3001,()=>{console.log('server is up on port 3001')})

・index.js

constexpress=require('express');constrouter=express.Router(); //ルーティング処理を記述していくrouter.get('',(req,res)=>{res.render('index')}).get('/login',(req,res)=>{res.render('login')}).get('/register',(req,res)=>{res.render('register')})//homeにPOSTするときの処理.post('/home',function(req,res){const_username=req.body.username;//POSTが作動しているか確かめる為にconsoleするconsole.log(111)// usernameを渡す + views/home/index.jsを参照するres.render('home',{username:_username})});module.exports=router;

やってはいけない実装方法

もしも、「/login」パスにアクセスした時の処理だけをindex.jsに書いていたとしたら?

//ルーティング処理を書いたファイルをモジュールとして読み込むconstrouter=require('./routes/index.js')(省略)app.get('',(req,res)=>{res.render('index')});app.use('/login',router);

こうすると、/loginのパスにアクセスした時に、エラーになる。
ルーティング処理を書いたファイルをモジュールとして読み込む時のapp.useでは、第一引数を'/'のパスにする必要がある


Viewing all articles
Browse latest Browse all 8960

Trending Articles