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

什么是Node.js?

为什么JavaScript可以在浏览器中被执行?

  • 在浏览器中我们加载了一些待执行JS代码,这些字符串要当中一个代码去执行,是因为浏览器中有JavaScript的解析引擎,它的存在我们的代码才能被执行。

  • 不同的浏览器使用不同的javaScript解析引擎

    Chrome浏览器=> V8
    Firefox浏览器=> OdinMonkey (奥丁猴)
    Safri 浏览器=> JSCore
    IE 浏览器=> Chakra(查克拉)

    其中,chrome浏览器的V8解析引擎性能最好!

为什么JavaScript可以操作DOM和BOM?

  • 浏览器提供了很多的内置的API,DOM API、BOM API、AJAX API,我们程序员基于这些浏览器提供的内置API来编写出一些待执行的JavaScript代码,在这些javaScript代码中我们可以调用这些内置的Web API,然后我们可以把这些待执行的代码,交给我们的JavaScript解析引擎,来进行执行。

    在这里插入图片描述

    每个浏览器都内置了 DOM、BOM这样的API函数,因此,浏览器中的JavaScript 才可以调用它们。如果浏览器没有内置这些函数,那么javaScript就不能操作这些元素。

浏览器中的JavaScript运行环境

  • 运行环境是指代码正常运行所需的必要环境

    运行JavaScript代码需要有浏览器,浏览器里面必须要有javaScript解析引擎,以Chrome浏览器为例,它里面使用的是V8引擎,然后浏览器必须内置API,比如DOM、BOM、Canvas、XMLHttpRequest、Js内置对象。这样我们就可以通过JavaScript代码调用内置API,我们编写完的代码就可以通过V8引擎解析执行。

    总结:我们的js代码运行离不开,javaScript解析引擎和浏览器内置API。

    • V8引擎负责解析和执行JavaScript代码
    • 内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用。

JavaScript能否做后端开发?

  • 可以做后端开发的语言常见Java、Python、PHP。JavaScript也可以做后端,但是必须借助一个Node.js,也就是说我们不能单独使用JavaScript去做后端。
  • JavaScript单纯是一个语言,这门语言编写的代码想要去执行,就离不开一个执行环境,如果我们把JavaScript跑到浏览器中,浏览器本身就是一个运行环境,javaScript代码就可以在浏览器中做前端开发
  • 同时如果我们把写的代码运行在Node.js中,这个Node.js它也是一个运行环境,它是一个后端的运行环境,依赖于Node.js我们就可以去使用它做后端开发。

什么是Node.js?

  • Node.js是一个基于Chrome V8引擎的JavaScript后端运行环境。

  • Node.js官网地址:https://nodejs.org/zh-cn/

Node.js中的JavaScript运行环境和Chrome中运行环境的比较

  1. 环境:Node.js是一个基于V8引擎的服务器端JavaScript运行环境,而Chrome浏览器是一个客户端浏览器。Node.js提供了一些额外的功能和API,如文件系统访问、网络通信等,而浏览器则提供了与DOM相关的API。

  2. 全局对象:Node.js和浏览器中的全局对象有所不同。在Node.js中,全局对象是global,而在浏览器中,全局对象是window

  3. 模块系统:Node.js使用CommonJS模块系统,通过requiremodule.exports来导入和导出模块。而浏览器使用ES6模块系统,通过importexport来实现模块化。

  4. 文件系统访问:Node.js可以直接访问文件系统,可以读取、写入文件等操作,而浏览器由于安全性考虑,通常无法直接访问本地文件系统。

  5. 网络通信:Node.js可以进行网络通信,可以创建服务器、客户端等,而浏览器也可以进行网络通信,但受到跨域限制。

  6. 内置API:Node.js是一个基于V8引擎的服务器端JavaScript运行环境,它提供了一系列用于处理文件系统、网络通信、操作系统等功能的内置API,如fs模块、http模块等。这些API主要用于服务器端开发,与操作系统进行交互。而Chrome浏览器内置的API主要是Web API,用于操作DOM、处理事件、进行网络请求等,主要用于前端开发。例如,浏览器提供了document对象、XMLHttpRequest对象等用于操作网页内容和进行网络通信。

    在这里插入图片描述

    注意:

    • 浏览器是JavaScript的前端运行环境。
    • Node.js是JavaScript的后端运行环境
    • Node.js中无法调用DOM和BOM等浏览器内置API

Node.js可以做什么?

Node,js 作为一个JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于 Node.js 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,学会了 Node.js,能干以下工作:

  1. 基于Express 框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用
  2. 基于Electron 框架(https://electronis.org/),可以构建跨平台的桌面应用
  3. 基于restify框架(http://restify.com/),可以快速构建API 接口项目
  4. 读写和操作数据库、创建实用的命令行工具辅助前端开发…

补充:

‌Node.js的JavaScript运行环境‌,它允许开发者在服务器端运行JavaScript代码。Node.js采用事件驱动和非阻塞I/O模型,这使得它能够处理大量的并发连接,非常适合构建高性能的网络应用。‌

Node.js的核心机制:Node.js通过事件循环来处理并发操作,避免了额外的线程开销,从而提高了性能。它利用V8引擎执行JavaScript代码,这使得JavaScript可以在服务器端高效运行。

Node.js的应用场景和优势:Node.js非常适合构建‌实时应用、‌API服务器、‌等数据密集型应用。它的非阻塞I/O模型使得它能够处理成千上万的并发连接,非常适合微服务和云计算环境。

相关文章:

什么是Node.js?

为什么JavaScript可以在浏览器中被执行? 在浏览器中我们加载了一些待执行JS代码,这些字符串要当中一个代码去执行,是因为浏览器中有JavaScript的解析引擎,它的存在我们的代码才能被执行。 不同的浏览器使用不同的javaScript解析引…...

即插即用篇 | DenseNet卷土重来! YOLOv8 引入全新密集连接卷积网络 | ECCV 2024

本改进已同步到YOLO-Magic框架! 本文重新审视了密集连接卷积网络(DenseNets),并揭示了其在主流的ResNet风格架构中被低估的有效性。我们认为,由于未触及的训练方法和传统设计元素没有完全展现其能力,DenseNets的潜力被忽视了。我们的初步研究表明,通过连接实现的密集连接…...

智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案

随着科技的飞速发展,视频监控技术在社会安全、企业管理及智慧城市建设等领域中扮演着越来越重要的角色。特别是在电力行业中,电站作为能源供应的关键设施,其安全性和稳定性至关重要。传统的人工监控方式已难以满足现代电站复杂多变的运行需求…...

【BUG】静读天下|静读天下无法设置段间距解决方案

【BUG】静读天下|静读天下无法设置段间距解决方案 文章目录 【BUG】静读天下|静读天下无法设置段间距解决方案前言解决办法 凑质量分静读天下的特点与优势功能布局与使用技巧个人使用心得结语 前言 03-23 求助|关于排版的问题【静读天下吧】_…...

希捷电脑硬盘好恢复数据吗?探讨可能性、方法以及注意事项

在数字化时代,数据已成为我们生活和工作中不可或缺的一部分。希捷电脑硬盘作为数据存储的重要设备,承载着大量的个人文件、工作资料以及珍贵回忆。然而,面对硬盘故障或误操作导致的数据丢失,许多用户不禁要问:希捷电脑…...

java通过webhook给飞书发送群消息

现在使用飞书的人越来越多了,飞书有一个最大的好处,可以使用webhook简便的发送群消息。而在工作中,也经常会因为一些运维方面的工作,需要给飞书发送群消息,来实时提醒相关负责人,及时处理工作。 一、先看一下效果吧&a…...

每日一题——第一百零九题

题目&#xff1a;进制转换合集。任意r进制与十进制之间的转换 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> long stringToDecimal(const char* str, int base); void convertToBaseR(int num, int r);int main() {ch…...

街头摊贩检测系统源码分享

街头摊贩检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

服务器数据恢复—SAN环境下LUN映射出错导致文件系统一致性出错的数据恢复案例

服务器数据恢复环境&#xff1a; SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列&#xff0c;划分若干LUN&#xff0c;MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障&#xff1a; 用户新增了一台服务器&#xff0c;将存储中的某个LUN映射到新增加的这台服…...

深度学习:自然语言处理的基本原理

概念&#xff1a; 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是人工智能和语言学领域的一个分支&#xff0c;它致力于研究如何让计算机能够理解、解释和生成人类语言&#xff0c;以及如何实现人与计算机之间的有效通信。自然语言处理…...

Win10 Chrome浏览器被强制绑定主页的解决办法

Win10 Chrome浏览器被强制绑定主页的解决办法 背景 刚刚重装的系统默认是某杀毒软件&#xff0c;使用浏览器时发现浏览器主页老是hao123&#xff0c;还改不了。于是卸载了此杀毒软件&#xff0c;换了别的。发现还是解决不了浏览器主页被绑定且改不了的问题 体现 chrome://se…...

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第四篇-着色器投影-接收阴影部分】

上一章中实现了体积渲染的光照与自阴影&#xff0c;那我们这篇来实现投影 回顾 勘误 在开始本篇内容之前&#xff0c;我已经对上一章中的内容的错误进行了修改。为了确保不会错过这些更正&#xff0c;同时也避免大家重新阅读一遍&#xff0c;我将在这里为大家演示一下修改的…...

Shell脚本基础——实训项目任务

项目一 项目实训 (初始Shell脚本) 项目一 项目实训 (初始Shell脚本)项目实施任务一 输入输出重定向任务二 数据输入输出操作任务三 Shell变量操作任务四 算术运算符操作任务五 设置环境变量 【实训任务】 本实训的主要任务是通过编写简单的shell脚本&#xff0c;完成使用数据…...

Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法

1&#xff0c;下载mat后安装&#xff0c;打开时提示 jdk版本低&#xff0c;需要升级到jdk17及以上版本&#xff0c;无奈就下载了jdk17&#xff0c;结果安装后提示没有jre环境&#xff0c;然后手动生成jre目录&#xff0c;命令如下&#xff1a; 进入jdk17目录&#xff1a;执行&…...

【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器

文章目录 C list 容器详解&#xff1a;从入门到精通前言第一章&#xff1a;C list 容器简介1.1 C STL 容器概述1.2 list 的特点 第二章&#xff1a;list 的构造方法2.1 常见构造函数2.1.1 示例&#xff1a;不同构造方法2.1.2 相关文档 第三章&#xff1a;list 迭代器的使用3.1 …...

植物大战僵尸杂交版V2.5.1下载(最新版)

2.5.1版本更新公告&#xff1a; 在最新的2.5.1版本中&#xff0c;游戏对“两面夹击”关卡进行了多项重要调整。出怪倍率和种类均有所降低&#xff0c;部分关卡的初始阳光量也得到了调整&#xff0c;以增强玩家的策略性。同时&#xff0c;玩家可以在这些关卡中使用投手类植物&a…...

基于nodejs+vue的游戏陪玩系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

SVN文件不显示修改状态图标

今天安装试用SVN时发现文件不显示修改状态 以下为解决方法&#xff1a; 1&#xff0c;在有.svn的文件夹中右键--tortoiseSvn--setting 2&#xff0c;选中icon Overlays&#xff0c;右侧的status cache 选shell 3&#xff0c;点击icon set 如下图所示 4&#xff0c;修改icon…...

GB28181语音对讲协议详解

GB28181-2016语音对讲流程如下图1所示&#xff1a; 图1.语音对讲流程。 其中, 信令 1 、2 、 3 、 4 为语音广播通知、 语音广播应答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 为 S I P 服务器接收到客户端的呼叫请求通过 B 2 B UA 代理方式建立语音流接收者与媒…...

JavaScript 数据可视化:前端开发的核心工具

随着互联网和大数据的快速发展&#xff0c;数据呈爆炸式增长&#xff0c;如何有效地展示和理解数据成为了一项关键技能。JavaScript 作为前端开发的主要语言&#xff0c;不仅在构建网页方面无可替代&#xff0c;也在数据可视化领域发挥了重要作用。从简单的图表到复杂的交互式展…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...