《一》Node 基础

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 文件所在的位置,后面项就是输入的内容。

Node 中的全局对象:

Node 提供了很多全局对象,可以直接使用。一些常见的全局对象有:

  1. global:类似于浏览器中的 window,其他的全局对象都有被添加到 global 对象上。
  2. process:当前的 Node 进程信息。
  3. console:提供了简单的调试控制台。
  4. 定时器函数:setTimeout()setInterval()setImmediate()

特殊的全局对象:

有一些全局对象很特殊,它们实际上是模块中的变量,只不过每个模块都有,因此看起来像是全局变量。这些全局对象在命令行交互中是不可以使用的。

  1. __dirname:获取当前文件所在的路径。
    请添加图片描述

  2. __filename:获取当前文件所在的路径及文件名。

  3. exports。

  4. module。

  5. require()

Node 中的内置模块:

path:

path 模块用于对文件和路径进行处理。

例如:在 MacOS、Linux 和 Windows 上的路径是不一样的。MacOS、Linux 操作系统上使用 / 作为路径的分隔符,Windows 操作系统上使用 \ 或者 \\ 作为路径的分隔符,当然目前也支持 /。那么如果在 Windows 上使用 \ 作为分隔符开发了一个应用程序,部署到 Linux 上的话,路径就会出现问题。所以为了屏蔽不同操作系统之间路径的差异,可以使用 path 模块。

方法:
  1. path.extname(filepath):从文件路径中获取文件的后缀名。

  2. path.basename(filepath):从文件路径中获取完整的文件名。

  3. path.dirname(filepath):从文件路径中获取文件所在的目录。 在这里插入图片描述

  4. path.join(filepath1, filepath2, ...):拼接路径。
    在这里插入图片描述

  5. path.join(filepath1, filepath2, ...):拼接路径,最终返回的一定是绝对路径。如果没有传递路径参数,那么会返回当前工作目录的绝对路径。

    最终返回的路径会被规范化:删除尾部斜杠、零长度的路径会被忽略。

    拼接路径的原则:

    • 传入的路径参数会被从右往左依次处理,直到构造成一个绝对路径,就停止并返回。
    • 如果处理完所有的路径参数之后,还没有生成绝对路径,那么为其拼接当前工作目录的绝对路径。
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值