[-Node] Node.js 基础知识

简介: [-Node] Node.js 基础知识

1 Node.js是什么

官方对Node.js的定义:

Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境


Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine


也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎:


V8可以嵌入到任何C++应用程序中,事实上都是嵌入了V8引擎来执行JavaScript代码


在谷歌浏览器中,需要 解析 渲染HTML CSS等相关渲染引擎,另外还需要提供支持浏览器操作的API 浏览器自己的事件循环等


另外在Node.js中我们也需要进行一些额外的操作 如 文件系统读/写 网络I/O 加密 压缩解压文件等操作.

浏览器和Node.js架构区别

a9cdfa81054445b6b99937325e8fd88d.png

Node.js架构

1cf772dcb49847bdbaa07aafa561739c.png

2 Node.js的应用场景

对于高级前端工程师来说,Node.js是必不可少的技能


应用一:目前 前端开发的库都是以node包的形式进行管理的;


应用二:npm yarn pnpm 工具成为前端开发使用最多的工具


应用三:越来越多的公司 使用Node.js作为web服务器开发 中间件 代理服务器


应用四:大量项目需要借助Node.js完成前后端渲染的同框应用


应用五:资深前端工程师需要为项目编写脚本工具(前端工程师写脚本经常会使用JavaScript而不是python或shell)


应用六:很多企业在使用Electron来开发桌面应用程序

3 Node的安装和管理

Node的安装

Node.js是在2009年诞生


LTS版:(长期支持)相对稳定一些,推荐线上环境使用该版本


Current版:最新Node版本,包含很多新特性


Node的版本工具


想要电脑存有多个版本的Node可以用另外一个工具来管理版本. n(TJ写的)/nvm (不支持window)


Window怎么办?


针对nvm 在github上有提供对应的window版本


通过nvm install latest安装最新的node版本


通过nvm list 展示目前安装的所有版本


通过nvm use 切换版本

4 Javascript代码执行

JavaScript
console.log('aaa');
console.log('bbb');
console.log('ccc');
操作=> 当前目录下 使用 node 文件名

Node输入和输出

JavaScript
// 1 输出
console.log("Hello World")
const num1 = 100
const num2 = 200
console.log(num1+num2);
// 2 给程序输入内容
console.log(process.argv)
// 在控制台打印 node .\文件名 num1=20 num2=40

Node程序传递参数

正常情况下执行一个node程序,直接跟上我们对应的文件即可: node index.js


但是在某些情况下执行node程序的过程中,我们希望能给node传递一些参数 node index.js env=development coderwhy


如果我们这样来使用程序 ,我们就需要在程序中获取到传递的参数


获取参数其实可以在process的内置对象中的


如果直接打印这个内置对象 里面包含了特别的信息 => 比如 版本 操作系统 等大家可以自行查看


现在我们先找到其中的argv属性:


可以发现他是一个数组,里面包含了我们需要的参数

5 Node的输入和输出

Node的输出

console.log => 最常用的输入内容的方式: console.log

console.clear => 清空控制台 console.clear

console.trace => 打印函数的调用栈

6 Node的全局对象

常见的全局对象

a4944b71b95b495d85b42aeb4963c2f2.png

Node中给我们提供了一些全局对象 方便进行操作.


process对象:process提供了Node进程中相关的信息==> Node的运行环境 参数信息等


定时器函数:在Node中使用定时器有好几种方式:


setTimeout(callback,delay[,...args]):callback在delay毫秒后执行


setInterval(callback,delay[,...args]):callback每delay毫秒重复执行一次


setImmediate(callback[,...args]):callback I./O事件后的回调的"立即执行"


process.nextTick(callback[,...args]):添加到下一次tick队列中

特殊的全局对象

为什么称为特殊的全局对象?


这些全局对象实际上是 模块中的变量 只是 每个模块都有,看来像是全局变量;


在命令行交互中是不可以使用的; 包括:__dirname   __filename exports module require()


__dirname => 获取当前文件所在的路径:


__filename => 获取当前文件所在的路径和文件名称

global对象

我们之前讲过:在新的标准中还有一个globalThis 也是指向全局对象的;类似于浏览器中window


面试题:global和window的区别


在浏览器中 全局变量都是在window上的,如 document setInterval setTimeout等等


在Node中也有一个global属性 并且看起来它里面有很多其他对象


但是在浏览器中执行Javascript代码,如果我们在顶级范围内通过var定义的一个属性 默认会被添加到window对象上,但是在Node中 通过var定义一个变量 他只会在当前模块中的变量 不会放到全局中

相关文章
|
21天前
|
JavaScript 前端开发 持续交付
【专栏】Vue.js和Node.js如何结合构建现代Web应用
【4月更文挑战第27天】本文探讨了Vue.js和Node.js如何结合构建现代Web应用。Vue.js作为轻量级前端框架,以其简洁易懂、组件化开发、双向数据绑定和虚拟DOM等特点受到青睐;而Node.js是高性能后端平台,具备事件驱动、非阻塞I/O、丰富生态系统和跨平台优势。两者结合实现前后端分离,高效通信,并支持热更新、持续集成、跨平台和多端适配,为开发高性能、易维护的Web应用提供强有力的支持。
|
21天前
|
存储 JavaScript 前端开发
❤Nodejs 第十四章(node中间件multer的认识安装使用)
【4月更文挑战第14天】Multer是Node.js用于处理multipart/form-data的中间件,专注于文件上传。。基本用法包括设置存储引擎,如磁盘存储(DiskStorage)或内存存储(MemoryStorage),并指定处理单个或多个文件的方法。例如,`multer.single('file')`处理单个文件上传。存储引擎DiskStorage适合永久保存,而MemoryStorage适合临时处理。可以通过`limits`选项限制文件大小,实现不同类型的文件有不同的大小限制。
59 0
|
21天前
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
|
21天前
|
JavaScript 前端开发 开发工具
【JavaScript 技术专栏】Node.js 基础与实战
【4月更文挑战第30天】本文介绍了Node.js的基础及应用,包括事件驱动的非阻塞I/O、单线程模型和模块系统。内容涵盖Node.js的安装配置、核心模块(如http、fs、path)及实战应用,如Web服务器、文件操作和实时通信。文章还讨论了Node.js的优劣势、与其他技术的结合,并通过案例分析展示项目实施流程。总结来说,Node.js是高效后端开发工具,适合构建高并发应用,其广阔的应用前景值得开发者探索。
|
21天前
|
JavaScript API 开发者
深入了解Node.js的文件系统:Node.js文件系统API的使用与探索
【4月更文挑战第30天】本文深入探讨了Node.js的文件系统API,介绍了如何引入`fs`模块进行文件操作。内容包括异步读取和写入文件、删除文件、创建目录以及使用文件流进行高效操作。此外,还提到了文件系统的监视功能,帮助开发者全面掌握在Node.js中处理文件和目录的方法。
|
21天前
|
Web App开发 JavaScript 前端开发
js开发:请解释什么是Node.js,以及它的应用场景。
Node.js是基于V8引擎的JavaScript运行时,用于服务器端编程。以其事件驱动、非阻塞I/O模型著称,适用于高并发和实时应用。常见用途包括:构建Web服务器、实时应用(如聊天)、API服务、微服务、工具和命令行应用,以及搭配Electron开发桌面软件。
22 1
|
21天前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第二章(Node连接本地数据库)
【4月更文挑战第2天】本文介绍了如何使用Node.js连接本地MySQL数据库。首先,提到了在MySQL官网下载安装数据库和使用Navicat for MySQL进行数据库管理。接着,通过`yarn add mysql`在项目中安装数据库依赖。然后,创建`app.js`文件,设置数据库连接参数,并建立连接进行查询操作。遇到导入模块的错误后,修改导入方式为CommonJS语法。
44 1
|
21天前
|
小程序 开发工具 开发者
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
60 1
|
21天前
Module build failed (from ./node_modules/eslint-loader/index.js)
Module build failed (from ./node_modules/eslint-loader/index.js)
131 0
Module build failed (from ./node_modules/eslint-loader/index.js)
|
21天前
|
Web App开发 JavaScript 前端开发
Windows 10上安装Node.js的初学者指南
Node.js是是一个强大的JavaScript运行时环境,建立在Chrome的V8 JavaScript引擎上,让你能够在服务器端运行JavaScript。 通过本教程,你将学会如何设置Node.js和npm(节点包管理器等现代Web开发的必备工具。无论你是希望构建Web应用程序、创建服务器端脚本,还是涉足全栈开发,安装Node.js都是你的第一步。那么,让我们开始吧!