剛入手的小白,有些關於node的問題想請教下.
我的app.js長這樣:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
//api
var a_api = require('./routes/api/a');
var b_api = require('./routes/api/b');
var c_api = require('./routes/api/c');
var d_api = require('./routes/api/d');
app.use('/api', [a_api, b_api, c_api, d_api]);
a.js
var express = require('express');
var router = express.Router();
var async = require('async');
router.get('/:id/:name/home', function (req, res, next) {
var id = req.params.id;
var name = req.params.name;
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify({'id':id,'name':name}));
});
module.exports = router;
假設現在有100個路由介面,那我豈不是要在app中require100個檔案,然後在use中配置100次?總感覺寫的不對,如果要寫一個靜態的載入器,那麼要怎麼寫?
怪我咯2017-06-21 10:14:26
以下是個人見解:
1.app.js 是服務啟動文件,不應該過多的去處理路由(routes),以題主的圖片來講,每當我要添加一個新的route,都需要去修改app.js,而app.js會越來越長
2.附上本人解決這個問題的方案
// /app.js -- 项目启动文件
// import routes
const api = require('./routes/index')
// set baseUrl
app.use('/api', api) // '/api' 作为根地址,只需定义一次
// /routes/index.js -- 定义所有的路由
const router = require('express').Router()
// defined api list -- 每一行对应一个文件
router.use('/login', require('./login')) // 该路由的根地址 '/login'
router.use('/register', require('./register')) // 该路由的根地址 '/register'
// ...
module.exports = router
// /routes/login.js -- 路由具体实现
const router = require('express').Router()
// 实际api地址 /api/login
router.post('/', function (req, res, next) {
res.json('do something...')
})
// 实际api地址 /api/login/auth
router.post('/auth', function (req, res, next) {
res.json('do something...')
})
module.exports = router
3.希望對題主有幫助
高洛峰2017-06-21 10:14:26
你的路由應該是分模組的吧。
一般一個模組一個js
用戶模組 user.js /users/xxx
訂單模組 order.js /order/xxx
...
就算你有100個URL,一般來說模組不會很多,10個模組已經不是小型系統了,你這樣寫挺好看的
tips:
express發送json
router.get('/:id/:name/home', function (req, res, next) {
var id = req.params.id;
var name = req.params.name;
res.json({name:name,id:id});
});
曾经蜡笔没有小新2017-06-21 10:14:26
app.js中一般是寫url的前部分,在具體的js中寫剩下部分,比如一個url為localhost:3000/use/index,對於這個url,可以將url的use部分寫在app.js中,index部分寫在具體的js中,例如a.js,則app.js中寫法為app.use('use',a),然後再a.js中寫router.get('/index', fn),設計url時,可以設計固定前半部的url,例如/use/index,/use/login,等,把use固定,這樣app.js中只用寫一個。