node.js - node -关于书写优美的app.js

浏览:47日期:2022-09-07

问题描述

刚入手的小白,有些关于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’);//apivar 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次?总感觉写的不对,如果要写一个静态的加载器,那么要怎么写?

问题解答

回答1:

以下是个人见解:1.app.js 是服务启动文件,不应该过多的去处理路由(routes),以题主的图片来讲,每当我要添加一个新的route,都需要去修改app.js,而app.js则会越来越长2.附上本人解决这个问题的方案

// /app.js -- 项目启动文件// import routesconst api = require(’./routes/index’)// set baseUrlapp.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/loginrouter.post(’/’, function (req, res, next) { res.json(’do something...’)})// 实际api地址 /api/login/authrouter.post(’/auth’, function (req, res, next) { res.json(’do something...’)})module.exports = router

3.希望对题主有所帮助

回答2:

你的路由应该是分模块的吧。一般一个模块一个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}); });回答3:

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中只用写一个。

相关文章: