ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ //该模块负责对 req 和 res 进行扩展 //做什么? //1.为req增加一个 query 属性,该属性中保存的就是用户 get 请求提交过来的数据 //-req.query //2.为req增加一个 pathname 属性 //- req.pathname //3.为res增加一个 render 函数 var url = require('url'); var fs=require('fs'); var mime=require('mime'); var _=require('underscore'); //让当前模块对外暴露一个函数,通过这个函数将index.js中的 req 和res 传递到当前context.js这个模块中 module.exports = function(req, res) { var urlObj = url.parse(req.url.toLowerCase(), true); //1.为req增加query属性 req.query = urlObj.query; //2.为req增加pathname属性 req.pathname = urlObj.pathname; //将用户请求的方法转为小写字母 req.method = req.method.toLowerCase(); //3.为res增加一个render函数 res.render = function(filename, tplData) { fs.readFile(filename, function(err, data) { if (err) { res.writeHead(404, 'Not Found', { 'Content-Type': 'text/html;charset=utf-8' }); res.end("404,page not found."); return; } if (tplData) { //如果用户传递了模版数据,表示要进行模板替换 var fn = _.template(data.toString('utf8')); data = fn(tplData); } res.setHeader("Content-Type", mime.getType(filename)); res.end(data); }) } } //步骤: //1.思考:该模块中要封装什么代码? //2.思考:这些代码有用到外部的数据吗?如果用到了,是否需要通过参数将这些数据传递到当前模块中 //3.当前模块对外需要暴露的东西(module.exports的值) ~~~ //index.js ~~~ var context = require('./context.js'); context(req, res); ~~~