node.js的web后端开发调研

北雨南萍 北雨南萍     2022-11-18     287

关键词:

1. nodejs写后端优缺点(讲解nodejs与js区别)

1.1 Node.js是什么

Node.js 是一个开源与跨平台的 JavaScript 运行时环境

在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),

利用事件驱动、非阻塞和异步输入输出模型等技术提高性能

可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境

非阻塞异步

Nodejs采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何的阻塞,

当完成之后,以时间的形式通知执行操作

例如:

在执行了访问数据库的代码之后,将立即转而执行其后面的代码,

把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率

事件驱动

事件驱动就是当进来一个新的请求的时,请求将会被压入一个事件队列中,

然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,

那么就执行该事件对应的处理代码,一般都是回调函数

比如:

读取一个文件,文件读取完毕后,就会触发对应的状态,

然后通过对应的回调函数来进行处理.

1.2 优缺点

优点:

  • 处理高并发场景性能更佳
  • 适合I/O密集型应用,指的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作

因为Nodejs是单线程,带来的缺点有:

  • 不适合CPU密集型应用
  • 只支持单核CPU,不能充分利用CPU
  • 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

1.3 应用场景

借助Nodejs的特点和弊端,其应用场景分类如下:

  • 善于I/O,不善于计算。因为Nodejs是一个单线程,如果计算(同步)太多,则会阻塞这个线程
  • 大量并发的I/O,应用程序内部并不需要进行非常复杂的处理
  • 与 websocket 配合,开发长连接的实时交互应用程序

具体场景可以表现为如下:

  • 第一大类:用户表单收集系统、后台管理系统、实时交互系统、考试系统、联网软件、高并发量的web应用程序
  • 第二大类:基于web、canvas等多人联网游戏
  • 第三大类:基于web的多人实时聊天客户端、聊天室、图文直播
  • 第四大类:单页面浏览器应用程序
  • 第五大类:操作数据库、为前端和移动端提供基于json的API

其实,Nodejs能实现几乎一切的应用,只考虑适不适合使用它;

2. node.js后台框架介绍

2.1、Koa

第四名: koa2 30k (2013年11月发布) express 的继任者。

https://github.com/koajs/koa​github.com

Koa更像是一个“框架的框架”,因为它本身实在太简单了且极度自由。

Koa 使用 Generator 来实现中间件的流程控制,使用try/catch 来增强异常处理,

同时在 Koa 框架中你再也看不到复杂的 callback 回调了。

Koa框架本身非常小,只打包了一些必要的功能,没有进程管理得搭配着第三方包一起使用。

Koa.js 可以被用于:

  • 前台系统
  • 后台系统
  • 混合系统

Koa.js 主要特性:

  • 代表现代和未来
  • 与所有 Node.js 框架相比,体积更小。
  • 有一个内置的错误捕捉器,防止网站崩溃。
  • 使用 context 对象,该对象同时拥有请求和响应对象。

2.2、Nest

第三名: nest.js 30.8k (2017年11月发布) 目前上榜框架中发布最晚,

也是star 最高且增长最快的 typescript 后端框架。

https://github.com/nestjs/nest​github.com

Nest.js 中文文档​docs.nestjs.cn

Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。

真正完备的、工业级的框架。

它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码),

并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。

提供完整的解决方案,从代码到模块拆分到微服务模型。

并且它的框架底层 HTTP 平台默认是基于 Express 实现的,所以不必担心第三方库的缺失。

它也提供了一个开箱即用的应用程序架构,

允许开发人员和团队创建高度可测试,可扩展,松散耦合且易于维护的应用程序。

Nest.js 可以被用于:

  • 编写更清晰和可重用的代码。
  • 编写具有更高层次结构的代码,如拦截器、过滤器、管道等;
  • 编写可扩展、可测试和松散型应用程序。

Nest.js 主要特性

  • 易于扩展:可与其他库一起使用。
  • 允许开发人员完全使用纯 JavaScript 进行编码。
  • 结合了函数式编程、面向对象编程和响应式编程的特点。
  • 公开框架 API,帮助开发者使用各平台上的各种第三方模块。
  • 它有一个详细且维护良好的文档。

2.3、Total

Total.js是助你创建Node.js,Web页面/应用的好框架,同样支持MVC架构。

2.4、Socket

Socket.io 是用来在客户端和服务器端之间创建实时双向通信的框架。

要做到这一点,客户端需要在浏览器中安装 http://Socket.io,服务器也要集成 http://Socket.io 包。

这使得数据可以在数百万种形式中共享。然而,最受欢迎的方法仍然是 JSON。

Socket.io 由以下两个部分组成:

  • JavaScript 服务:Node.js
  • JavaScript 客户端库:Node.js

注意: Socket.io 还兼容许多其他语言,如 Java、C+、Swift、Dart、.Net 和 Python。

Socket.io 可以被用于:

  • 各种命名空间
  • 广播
  • 事件处理
  • 错误处理
  • 日志和调试
  • 聊天应用
  • 内部

Socket.io 主要特性:

  • 将信息编码为命名的 JSON 或二进制事件。
  • 在应用程序中添加“实时”能力。
  • 支持自动重新连接
  • 出色的速度和可靠性
  • 即时通讯和聊天

2.5、Sails

第五名: sails 21.6k (2012年7月) 最早的 node.js 类 ror 框架。

https://github.com/balderdashy/sails​github.com

Sails 是一个非常稳固的 Node.js 框架,提供了建立任何规模的 Web 应用所需要的所有功能。

在底层使用了 Express框架来提供对 HTTP 请求的处理,同时使用 Socket.IO 框架来处理WebSocket 请求。

它也实现了 ORM 功能,让你的应用程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外一个。

Sails 特别适合用来开发对数据的实时更新有较高要求的应用,而且它的注释巨多巨详细,生怕你不知道怎么用。关心开发者的框架才能长久下去喔。

2.6、Egg

第六名:egg 16.2k (2016年7月) 阿里开源的 node.js 框架,国内使用较为普及。

https://github.com/eggjs/egg​github.com

Egg基于Koa,约束和规范化团队开发,核心是帮助开发团队和开发人员降低开发和维护成本。

它提供基于 Egg 定制上层框架的能力,高度可扩展的插件机制,内置多进程管理,

性能优异,框架稳定。它已被用在阿里多条产品线上,可以证明它的安全可靠性,请放心使用。

7、Hapi.js

第九名: hapi 12.8k (2012年8月) 老牌的 node.js 框架。

https://github.com/hapijs/hapi​github.com

Hapi.js延续了Express.JS的所有优点,并且增加了一些功能。

开发者不用再浪费时间构建基础架构,可以利用这些时间来编写可重用的应用逻辑。

它的一些优点:修复bug和增加新功能都不需要花费时间,为不同类型的客户端构建API,

基于插件的体系结构使扩展变得容易,更好地控制如何处理请求。

Hapi.js 可以被用于:

  • 网站
  • HTTP 代理应用
  • 应用程序接口服务

Hapi.js 主要特性:

  • 输入验证
  • 日志
  • 错误处理
  • 代码可重用性
  • 缓存
  • 没有外部依赖
  • 基于配置的功能
  • 集成框架:在 Node 框架中提供全面的认证和授权 API 支持。

测试同学动手搭个简易web开发项目(代码片段)

...ql,nginx,jenkins.目录技术栈环境配置操作系统前端Node.jsVue.js后端PythonDjango数据库MySQL代理Nginx持续集成Jenkins项目搭建创建后端工程创建RESTfulAPI创建前端工程前端调后端接口前后端结 查看详情

React-Router vs Node.js

...陌生,但我仍在学习。我正在尝试为我的Web应用程序构建后端。我目前正在为我的前端使用reactwithredux。我的问题是,为了创建后端,我需要使用react-router还是必须使用完全不同的平台,例如Node.js。提前谢谢你!【问题讨论】:... 查看详情

web开发node.js实现web服务器(express模块)(代码片段)

1、简介1.1node.js官网地址:https://nodejs.org/Node.js是一个开源和跨平台的JavaScript运行时环境。它是几乎任何类型的项目的流行工具!Node.js在浏览器之外运行GoogleChrome的核心V8JavaScript引擎。这使得Node.js非常高效。1.2express官网地址:h... 查看详情

基于nodejs的14款web框架

摘要:在几年的时间里,Node.js逐渐发展成一个成熟的开发平台,吸引了许多开发者。有许多大型高流量网站都采用Node.js进行开发,像PayPal,此外,开发人员还可以使用它来开发一些快速移动Web框架。下面就介绍14款基于Node.js的Web... 查看详情

node.js 中的 MVC 对开发 restful api 很重要吗?

...,我学习它是为了将它用作我的移动应用程序的服务器或后端。我学习的课程包括一个关于MVC(模型视图控制器)的模块,我想知道它对于使用express开发api 查看详情

前端开发和后端开发有啥区别

前端开发和后端开发的区别在于:一、展示方式不同1、前端开发主要做的是用户所能看到的前端展示界面。2、后端开发主要做的是逻辑功能等模块,是用户不可见的。二、所用技术不同1、前端开发用到的技术包括但不限于html5... 查看详情

node.js初学3

...获得信息,有利于SEO。缺点:占用服务器资源。不利于前后端分离。2.前后端分离的web开发模式前端使用Ajax调用接口,后端负责提供API接口。优点:开发体验好(前端专注ui页面,后端专注api)、用户体验好(局部刷新)、减轻... 查看详情

node.js上除了express还有哪些好用的web开发框架

 老司机都有体会, 开发本身没有多难, 最纠结其实是最初的技术和框架选型, 本没有绝对的好坏之分, 可一旦选择了不适合于自己业务场景的框架, 将来木已成舟后开发和维护成本都很高, 等发现不合适的... 查看详情

区块链利用node.js开发与合约交互的web界面

利用Node.js开发与合约交互的Web界面参考地址:hereandhere零、在私有链上部署合约//本文中用到的MetaCoin合约pragmasolidity^0.4.2;contractMetaCoinmapping(address=>uint)balances;eventTransfer(addressindexed_from,addressindexed_to 查看详情

《node.js开发指南》pdf下载在线阅读,求百度网盘云资源

...目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱动的异步式编程风格,以便进一步利用Node.js的高级特性。作者简介:郭家宝(BYVoid),清华大学计算机系2010级本科生,曾获得信息学奥林匹克竞... 查看详情

js语言怎么样?

...软件。作为一门灵活的脚本语言,JS有很多用途:前端,后端,游戏脚本等。目前javascript的应用场景非常多,并且也是热门语言之一。如web开发、小程序开发等都用到了js,如果不考虑兼容性问题,已经可以使用ES6/7/8中的语法糖... 查看详情

node.js中如何组织前端和后端项目结构? [关闭]

】node.js中如何组织前端和后端项目结构?[关闭]【英文标题】:Howtoorganizefrontendandbackendprojectstructureinnode.js?[closed]【发布时间】:2014-12-0702:12:28【问题描述】:在我的项目中,我想在后端和前端都使用coffeescript,以便用一种编程... 查看详情

web开发ubuntu系统手动搭建node.js环境(代码片段)

1、简介1.1ubuntuhttps://cn.ubuntu.com/download/desktopUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词。1.2node.jshttps://nodejs.org/en/Node.js是一个开源和跨平台的JavaScript运行时环境。它几乎是... 查看详情

node.js介绍优势用途

...介绍Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与PHP、Java、Python、.NET、Ruby等后端语言平起平坐。Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是... 查看详情

合适的后端语言社交网络 Node.js/mongoDb 或 PHP/Mysql [关闭]

】合适的后端语言社交网络Node.js/mongoDb或PHP/Mysql[关闭]【英文标题】:SuitableBackendlanguagesocialnetworkingNode.js/mongoDborPHP/Mysql[closed]【发布时间】:2013-10-2114:59:44【问题描述】:我们正处于开发一个社交网络项目的初始阶段,当然,我... 查看详情

为 Vue 应用程序前端和 node.js 后端配置 nginx

】为Vue应用程序前端和node.js后端配置nginx【英文标题】:ConfigurenginxforbothVueappfrontendandnode.jsbackend【发布时间】:2019-05-1021:32:38【问题描述】:我几个月来一直在寻找这个答案,但一直无法解决这个问题。我使用nginx作为我的web服... 查看详情

node.js学习03:web开发的本质

Web开发本质牢记以下三点请求,客户端发起请求。处理,服务器处理请求。响应,服务器将处理结果发送给客户端对比一个单机版计算器和Web版计算器客户端处理响应服务器响应完毕后,客户端继续处理:浏... 查看详情

node-概述基础语法(代码片段)

...Node开发概述为什么要学习服务器端开发基础:能够和后端程序员更加紧密的配合网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)扩宽知识视野,站在更高的角度审视整个项目服务器端开 查看详情