node_mvc路由设计
1.入口index.js
let http = require('http')
let service = require('./service/index.js')
// 1.执行router/index.js导入路由对象
let router = require('./router/index.js')
// 2.使用use方法配置路由 // 路由设计不对,use方法没用
router.use('/home', router.home)
router.use('/guoji', router.guoji)
router.use('/guonei', router.guonei)
router.use('/sports', router.sports)
let server = http.createServer((req, res) => {
// 3.发送请求
router(req, res)
}).listen(8888)
2.router/index.js 路由设计理念
let url = require('url')
let querystring = require('querystring')
let request = require('request')
let fs = require('fs')
// 导出路由方法,与路由设计分离
let routerMethods = require('./routerMethods.js')
//3.1设计路由理念
module.exports = (req, res) => {
let urlObj = url.parse(req.url)
let methods = module.exports[urlObj.pathname.substr(1)]
if (methods) methods(req, res)
else {
//静态路由资源托管
fs.readFile(__dirname + '/../src'+urlObj.pathname , (err, data) => {
if (err){return err}
res.end(data)
})
}
}
//es6语法 对象合并
//2.2设计实现的分离
Object.assign(module.exports, routerMethods)
//2.1路由配置 // 路由设计不对 use方法没用,把自己的方法重新赋值给自己
module.exports.use = (url, callback) => {
let urlProp = url.substr(1)
module.exports[urlProp] = callback
}
3.router/routerMethods.js路由方法实现
//实现路由方法 module.exports = { home () { console.log('home...') }, guonei () { console.log('guonei...') }, guoji () { console.log('guoji...') }, sports () { console.log('sports...') } }

浙公网安备 33010602011771号