四时宝库

程序员的知识宝库

Node.js常用Web框架简介(node.js有什么框架)

很多java同学对于JavaScript的理解,可能还停留在html页面上写几个jquery请求的程度,殊不知在Node.js的加持下,JavaScript早已超越,甚至干起了java的活儿,做起了微服务。珍珠港已被偷袭,后端同学们赶紧把node.js学起来吧!

web框架指的是处理http的服务端框架(https一般由nginx去处理,代码框架不需要管),可以分三个层次。

  • http模块,Node.js 提供了 http模块用于处理基础服务,这是 web 框架的基础。优点是足够轻,缺点是常用功能几乎都需要自己再实现一遍,比如输出json格式,输入静态网页等。
// server.js
const http = require('http');

const server = http.createServer((req, res) => {

    // 获取 url 里面的get请求参数,是不是感觉比较麻烦?
    const queryObject = url.parse(req.url,true).query;
    console.log(queryObject);

    //  获取请求类型  get, post, put , delete 等
    console.log(req.method)

    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('okay');
});

server.listen(8080, '127.0.0.1');

//执行 node server.js 就行
  • express、koa、fastify等轻量级web应用框架,保持最小规模的灵活性,对常用http功能都进行了封装。优点是足够轻,足够干净,几乎没有多余的东西,缺点是如果你想搞mvc等框架类的东西,不提供指导,得自己来,甚至express-generate脚手架也没有mvc。
// server2.js
var express = require('express');
var app = express();
app.use(express.json());
app.post('/login', function(req, res) {
    console.log(req.query)  // get 请求参数获取
    console.log(req.params) // post 表单
    console.log(req.body)   // post json

    // todo  业务逻辑
    res.send({status:0, msg:'登录成功', data:{}})
  })
app.listen(8000, async function () {
    console.log('Express server running at http://127.0.0.1:8000')
})
//执行 node server2.js 就行
  • nestjs,eggjs,think等企业级web框架,完整的mvc,几乎完全类似于spring的代码体验,这是赤裸裸的抢java的人啊,优点是上手时候的熟悉感,代码有明显的 Controller、Service、Model、View 的划分,有利于组织代码规范。



缺点呢,等做了几天开发,就发现好像完全丢失了js的灵活感,怪不得expres压根就不打算搞mvc。

这就是 使用node.js所需web 框架的 3 个层次,理清了它们的关系和适用场景,再去学习就简单了。下面补充一个测试脚本

//  test.js
const axios = require('axios');

// get请求
axios.get('http://localhost:3000/test')
    .then(res => {    
        console.log(res.data);
    })
    .catch(error => {        
        console.log(error);
    });

// post请求
axios.post('http://localhost:3000/test', 
    {username:'a3', password:'11'})
    .then(res => {    
        console.log(res.data);
    })
    .catch(error => {        
        console.log(error);
    });
 
// 执行 node test.js就可以看web应用有没有正常启动了。

总结:

1, http模块要了解,然后使用express等轻量框架。

2, 个人开发,或者独立的微服务,建议express就够了,灵活简单够轻。如果需要mvc自己搭建就行。

3, 团队合作,建议nestjs,midway等,毕竟代码规范优先级最高,完全spring的风格,也有利于其他后端人员加入。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接