《一》Node 基础

news2024/11/23 18:55:15

Node:是一个基于 V8 引擎的 JavaScript 运行的环境。

V8 引擎可以嵌入到任何 C++ 应用程序中,无论是 Chrome 浏览器还是 Node,事实上都是嵌入了 V8 引擎来执行 JavaScript 代码的。

Node 架构:

请添加图片描述

  1. 编写的 JavaScript 代码首先经过 V8 引擎进行翻译。
  2. 然后由 Node 绑定到 libuv,由 libuv 绑定操作系统中的某个操作,去调用执行。
  3. 执行成功后,经过事件循环,将回调函数加入到任务队列中。
  4. 然后由 Node 绑定到 V8 引擎中,由 V8 引擎来执行相应的 JavaScript 代码。

Node 和浏览器架构的区别:

在 Node 中,除了使用 V8 引擎来运行 JavaScript 代码,还包含有其他的程序来进行系统层面的一些操作,例如文件系统读写、网络 IO、加密、压缩/解压文件等。

在 Chrome 浏览器中, 除了使用 V8 引擎来运行 JavaScript 代码外,还包含有解析、渲染 HTML、CSS 等的相关渲染引擎,另外还包含有支持浏览器操作的 API、浏览器的事件循环等。请添加图片描述

在 Node 中,提供给 JS 调用的 API 是用 JS 编写的,V8 引擎是用 C++ 编写的,用来调用操作系统的 libuv 是用 C 语言编写的,因此,严格来说,Node 程序是用 JS/C++/C 语言编写的。

Node 的应用场景:

  1. 目前前端开发的库,都是以 node 包的形式进行管理的。
  2. 越来越多的公司使用 Node 来进行 Web 服务器、中间件、代理服务器开发。
  3. 大量项目需要借助 Node 完成前后端渲染的同构应用。
  4. 资深前端工程师需要为项目编写脚本工具。
  5. 很多企业在使用 Electron(基于 Node 来运行)来开发桌面应用程序。

安装 Node:

  1. 在官网 https://nodejs.org/en 中,下载对应系统的 node 安装包。
  2. 双击 node 安装包进行安装,安装成功后就可以使用 Node 了。

使用 Node 运行 JavaScript 文件:

  1. 新建一个 test.js 文件,并编写一些代码。
  2. 在命令行中进入该文件所在的文件夹,输入 node test.js,即可使用 Node 来运行该 JavaScript 文件。

Node 的 REPL:

REPL 是一个简单的、交互式的编程环境。

Node 提供了一个 REPL 环境,可以在其中演练简单的代码。在命令行中输入 node 即可进入 REPL 环境,输入 .exit 即可退出 REPL 环境。
请添加图片描述

浏览器的 console 就可以看成是一个 REPL。
请添加图片描述

Node 的输出和输入:

输出:

  1. 在 JavaScript 文件中可以使用 console 打印内容,通过 Node 运行 JavaScript 文件后即可看到输出的结果。
    请添加图片描述

输入:

  1. 通过 Node 运行 JavaScript 文件时,可以在后面以空格隔开输入内容;在 JavaScript 文件中即可通过 process 内置对象的 argv 属性即可查看到输入的内容。
    请添加图片描述
    可以看到,打印 process.argv,输入的是一个数组,第一项是 Node 所在的位置,第二项是 JavaScript 文件所在的位置,后面项就是输入的内容。

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

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

相关文章

Springframework和Hibernate版本对应关系

org.springframework 3.0.x对应org.hibernate4.0.x版本 org.springframework 3.2.x对应org.hibernate4.2.x版本 org.springframework 4.0.x对应org.hibernate4.3.x版本 org.springframework 4.1.x对应org.hibernate5.0.x版本 org.springframework 4.3.x对应org.hibernate5.…

TOB企业如何构建自身的生态力

众所周知,企业服务赛道业务涉及范围非常多,其面向的客户分布广、触达过程长、需求场景复杂、功能集成和持续服务要求高等特点,就决定了To B企业无法通过单枪匹马的运营模式,来满足增长和健康运营的需求。 随着市场的竞争日益加剧…

【Docker】镜像与docker数据卷

文章目录 一、镜像1、镜像2、镜像原理之联合文件系统3、镜像原理之分层4、commit镜像 二、数据卷1、数据卷2、-v使用数据卷3、实战:MySQL 同步数据4、docker volume相关指令5、匿名和具名挂载6、数据卷之Dockerfile7、数据卷容器 一、镜像 1、镜像 镜像是一种轻量级…

k8s笔记25--k8s 跨主机网络flannel

k8s笔记25-- k8s 跨主机网络flannel 简介不同机器上网络设备区别flannel 网络常见三大后端模式UDPVXLANhost-gw 如何查看集群用哪种网络模式阿里云flannel容器网络 alloc参考文档 简介 在单机环境下,容器间可以通过 docker0 网桥来通信,但其无法实现不同…

QT QGridLayout网格布局控件

本文详细的介绍了QHBoxLayout控件的各种操作,例如:新建界面、控件布局、获取行、获取列、某行伸缩系数、某列伸缩系数、某列最小宽度、某行最小宽度、总单元格数、移除布局条目、移动布局条目、其它文章等操作。 实际开发中,一个界面上可能包…

【小程序】 键盘和表情同时存在时候,输入框上移问题

键盘和表情 效果图实现方法引入的js文件&#xff0c;文件名emoji.js&#xff0c;存放在untils路径下 效果图 实现过程&#xff0c;监听键盘高度的同时&#xff0c;判断是否获取到焦点样式上&#xff0c;swiper实现左右按页滑动效果 实现方法 <template><view class&…

IDEA常用配置及使用技巧

文章目录 下载插件JRebel and XRebelChinese Language PackMybatis XEasyCodeTranslationAuto filling Java call argumentsCodota AI Autocomplete for Java and JavaScriptAlibaba Java Coding GuidelinesEasyYapiGenerateAllSetterGit Commit TemplateGitToolBoxSQL Params …

基于YOLOv5的儿童睡眠检测

注意&#xff1a; 由于SOPHGO SE5微服务器的CPU是基于ARM架构&#xff0c;部分步骤将在 基于x86架构CPU的开发环境中完成 一、初始化开发环境(基于x86架构CPU的开发环境中完成) 二、模型转换 (基于x86架构CPU的开发环境中完成) 三、YOLOv5模型部署测试&#xff08;在SOPHGO SE5…

FT2000+ qemu kvm 64C64G 通过频繁设置CPU online 状态导致虚拟机openEuler 操作系统假死测试用例2

前文&#xff1a; https://hknaruto.blog.csdn.net/article/details/130408240 测试程序 /** tcti.cpp参考&#xff1a; https://www.cnblogs.com/organic/p/17321523.htmlg -stdc11 -lpthread trigger_cgroup_timer_inactive.cpp -o inactive_timer ./inactive_timer 100000…

linux内核网络子系统初探---概述

linux内核网络子系统初探—概述 一、网络模型 简单介绍 学习网络时&#xff0c;必定能在各种教材资料里见到以下三种网络模型&#xff1a; 三种模型间的差异&#xff1a; OSI七层模型是理论上的网络模型&#xff0c;从功能方面分成了相对独立的7个层次&#xff0c;由于太复…

如何通过 Rancher 轻松实现多云部署

“多云”通过不同的云厂商分发应用程序提高了弹性&#xff0c;能够帮助企业强化自身的竞争力。此外&#xff0c;多云还降低了被云厂商锁定的可能性&#xff0c;让企业避免过于依赖某个云厂商。 虽然多云的优势很多&#xff0c;但是管理多云 Kubernetes 的困难还是让人望而却步…

MCU自动化测量单元—峟思工程仪器仪表的智能助力

随着科技的不断发展&#xff0c;峟思工程仪器仪表在工程测量领域不断创新&#xff0c;其中MCU自动化测量单元作为一项颇具潜力的技术&#xff0c;正逐渐引起行业的广泛关注。MCU自动化测量单元作为峟思工程仪器仪表的重要组成部分&#xff0c;其应用带来了许多正面影响&#xf…

用右雅克比对旋转矩阵进行求导

考虑一个向量 a \bold{a} a对其进行旋转, 旋转用旋转矩阵 R \bold{R} R表示, 用朴素的倒数定义进行求导而不是用扰动模型, 我得到了这个过程与结果 和高博的新书结果 − R J r a ∧ -\bold{R}\bold{J}_{r}\bold{a}^{\wedge} −RJr​a∧结果不一样, 雅克比矩阵位置不同, 是不是…

神经网络结构搜索NAS

推荐课程&#xff1a;神经网络结构搜索 感谢博主ShusenWang提供的课程讲解&#xff01; 目录 1. 为什么要学习神经网络结构搜索NAS&#xff1f; 2. 什么是神经网络结构搜索NAS&#xff1f; &#xff08;1&#xff09;随机搜素Random Search 1. 为什么要学习神经网络结构搜…

位图的简单实现和使用

文章目录 1. 什么是位图2. 位图的简单实现3. 测试位图代码 1. 什么是位图 位图, 是一种非常常见的结构, 它使用每个二进制位来存放一个值的状态, 就类似于 Java 当中 HashSet 存储元素的功能. 在 Java 当中, 可以使用HashSet完成如下操作: add(T v): 添加一个元素到 HashSet…

算法:递归启蒙-汉诺塔

基本所有的讲递归的书和视频都会以汉诺塔作为开始&#xff0c;因为它足够经典 汉诺塔问题要求整个挪动的过程中都符合小压大的原则&#xff0c;就是如果同一个柱子上有超过1个的话&#xff0c;那必须下面是最大的&#xff0c;上面依次变小&#xff0c;不能出现大盘压小盘的情况…

Element Plus的Pagination 组件用法

5.2 Pagination 组件 分页组件通常与表格组件一同使用&#xff0c;在数据量很大的时候&#xff0c;通常不会在表格中一次性显示所有的数据&#xff0c;因为如果所有数据都展示在一个页面&#xff0c;数据量庞大&#xff0c;容易造成浏览器崩溃&#xff0c;就算数据可以完全展…

【CV2NLP】Chinese-Vicuna 中文小羊驼

学习一个短语&#xff01; gain proficiency in 熟练掌握 &#xff08;用我最爱的文心一言造个句子&#xff09; 最近羊驼家族百花齐放&#xff0c;赶紧学习一下 ChatBot 的背后细节。Chinese-Vicuna 中文小羊驼是基于 Vicuna 模型使用中文数据 LORA 方案来微调的一种中文对…

数值分析-牛顿-柯特斯公式的概念、推导与应用

目录 一、引言 二、牛顿-柯特斯公式的基本概念 三、牛顿-柯特斯公式的推导 四、牛顿-柯特斯公式的应用 五、牛顿-柯特斯公式的优缺点 六、总结 一、引言 数值分析是数学中的一个重要分支&#xff0c;它研究如何利用数值方法来解决实际问题。在数值分析中&#xff0c;牛顿…

Redux 学习系列(一) —— 基础概念入门篇

简介 Redux 是一个可预测的 JavaScript 应用状态管理容器&#xff0c;也可以说是一个应用数据流框架。 作用 Redux 主要是用作应用状态的管理。它抽离所有组件的状态&#xff0c;构造一个中心化的单独常量状态树&#xff08;对象&#xff09;来保存这一整个应用的状态。这棵…