Node.js-搭建自己的服务器(仿egg.js)

1、项目目录

                               

2、index.js

let http =require("http");
let router = require("./router/router.js")
let app = http.createServer((req,res)=>{
    router(req,res);
})
app.listen(81);
//配置路由
router.use("/mysqldata",router.route.mysqldata);
router.use("/mysqldata2",router.route.mysqldata2);

3、router.js

let fs = require("fs"); // fs模块,读取文件
let url = require("url"); //url模块,解析url
let querystring = require("querystring") //querystring模块,解析参数
let route = require("./route.js");
module.exports = function(req, res) {
    let pathname = url.parse(req.url).pathname.substr(1);
    req.query = querystring.parse(url.parse(req.url).query);
    res.json = (arg) => { //利用回调函数从后端传入对象过来,并转化为json数据,再传给前端
        res.end(JSON.stringify(arg));
    }
    if (module.exports.route[pathname]) {
        //数据接口的路由
        module.exports.route[pathname](req, res);
    } else {
        //静态资源的托管
        fs.readFile(__dirname + "/../src/" + pathname, (err, data) => {
            res.end(data);
        })
    }
}
module.exports.route = { ...route};
module.exports.use = function(pathname, callback) {
    module.exports.route[pathname.substr(1)] = callback;
}

4、route.js

let service = require("../service/service.js")
module.exports = {
    mysqldata(req, res) {
        service.getAllformTable("student", (error, results, fields) => {
            // console.log(results)
            res.json(results)
        })
    },
    mysqldata2(req, res) {
        service.addtoDB(req.query, (error, results, fields) => {
            if (error) {
                res.json(error);
            }
            res.json(results);
        })
    }
}

5、mysqldbtool.js

let mysql = require("mysql");
module.exports = function(option, sql, callback) {
    //配置信息
    let connection = mysql.createConnection(option);
    //连接mysql
    connection.connect();
    //操作mysql
    connection.query(sql, (error, results, fields) => {
        callback(error, results, fields);
    })
    //断开mysql连接
    connection.end();
}

6、service.js

let mysqldbtool = require("./mysqldbtool.js");
let option = {
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'h52001'
}
module.exports = {
    //获取数据库中所有数据
    getAllformTable(tablename, callback) {
        let sql = `select * from ${tablename}`;
        mysqldbtool(option, sql,callback);
    },

    //添加数据到数据库
    addtoDB(userdata, callback) {
        let sql = `insert into student(name,birth,sex,description) values("${userdata.name}","${userdata.birth}","${userdata.sex}","${userdata.description}")`;
        mysqldbtool(option, sql,callback);
    }
}

7、index.html

<script type="text/javascript">
    function fn(){
        axios("http://localhost:81/mysqldata")
        .then((res)=>{
            console.log(res.data);
        })
    }
			
    function addDataToDB(){
        axios(`http://localhost:81/mysqldata2?name=${name1.value}&birth=${birth.value}&sex=${sex.value}&description=${description.value}`)
        .then((res)=>{
            console.log(res.data);
        })
    }
</script>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值