当前位置: 首页 > news >正文

Node.Js是什么?

最近用到了Node.js,自己不知道是什么,所以就简单的了解了一下。

1. Js和Node.js的区别

js:一种前端语言,运行在浏览器上的,是基于浏览器的V8引擎来运行的。

Node.js:可以理解成一个运行环境,其运行在后端也就是服务端的,js如果想要运行在后端,就必须要能够与网络通信、与数据库交互,其所依赖的环境就是Node.js

个人理解(仅仅是入门级):用过python的同学可以想象成,Node.js就是一个Anaconda,你可以在里面配置很多要用JavaScript开发服务端依赖的环境和库,不过相较于Anaconda其具备服务器的性质。相较于容器来说更加合理,更好理解,其存放V8引擎,是JavaScript语言能够运行的基础,如果想要与数据库交互,与网络交互,就需要你自己下载相应的包。

2. Node.js的特点

核心特点:
  • 非阻塞 I/O 模型:处理请求时不等待操作(如读写文件、数据库查询)完成,而是继续处理其他任务,大幅提升高并发场景下的性能(适合 API 服务、实时应用等)。
  • 事件驱动:通过 “事件循环” 机制处理异步操作,所有 I/O 操作几乎都是异步的。
  • 单线程:主线程单一,但通过底层线程池处理异步任务,避免多线程切换的开销(注意:不适合 CPU 密集型任务,如复杂计算)。

3. 开发使用

最重要的是模块化的,内置了很多模块,也可以结合npm安装依赖包。

3.1 NVM(Node Version Manager

可以通过NVM来进行版本管理,更加方便便捷

3.1.1 NVM的安装

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

3.1.2 配置环境变量

source ~/.bashrc

3.1.3 验证

nvm --version

需要提醒一点:linux下需要注意自己是在root用户下还是在普通用户下,建议普通用户,然后激活普通用户下的环境变量。

Windows用户:只需要下载一个windows版本的Nvm即可,会自动添加环境变量

3.2 安装node.js

安装稳定版

nvm install --lts  //安装长期稳定版,也可以安装需要的版本

切换版本

nvm use --lts  //切换到自己需要的版本

查看nodejs的版本和安装依赖包的工具nmp

node -v      # 应输出类似 v18.16.0
npm -v       # 应输出类似 9.5.1

3.3  安装其他依赖包---Mpegts.js为例子

mkdir mpegts-demo && cd mpegts-demo
npm init -y   # 快速初始化 package.json

下载mpegts.js

npm install mpegts.js

创建一个运行文件

const mpegts = require('mpegts.js');// 示例:创建一个 MPEG-TS 解析器
const parser = mpegts.createParser();// 监听解析事件
parser.on('data', (data) => {console.log('解析数据:', data);
});// 模拟输入 MPEG-TS 流数据(实际项目中通常来自网络或文件)
// const streamData = ... // 获取 MPEG-TS 流数据
// parser.push(streamData);

运行

node index.js

3.3 其他技巧

下载慢:添加镜像

npm config set registry https://registry.npmmirror.com

windows版本:直接创建index.html,引入mpegts.js,然后直接点击index.html就可以运行了,十分方便

linux版本:尽量要启动http-server,然后运行

npx http-server .

4. 后话

NodeJs的底层基于C++写的

http://www.dtcms.com/a/270632.html

相关文章:

  • AI+智慧园区 | 事件处置自动化——大模型重构园区治理逻辑
  • 【图像处理基石】如何检测到画面中的ppt并对其进行增强?
  • 洛谷 P1104 生日---排序
  • Android Studio 2024,小白入门喂饭级教程
  • 滑动窗口的初步了解
  • 记录一下:成功部署k8s集群(部分)
  • 【音视频】TS协议介绍
  • 搭建商城系统
  • 【Java】【力扣】3.无重复字符的最长字串
  • Flutter基础(前端教程⑧-数据模型)
  • Elasticsearch RESTful API入门:基础搜索与查询DSL
  • C#项目 在Vue/React前端项目中 使用使用wkeWebBrowser引用并且内部使用iframe网页外链 页面部分白屏
  • 数据管理新范式:基于Docker的私有云存储系统构建指南
  • 十一、K8s细粒度权限管理RBAC
  • 异步进阶:C#的Task.WhenAll——如何开启多个异步任务
  • ReactNative【实战系列教程】我的小红书 6 -- 购物(含商品搜索、商品分类、商品列表)
  • 编写产品需求文档:黄历日历小程序
  • [Leetcode] 预处理 | 多叉树bfs | 格雷编码 | static_cast | 矩阵对角线
  • React面试高频考点解析
  • LeetCode Hot 100 搜索二维矩阵 II
  • langchain从入门到精通(四十一)——基于ReACT架构的Agent智能体设计与实现
  • [附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统
  • RedisCommandExecutionException: ERR unknown command ‘LPOS‘
  • 树莓派5-系统 Debian 12 开启VNC远程访问踩坑记录
  • vue3面试题(个人笔记)
  • uniapp AndroidiOS 定位权限检查
  • ragflow_多模态文档解析与正文提取策略
  • 《设计模式之禅》笔记摘录 - 5.代理模式
  • Flutter基础(前端教程⑨-图片)
  • Robot之眼CMOS传感器静电防护指南