node.js和浏览器之间的区别

node.js是什么

Node.js是一种基于Chrome V8引擎的JavaScript运行环境,可以在服务器端运行JavaScript代码

Node.js 在浏览器之外运行 V8 JavaScript 引擎。 这使得 Node.js 非常高效。

浏览器如何运行js代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

nodejs运行环境

在这里插入图片描述

在浏览器中,大部分时间你所做的是与 DOM 或其他 Web 平台 API(如 Cookie)进行交互。

当然,那些在 Node.js 中不存在。 你没有浏览器提供的 documentwindow 和所有其他对象。

const http = require('http');const hostname = '127.0.0.1';
const port = 3000;const server = http.createServer((req, res) => {//http 的 createServer() 方法创建一个新的 HTTP 服务器并返回它。res.statusCode = 200;res.setHeader('Content-Type', 'text/plain');res.end('Hello World\n');//关闭响应
});server.listen(port, hostname, () => {//服务器设置为监听指定的端口和主机名。 当服务器就绪时,回调函数被调用,在这种情况下通知我们服务器正在运行。console.log(`Server isnow running at http://${hostname}:${port}/`);console.log(11);// console.log(window);//报错 ReferenceError: window is not definedconsole.log(document);//ReferenceError: document is not defined});

console.log(window);//报错 ReferenceError: window is not defined 说明nodejs环境中无window

console.log(document);//报错 ReferenceError: document is not defined 说明nodejs环境中无document

在浏览器中,我们没有 Node.js 通过其模块提供的所有优秀 API,例如文件系统访问功能。

另一个很大的区别是在 Node.js 中你可以控制环境。 除非你正在构建一个任何人都可以在任何地方部署的开源应用,否则你知道你将在哪个版本的 Node.js 上运行该应用。 与浏览器环境相比,你无法自由选择访问者使用的浏览器,这非常方便。

另一个区别是 Node.js 同时支持 CommonJS 和 ES 模块系统(自 Node.js v12 起),而在浏览器中我们开始看到正在实现的 ES 模块标准。

实际上,这意味着你可以在 Node.js 中同时使用 require()import,而在浏览器中只能使用 import

V8 是为 Google Chrome 提供支持的 JavaScript 引擎的名称。 它是获取我们的 JavaScript 并在使用 Chrome 浏览时执行它的东西。 V8 提供了 JavaScript 执行的运行时环境。 DOM 和其他 Web 平台 API 由浏览器提供。

支持 Node.js 的引擎 V8

nodejs可以做什么

express、electron、restify框架

  • 基于 Express 框架 (opens new window),可以快速构建 Web 应用
  • 基于 Electron 框架 (opens new window),可以构建跨平台的桌面应用
  • 基于 restify 框架 (opens new window),可以快速构建 API 接口项目
  • 读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

学习路径

js基础+nodejs内置api模块(fs、path、http)+第三方api模块(express、mysql等)

参考https://dev.nodejs.cn/learn/differences-between-nodejs-and-the-browser/

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SLAM算法与工程实践——SLAM基本库的安装与使用(3):Pangolin库

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址: SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

2021年第十届数学建模国际赛小美赛A题气道阻力的评估解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 A题 气道阻力的评估 原题再现: 气道阻力的定义是通过肺气道产生单位气流所需的经肺压力的变化。更简单地说,它是嘴和肺泡之间的压力差,除以气流。影响气道阻力的因素是多方面的,我们需要探讨这…

Java简易版:UDP协议实现群聊

要先 运行服务端&#xff0c;在运行客户端&#xff0c;否则会报错。 服务端&#xff1a; package 二十一章;import java.io.*; import java.net.*; import java.util.ArrayList; public class T{public static ServerSocket server_socket;public static ArrayList<Socket…

领域驱动架构(DDD)建模

一、背景 常见的软件开发方式是拿到产品需求后&#xff0c;直接考虑数据库中表应该如何设计&#xff0c;这种方式已经将设计与业务需求脱节&#xff0c;而更多的是直接考虑应该如何实现了&#xff0c;这有点本末倒置。而DDD是从领域(问题域)为出发点进行的设计方法。 领域驱动…

记账中心二开

系统预设了 这几种 FSubSystem 为子系统 T_VC_SubSystem 卡片显示的表 字段 FNeedRalteAccount 设置为1的话 &#xff0c;需要与总账连用系统将去查找 系统状态控制表。 如果系统状态 没有配置这个子系统 将无法显示数据 select sysStaCtr.fid from T_BD_SystemStatusCt…

统信UOS_麒麟KYLINOS上跨架构下载离线软件包

原文链接&#xff1a;统信UOS/麒麟KYLINOS上跨架构下载离线软件包 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在统信UOS/麒麟KYLINOS上跨架构下载离线软件包的实用教程。在我们的日常工作中&#xff0c;可能会遇到这样的情况&#xff1a;需要为不同架构的设备下…

STM32 cubeMX 呼吸灯实验

文章代码使用 HAL 库。 文章目录 一、1.PWM原理二、LED 原理图三、使用cubemx 配置 led四、PWM 相关函数五、PWM占空比占空比计算六、PWM 呼吸灯重要代码总结 呼吸灯 一、1.PWM原理 PWM全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种常…

【软考】信息系统项目管理师论文方向猜想

报喜不报忧&#xff0c;每天都在为鸡零狗碎推诿扯皮&#xff0c;属实是有辱师门。 通过软考&#xff0c;目前算是真正有意义的事情。 虽然都说高项的论文是个玄学&#xff0c;但是道听途说了一些通关感想还是蛮有启发的。 文件要求 参考了一份广西省高级工程师评审的文件&am…

Linux 环境变量 与 命令行参数

什么是环境变量 从结构上来看&#xff0c;环境变量就是操作系统维护的一组&#xff1a;key-value 的键值对。 不知道你是否有一个疑问&#xff1a;为什么我们写代码编译链接 形成的可执行程序要运行起来需要带路径呢&#xff1f;Linux 内置的命令也是可执行程序&#xff0c;为…

用keepalived做mysql高可用

两台机器(centos7系统)安装mysql [rootmysql-keep-master ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# yum -y install yu…

【沐风老师】3dMax椅子建模教程

3dMax椅子建模详解 1.将系统单位设置为&#xff1a;毫米。在前视图创建一个矩形&#xff0c;并将四个角倒圆角。 2.开启二维图形可渲染功能&#xff0c;设置线条粗细。参数如图&#xff1a; 3.应用“FFD 2x2x2”修改器&#xff0c;在前视图中&#xff0c;选中右下角所有控制点&…

IntelliJ IDEA开启git版本控制的简单教程

这篇文章想要分享一下怎么在IntelliJ IDEA开启版本控制&#xff0c;博主使用的是gitee&#xff0c;首先需要安装git&#xff0c;关于git的安装这里就不介绍了&#xff0c;很简单。 目录 创建git仓库 创建项目 开启版本控制 拉取项目 创建git仓库 首先&#xff0c;需要登录…