广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.js的特点和应用场景介绍
  • 1056
分享到

Node.js的特点和应用场景介绍

场景Nodejs 2022-06-04 17:06:16 1056人浏览 安东尼
摘要

node.js应该是当今最火热的技术之一。本文主要介绍node.js的特点及应用场景。 Node.js是一个基于Chrome javascript运行时建立的一个平台,用来方便地搭建快速的 易于扩展的网络应

node.js应该是当今最火热的技术之一。本文主要介绍node.js的特点及应用场景。

Node.js是一个基于Chrome javascript运行时建立的一个平台,用来方便地搭建快速的 易于扩展的网络应用。Node.js借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合 运行在分布式设备的数据密集型实时应用。

1. 特点

1.1 异步I/O

所谓的异步I/O,是相对同步I/O而言的。程序执行过程中必然要进行很多I/O操作,如读写文件、输入输出、请求响应等等。通常来说,I/O操作是非常费时的。例如在传统的编程模式中,你要读一个几G的文件,整个线程都暂停下来,等待文件读完后继续执行。换言之,I/O操作阻塞了代码的执行,极大地降低了程序的效率。

关于异步I/O,其实对于前端工程师来说并不陌生,因为发起ajax请求就是最常见的一种“异步”调用。在Node中,以读取文件(读文件是一种耗时的I/O操作)为例,它与发起Ajax请求的写法很像:

var fs = require('fs');

fs.readFile('/path', function(err, file) {

    console.log('读取文件完成');

});

console.log('开始读取文件');

上述代码在调用fs.readFile后,后续代码是被立即执行的,“读取文件完成”的时刻是无法预知的。当线程遇到I/O操作时不会以阻塞的方式等待I/O操作结束,而只是将I/O请求发送给操作系统,继续执行后续语句。当操作系统完成I/O操作时以事件的形式通知执行I/O操作的线程,线程会在特定时间处理这个事件。

1.2 事件循环与回调函数

所谓事件循环是指Node会把所有的异步操作使用事件机制解决,有个线程在不断地循环检测事件队列。事件循环会检查事件队列中有没有未处理的事件,直到程序结束。事件的编程方式具有轻量级、松耦合、只关注事务点等优势,但是在多个异步任务的场景下,事件与事件之间各自独立,如何协作是一个问题。在Javascript中,回调函数无处不在,回调函数是最好的接受异步调用返回数据的方式。

1.3 单线程

Node保持了JS在浏览器中单线程的特点。单线程的最大好处是不用像多线程编程那样出处在意状态的同步问题,没有死的存在,也没有线程上下文切换的开销。单线程也有其弱点,主要表现在三方面:无法利用多核CPU;错误会引起整个应用退出,应用的健壮性值得考研;大量计算会占用CPU导致无法继续调用异步I/O。

为了解决上述问题,Node采用了与HTML5 WEB Workers相同的思路,使用child_process来解决但单线程中大计算量的问题。通过将计算分发到各个子进程,可以将大量计算分解掉,然后再通过进程之间的事件消息来传递结果。

1.4 跨平台

Node是跨平台的,即同样的一套JS代码都可以部署运行在windowslinux、OSX等平台。这主要得益于Node在操作系统与Node上层模块系统之间构建了一层平台层架构libuv。

查看图片

2. 应用场景

1)、实时应用:如在线聊天,实时通知推送等等(如Socket.io)
2)、分布式应用:通过高效的并行I/O使用已有的数据
3)、工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
4)、游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架
5)、利用稳定接口提升Web渲染能力
6)、前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(如著名的纯Javascript全栈式MEAN架构)

--结束END--

本文标题: Node.js的特点和应用场景介绍

本文链接: https://www.lsjlt.com/news/12030.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js的特点和应用场景介绍
    Node.js应该是当今最火热的技术之一。本文主要介绍Node.js的特点及应用场景。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台,用来方便地搭建快速的 易于扩展的网络应...
    99+
    2022-06-04
    场景 Node js
  • Redis的数据类型和应用场景介绍
    1.string类型...
    99+
    2022-10-18
  • css 多种背景的使用场景和技巧、优点介绍
    本篇内容主要讲解“css 多种背景的使用场景和技巧、优点介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css 多种背景的使用场景和技巧、优点介绍”吧!【 】CSS background是最常...
    99+
    2023-06-07
  • Redis数据库的应用场景介绍
    一、MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,...
    99+
    2022-06-04
    场景 数据库 Redis
  • 消息队列应用场景介绍
    一、什么是队列 队列(Queue)是一种常见的数据结构,其最大的特点就是先进先出(First In First Out),作为最基础的数据结构,队列应用很广泛。比如火车站排队买票等等...
    99+
    2022-11-13
  • ThreadLocal原理介绍及应用场景
    本次给大家介绍重要的工具ThreadLocal。讲解内容如下,同时介绍什么场景下发生内存泄漏,如何复现内存泄漏,如何正确使用它来避免内存泄漏。 ThreadLocal是什么...
    99+
    2022-11-12
  • Clouda框架介绍与应用场景
    Clouda是一个基于浏览器运行的前端应用开发框架。它提供了一套完整的开发工具和资源,可以帮助开发者快速构建跨平台的Web应用。Cl...
    99+
    2023-08-23
    Clouda
  • Node.js中npx命令的用法及使用场景介绍
    这篇文章主要介绍“Node.js中npx命令的用法及使用场景介绍”,在日常操作中,相信很多人在Node.js中npx命令的用法及使用场景介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js中npx...
    99+
    2023-06-20
  • JDBC中PreparedStatement详解及应用场景介绍
    前言 在Java中,当需要向数据库中执行SQL语句并传递参数时,我们通常会使用PreparedStatement接口。PreparedStatement继承自Statement接口,用于预编译SQL语句并执行参数化查询,这样可以提高执行...
    99+
    2023-09-22
    sql java mybatis 数据库 mysql
  • 常见数据库介绍和使用场景
    在构建系统时要进行设计考虑和权衡。 1.介绍 要选择正确的存储解决方案,需要以下考虑。 关键因素 数据结构 查询模式 您需要处理的数量或规模 2.缓存解决方案 如果您经常调用数据库或远程调用具有高延迟的独立服务,则可能需要[缓存]...
    99+
    2018-03-25
    常见数据库介绍和使用场景
  • MySQL中的数据类型及其应用场景介绍
    MySQL是一种常见的关系型数据库管理系统,广泛应用于各种系统和应用程序中。在MySQL中,数据以不同的数据类型存储在表中。本文将介绍MySQL中常见的数据类型及其应用场景,并附有代码示例。一、整数类型整数类型(INT):用于存储正负整数值...
    99+
    2023-10-22
    适用于表示年龄 数量等整数值) 适用于表示用户名
  • Spring 框架中数据类型的特点和应用场景
    Spring 框架中数据类型的特点和应用场景 Spring 是一个轻量级的开源框架,它提供了一个基于依赖注入(DI)和面向切面编程(AOP)的环境,用于开发企业级应用程序。Spring 框架中的数据类型是其核心组件之一,本文将介绍 Spri...
    99+
    2023-07-04
    数据类型 spring apache
  • 云服务器的介绍和特点
    云服务器(Cloud Storage)是一种用于在云端托管应用程序和数据的服务器。它是将数据存储在服务器上,用户可以在云端托管这些应用程序。云服务器通常通过公有云、私有云、或混合云来实现。 云服务器的特点是其高可靠性、安全性和可扩展性。它...
    99+
    2023-10-26
    服务器
  • Numpy中Meshgrid函数介绍及2种应用场景
    Meshgrid函数是NumPy中的一个函数,用于生成一个二维坐标网格。它接受两个一维数组作为输入,然后返回两个二维数组,分别表示这...
    99+
    2023-09-20
    Numpy
  • java建造者模式的特点及应用场景
    建造者模式模式的定义与特点建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与...
    99+
    2020-09-26
    java基础 java 建造者模式
  • Redis基础教程第2节 Redis和NoSql 介绍与应用场景
    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,...
    99+
    2022-10-18
  • mysql中蠕虫复制的使用场景介绍
    本篇内容介绍了“mysql中蠕虫复制的使用场景介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明将一个表的数据迁移到另一个表,或者将一部...
    99+
    2023-06-20
  • 阿里云服务器的介绍和特点
    阿里云服务器是阿里云的一个服务,用于提供高性能、高可靠性的云服务器服务。 该服务提供了许多不同的功能和特性,包括以下几个主要特点: 高性能:阿里云服务器提供强大的计算能力,可以满足大量用户的计算需求。通过多核CPU、内存、存储等多种技术...
    99+
    2023-10-26
    阿里 服务器
  • Vue.set与this.$set的用法与使用场景介绍
    目录Vue.set()和this.$set()介绍:一。为什么有Vue.set二。解决方法数组对象三。Vue.set对于数组对于对象注意四。使用场景Vue.set()和this.$s...
    99+
    2022-11-13
  • RabbitMQ中七种模式介绍与应用场景的示例分析
    这篇文章给大家分享的是有关RabbitMQ中七种模式介绍与应用场景的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。七种模式介绍与应用场景 简单模式(Hello World)做最简单的事情,一个生...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作