使用nodejs封装一个类似express框架 封装静态web服务
2021/5/11 12:25:15
本文主要是介绍使用nodejs封装一个类似express框架 封装静态web服务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先,先在头部引用需要用到的方法
const url = require("url") const fs = require("fs") const path = require("path")
创建一个函数,用于根据不同的文件类型获取不同的Content-Type
function getFileMime(extname) { let data = fs.readFileSync('./data/mime.json') let mimeObj = JSON.parse(data.toString()) return (mimeObj[extname]) }
然后创建一个函数,将静态web服务封装
function initStatic(req, res, staticPath) { //1、获取地址 let pathname = url.parse(req.url).pathname; //获取文件后缀名 let extname = path.extname(pathname); //当文件后缀名存在时,才继续执行下面的步骤 if (extname) { if (pathname != '/favicon.ico') { try { let data = fs.readFileSync('./' + staticPath + pathname); if (data) { let mime = getFileMime(extname); res.writeHead(200, { 'Content-Type': '' + mime + ';charset="utf-8"' }); res.end(data); } } catch (error) { console.log(error) } } } }
将请求都封装至一个函数内,最后再将这个函数暴露出去
function server() { //根据不同的请求,将方法进行区分 let G = { _get: {}, _post: {}, staticPath: ''//默认目录 } let app = (req, res) => { //配置静态web服务 initStatic(req, res, G.staticPath) let pathname = url.parse(req.url).pathname; let method = req.method.toLowerCase(); let extname = path.extname(pathname); if (!extname) { if (G['_' + method][pathname]) { if (method == "get") { G['_' + method][pathname](req, res);//执行get方法 } else { let postData = ''; req.on('data', (test) => { postData += test; }) req.on('end', () => { console.log(postData) //整理前端post的值 //console.log(querystring.parse(postData)); req.body = postData; G['_' + method][pathname](req, res);//执行post方法 }) } } else { res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' }); res.end("页面不存在") } } } app.get = function (str, cb) { //注册方法 G._get[str] = cb; } app.post = function (str, cb) { //注册方法 G._post[str] = cb; } //配置静态web服务 app.static = function (staticPath) { console.log(staticPath) G.staticPath = G.staticPath + staticPath } return app; } module.exports = server();
最后在外部调用时,一局以下格式即可调用get,post以及静态web服务方法
const http = require("http") const app = require('./module/test.js') //注册web服务 http.createServer(app).listen(3000); //执行静态web服务 app.static(""); console.log('Server running at http://127.0.0.1:3000/'); //配置路由 app.get('/test1',function(req,res){ res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' }); res.end("执行get请求成功") }) //配置路由 app.post('/test2',function(req,res){ res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' }); res.end(req.body) })
这篇关于使用nodejs封装一个类似express框架 封装静态web服务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Vue CLI多环境配置学习:从入门到实践
- 2024-11-24Vue CLI多环境配置学习:新手入门教程
- 2024-11-24Vue CLI学习:初学者指南
- 2024-11-24Vue CLI学习:从入门到上手的简单教程
- 2024-11-24Vue3+Vite学习:从零开始的前端开发之旅
- 2024-11-24Vue3阿里系UI组件学习入门教程
- 2024-11-24Vue3的阿里系UI组件学习入门指南
- 2024-11-24Vue3公共组件学习:新手入门教程
- 2024-11-24Vue3公共组件学习入门指南
- 2024-11-24vue3核心功能响应式变量学习