Node.js 是什么?

news2024/10/6 4:05:01

简介

Node.js入门指南,服务器端JavaScript运行时环境。Node.js是在Google Chrome V8 JavaScript引擎的基础上构建的,它主要用于创建web服务器,但并不局限于此。

实际上Node.js 是把运行在浏览器中的js引擎抽离处理,进行再次封装,成为一个独立的运行环境。

Node.js是一个开源的跨平台JavaScript运行时环境。它几乎是任何类型项目的流行工具!

Node.js在浏览器之外运行V8 JavaScript引擎,这是谷歌Chrome的核心。这使得Node.js具有非常高的性能

Node.js应用程序在单个进程中运行,而无需为每个请求创建新的线程。Node.js在其标准库中提供了一组异步I/O标准库,用于防止JavaScript代码阻塞。通常,Node.js中的库是使用非阻塞范式编写的,使阻塞行为成为例外而非常态。

区别其他后端语言,例如java、PHP等语言,进行请求的时候不会单独发送新的线程,而是Node.js引擎统一进行处理,只是在线程上分段处理,也类似于golang语言中协程的概念。

当Node.js执行I/O操作时,比如从网络读取、访问数据库或文件系统,而不是阻塞线程和浪费CPU周期等待,Node.js会在响应返回时恢复操作。

这使得Node.js可以在一台服务器上处理数千个并发连接,而不会带来管理线程并发的负担,这可能是一个重要的错误来源。

这样在进行高并发操作时,相对其他语言来说,相同资源下,可提供更高的并发数。

Node.js具有独特的优势,因为数百万为浏览器编写JavaScript的前端开发人员现在除了可以编写客户端代码外,还可以编写服务器端代码,而无需学习完全不同的语言。

基本上和js的操作一致,就能快速上手后端语言的开发工作。

在Node.js中,新的ECMAScript标准可以毫无问题地使用,因为你不必等待所有用户更新他们的浏览器——你可以通过更改Node.js版本来决定使用哪个ECMAScripts版本,你也可以通过运行带有标志的Node.js来启用特定的实验功能。

每个Node.js版本,都提供了对应ECMAScripts版本的支持。

示例

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

1、第一行,我们请求的Node.js 的http模块。

2、http.createServer() 方法,我们可以创建一个http服务器并返回它。

3、每当收到新请求时,都会调用请求事件,提供两个对象:一个请求(http.IncomingMessage对象)和一个响应(http.ServerResponse对象)。

4、请求对象我们可命名为req,返回对象,也就是响应对象,我们命名为res

  • res.statusCode 可设置一个自定义的状态码
  • res.setHeader 可设置http请求的头部信息
  • res.end() 可返回请求响应的信息。

5、server.listen() 方法,开始进行监听,开始默认打印console.log()里的内容。

6、在浏览器中输入IP地址和端口,我们看到如下所示内容:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MagicaCloth2安装教程

您可访问官网查看详情; MagicaSoft Unity Assets – Magica Soft 也可通过我的资源文件获得此插件的详细教程: (19条消息) UnityMagicaCloth2插件中文文档(机翻/部分)-Unity3D文档类资源-CSDN文库 MagicaCloth2是基于ECS开发的…

水质信息监测与管理系统

1.1 系统总体设计 1.1.1 系统组成 水质信息监测与管理系统由水质监测站网管理、水质监测数据管理、水质分析评价、水质监测资料整汇编、水质信息查询、水质信息发布等组成。 水质监测站网管理主要实现对各类监测站网(固定监测站网、自动监测站网、动态监测站网&a…

Party Again!转录组+LC代谢组=899/组!

转录组代谢组,是基于代谢组和转录组数据,开展表达基因(mRNA)与代谢物的相关性分析。可实现差异代谢物与时序表达的差异基因的共表达分析,构建核心调控网络机制,找出其中的关键候选基因,揭示表型…

前端001_初始化数据库管控管理系统

数据库管控管理系统采用 Vue.js ElementUI 来搭建系统的前端。 1、技术栈 技术名说明vue.js前端vuex状态管理器mockjs模拟后台apiaxios拦截器echart图标element-ui组件库vue-element-admin脚手架,原始参照的项目模版mavon-editormarkdown编辑器 2、ElementUI 简…

用DG备库做的rman备份恢复一个数据库

环境描述: 1.因为主库存储空间不足,于是将备份放在dg备库上做。 2.主库因为磁盘空间问题,数据文件有两个目录。 3.dg备库因为主库两个数据文件目录里面有两个同名数据文件,所有dg备库也有两个数据文件目录。 4.主库与备库与测…

Grafana 系列-统一展示-1-开篇

系列文章 Grafana 系列文章 Grafana 简介 Grafana 是 Grafana Labs 的第一款也是最重要的产品。它的定位是可视化, 用于监控展示 和 可观察性. 是当前最为完善、流行的云原生、公有云和企业监控可视化平台。 Dashboard anything. Observe everything 无论你的数据存储在哪…

从 PC 解锁 Android 手机的 6 种有效方法

在这个数字时代,手机已成为我们生活的重要组成部分。我们将它们用于各种用途,从跟踪我们的工作和社交日程到与亲人交流。 然而,有时我们的手机会成为令人沮丧的源头,尤其是当我们不小心将自己拒之门外时。但是您知道可以使用计算…

基于SpringBoot+Vue实现的酒店管理系统

【简介】 基于springbootvue实现的酒店管理系统,用于酒店客房业务管理与酒店内部管理。 【功能结构】 【技术架构】 后端:springbootmybatis 前端:vue element-ui 环境:mysqlmaven node 【代码结构与数据库】 【功能详述】…

LeetCode232. 用栈实现队列

232. 用栈实现队列 描述示例解题思路以及代码 描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop()…

UICollectionView 实现整页翻动(每页3个cell)

提示&#xff1a;页面架构是通过UICollectionView做的分页&#xff0c;分页点PageControl使用的是<SDCycleScrollView/TAPageControl.h> &#xff0c;布局架构使用的是Masonry 前言 为了实现UICollectionView无限翻动&#xff0c;连续滑动&#xff0c;主要是利用pagingE…

海豚1.3单节点,多集群设置

最近出差忙项目&#xff0c;一直没更新&#xff0c;现在项目结尾了。回来继续搞集群 公司因为CDH升级为CDP&#xff0c;两套环境数据和任务慢慢迁移&#xff0c;但是调度任务需要同时跑批。 而我们的海豚调度是单节点的&#xff0c;master和worker等服务都在一台节点上。 之前…

基于VBA实现成绩排序的最佳方法-解放老师的双手

作为一名老师&#xff0c;每到期末就要面对一件让人头疼的事情——成绩表统计。 首先&#xff0c;要收集每个学生的考试成绩。这需要花费大量的时间和精力&#xff0c;因为每个学生都有多门科目的成绩需要统计。 其次&#xff0c;要将每个学生的成绩录入到电子表格中。这看起来…

【今天聊聊生产力】提升研发生产力的神器推荐

1、Free Mybatis Tool、MybatisX 用于DAO层和Mapper层之间跳转 Mapper和DAO层跳转&#xff0c;可以用的插件比较多&#xff0c;比较推荐如下两款&#xff0c;功能基本一致&#xff0c;只是样式小有差别。 Free Mybatis Tool&#xff0c;样式为一个绿色箭头&#xff0c;简洁明了…

docker 部署JAVA应用OOM的排障经历——筑梦之路

故障现象&#xff1a; 使用docker部署JAVA的应用&#xff0c;tomcat作为中间件容器&#xff0c;启动应用时总是报错无法创建Java虚拟机&#xff0c;然后就是OOM 报错信息&#xff1a; 不管是从docker容器的日志还是系统日志均未发现有用的信息&#xff0c;也尝试更换过镜像tom…

C++入门3(C++新特性 using string auto)

C入门3 C新特性auto推导规则auto 作为函数的形参类型decltype基于范围for循环 typedef与usingC语言定义变量typedef 在C语言中的写法using在C11中的写法using与template的结合 string的简单使用 C新特性 auto推导规则 auto类型推导: auto定义的变量&#xff0c;可以根据初始化…

开源推荐,超级棒的云原生的Kafka管控平台,清新优雅~~

哈喽&#xff0c;大家好&#xff0c; 之前给大家介绍过很多优秀的后台管理系统&#xff0c;但是都感觉还少&#xff0c;今天再来推荐一个。 最近新接触到一个项目&#xff0c;确实把我惊艳到了&#xff0c;太适合使用了&#xff0c;极大地方便了用户和运维人员的日常使用&…

(三)Kubernetes - 手动部署(二进制方式安装)

Kubernetes - 手动部署 [ 2 ] 1 部署主节点1.1 生成kube-apiserver证书1.1.1 自签证书颁发机构(CA)1.1.2 使用自签CA签发kube-apiserver https证书 1.2 下载k8s-server1.3 解压二进制包1.4 部署kube-apiserver1.4.1 创建配置文件1.4.2 拷贝刚才生成的证书1.4.3 启用TLS bootstr…

部署PHP开源项目SuiteCRM

部署PHP开源项目SuiteCRM 前言部署PHP项目创建站点上传PHP源码安装依赖 SuiteCRM安装安装向导中文语言修改数据库密码 前言 因人力资源部想要开发一套适用于他们方便管理的系统&#xff0c;但无整体构思&#xff0c;在网络中找到了开源企业管理软件SuiteCRM&#xff0c;想要作为…

基于SSM框架疫情之下社区管理系统(spring+springmvc+mybatis+jsp+jquery+bootstrap)

一、项目简介 本项目是一套基于SSM框架疫情之下社区管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c…

Java8新特性—Lambda表达式

Java 8是Java编程语言的一个版本&#xff0c;于2014年发布。它引入了许多新的特性和改进。 Lambda表达式是Java 8中引入的一个重要的新特性&#xff0c;它提供了一种更加简洁、灵活的方式来编写函数式接口的实现&#xff0c;从而提高了代码的可读性和简洁性。 在本文中&#…