当前位置: 首页 > 网络应用技术

Node.js的3个级别的Node.js的Web框架,如果您澄清它,您就不会感到困惑

时间:2023-03-06 14:32:56 网络应用技术

  Web框架是指处理HTTP和HTTPS的服务端框架。Node.js提供了用于处理协议数据的HTTP和HTTPS模块,这是Web框架的基础。

  但是,HTTP和HTTPS的API太简单了,使用更麻烦,因此它通常使用Express,Koa,Fastify,它封装了一层框架来简化。

  但是,Express类的框架在代码体系结构中不提供限制,因此它不适合具有更复杂模块的企业级别的应用程序。目前,有必要使用Eggjs和Nestjs,例如Eggjs和Nestjs。

  这是网络框架的三个级别,阐明了它们的关系和适用的场景,然后学习就不会感到困惑。

  让我们看看以下内容:

  HTTP基于TCP。解析通过TCP传递的HTTP协议数据传递。它传递给处理程序处理。处理程序处理后,必须返回HTTP响应。这就是HTTP模块所做的。

  尽管HTTP模块可以处理请求和响应,但提供的API过于原始:

  例如

  例如,返回响应只能返回带有写或结束的缓冲区或字符串。如果要返回JSON,文件下载,HTML视图等,则必须自己实现。

  并且必须自己判断,发布,发布,删除和其他请求类型。

  由于这些疼痛点,我们通常不直接使用HTTP模块,而是使用Web框架(例如Express,KOA和FASTIFY)的Webed层。

  Express的框架刚刚解决了疼痛的疼痛点:

  例如,req.params获取请求参数

  res.download返回下载响应

  res.render返回由模板引擎渲染的HTML

  例如,文件上传中间软件

  有了这么多方便的功能,它确实比HTTP模块要简单得多。

  但是,Express类的Web框架也存在问题,也就是说,没有组织代码的方式。当模块具有更多代码时,很容易弄乱,因为它仅按照类似于洋葱的顺序调用中间部分。没有模块和MVC部门。

  Express -Class框架可以提供一些小型服务,并且企业级别的应用程序还必须使用MVC框架,例如NETJS和EGGJS。

  Nestjs类的框架实现了MVC模式。该代码具有明显的控制器,服务,模型和视图部:

  导入{主体,控制器,删除,get,param,post}来自'@nestjs/commit';

  从'https://www.shouxicto.com/article/dto/create-user.dto'import {createUserdto}

  导入{user}来自'https://www.shouxicto.com/article/user.entity';

  导入{userService}来自'https://www.shouxicto.com/article/users.service';

  @controller('用户')

  导出类用户controller {

  Constructionor(私有ReadOnly userService:userService){}

  @邮政 ()

  create(@body())createuserdto:createuserdto):Promise {{{

  返回this.usersservice.create(createUseUserdto);

  }

  @得到 ()

  Findall():承诺 {{{

  返回this.usersservice.findall();

  }

  @get(':id')

  findOne(@param('id')ID:字符串:字符串):Promise {{{

  返回this.usersservice.findone(id);

  }

  @delete(':id')

  删除(@param('id')ID:字符串):Promise {{{

  返回this.usersservice.remove(id);

  }

  } Nestjs是基准Java的弹簧,它实现了IOC,AOP和其他模式。模块之间的耦合非常较低。对于Express,组织代码提高了成绩。

  Nestjs的底层是Web框架,例如Express,Fastify,也可以灵活地切换底层。

  可以看出,除了丰富的API,Nestjs和EggJS -Level -Enterprise框架外,还提供了代码组织规范。通过诸如模块,控制器,服务等的概念,可以很好地组织复杂的业务逻辑。

  Web框架基于HTTP和HTTPS模块,但是它提供的API太原始了,使用更麻烦,因此我们通常使用Express和Koa等框架来简化。具有组织复杂代码的能力。对于企业级别的复杂应用,它们仍将使用MVC框架,例如Nestjs和Eggjs。底层是Express和KOA,但它提供了模块和控制器。,服务和其他概念可以组织复杂的代码。

  很明显,为什么这三个级别适合哪种情况适合它们,以便更好地掌握它们,并且不要在技术选择方面感到困惑。