仿express封装路由

首先是仿照路由函数,这个是引用的js

var url=require('url');

//封装方法改变res  绑定res.send()
function changeRes(res){

    res.send=function(data){

        res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});

        res.end(data);
    }
}

//暴露的模块
var Server=function(){

    var G=this;   /*全局变量*/

    //处理get和post请求
    this._get={};
    this._post={};

    var app=function(req,res){
changeRes(res);
//获取路由 var pathname=url.parse(req.url).pathname; if(!pathname.endsWith('/')){ pathname=pathname+'/'; }
//获取请求的方式 get post var method=req.method.toLowerCase();
if(G['_'+method][pathname]){ if(method=='post'){ /*执行post请求*/ var postStr=''; req.on('data',function(chunk){ postStr+=chunk; }) req.on('end',function(err,chunk) { req.body=postStr; /*表示拿到post的值*/ G['_'+method][pathname](req,res); /*执行方法*/ }) }else{ /*执行get请求*/ G['_'+method][pathname](req,res); /*执行方法*/ } }else{ res.end('no router'); } } app.get=function(string,callback){ if(!string.endsWith('/')){ string=string+'/'; } if(!string.startsWith('/')){ string='/'+string; } // /login/ G._get[string]=callback; } app.post=function(string,callback){ if(!string.endsWith('/')){ string=string+'/'; } if(!string.startsWith('/')){ string='/'+string; } // /login/ G._post[string]=callback; } } return app; } module.exports=Server();

下面是入口的js

var http=require('http');

var ejs=require('ejs');

var app=require('./model/express-route.js');

http.createServer(app).listen(3000);

app.get('/',function(req,res){

    var msg='这是数据库的数据'

    ejs.renderFile('views/index.ejs',{msg:msg},function(err,data){

        res.send(data);
    })
})


//登录页面
app.get('/login',function(req,res){

    console.log('login');

    ejs.renderFile('views/form.ejs',{},function(err,data){

        res.send(data);
    })

})

//执行登录
app.post('/dologin',function(req,res){

    console.log(req.body);  /*获取post传过来的数据*/

    res.send("<script>alert('登录成功');history.back();</script>")
})


app.get('/register',function(req,res){

    console.log('register');

    res.send('register');
})

app.get('/news',function(req,res){

    console.log('register');

    res.send('新闻数据');
})

 

posted on 2018-02-22 15:54  另一种失败 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/qiaohong/p/8459163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Node.js中,Express是一个流行的Web应用框架,而PostgreSQL是一种强大的开源关系型数据库。将它们结合在一起,可以创建一个高效的后端API服务,使用Express处理HTTP请求,而使用PostgreSQL存储和管理数据。以下是一个简单的步骤来封装这种组合: 1. **安装依赖**: - 首先,确保已安装Node.js和npm。然后在项目目录下运行`npm init`并安装必要的依赖: ``` npm install express pg body-parser ``` - `express`用于构建API路由,`pg`用于连接和操作PostgreSQL,`body-parser`用于解析请求体。 2. **连接到PostgreSQL**: 在`app.js`或相关配置文件中,使用`pg`模块建立到数据库的连接: ```javascript const { Pool } = require('pg'); const pool = new Pool({ user: 'your_username', host: 'localhost', database: 'your_database', password: 'your_password', port: 5432, // 默认PostgreSQL端口 }); ``` 3. **定义Express路由和中间件**: 创建API路由,例如,一个简单的GET请求来获取数据: ```javascript const express = require('express'); const app = express(); app.use(express.json()); // 解析JSON请求体 // 示例路由,假设我们有一个名为"items"的表 app.get('/api/items', async (req, res) => { try { const { rows } = await pool.query('SELECT * FROM items'); res.json(rows); } catch (err) { console.error(err); res.status(500).send('Error fetching items.'); } }); ``` 4. **错误处理**: 异常处理是关键,确保在发生错误时提供有用的反馈给用户: ```javascript app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something broke!'); }); ``` 5. **启动应用**: 最后,启动Express服务器监听特定端口: ```javascript const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值