node.js笔记
- 首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C++ 程序)
- 其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境)
- 区别:都支持 ECMAScript 标准语法,Node.js 有独立的 API
-
1、下载 node.js
- 下载网址:Node.js (nodejs.org)
- 安装过程:直接点击默认下一步即可。
- 注释事项: 安装在非中文路径下,无需勾选自动安装其他配套软件。
- 成功验证: 打开 cmd 终端,输入 node -v 命令查看版本号,如果有显示,则代表安装成功。
-
2、使用 node.js
- 如果在浏览器里面打开加载 js 文件,可以在控制台里面打开该文件,其实就是在 node环境下编译
- 如果用 node.js 加载,需要在终端里面 执行 命令【node 文件名】
- 注意:Node.js 环境中没有 BOM 和 DOM
- tips1:vscode终端可以使用快捷键 【ctrl + ` (` 是esc下面的那个键)】,
- tips2:输入node 后,后面的文件名,可以输入一部分,按 tab 键补全【如下面的 01.js, 输入 01 或者 0 ,按 tab 补全就行,但是只有当前目录可以,如下面的 04 文件夹下面的文件,需要补全文件夹名称,才能补全旗下的文件】
-
3、fs 模块 - 读写文件
- 模块:类似插件,封装了方法/属性
- fs 模块:封装了与本机文件系统进行交互的,方法/属性
- 语法:
- 加载 fs 模块对象
- 写入文件内容
- 读取文件内容
// 1. 加载 fs 模块对象
const fs = require('fs')
// 2. 写入文件内容
fs.writeFile('./test.txt', '有该文件就直接写入,没有创建写入', (err) => {if (err) console.log(err)else console.log('写入成功')
})
// 3. 读取文件内容
fs.readFile('./test.txt', (err, data) => {if (err) console.log(err)// data 是 buffer 16 进制数据流对象// .toString() 转换成字符串else console.log(data.toString())
})
-
4、path 模块 - 路径处理
Node.js 代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件:
- 也就是在下图中,读取文件 test.txt 不是从 index.js ,然后 ../ 开始寻找
- 而是从 终端路径开始寻找,也就是说 test.txt 从 03-code 文件夹 ,然后 ../ 开始寻找
1、建议:在 Node.js 代码中,使用 绝对路径
2、补充:__dirname 内置变量(获取当前模块目录-绝对路径)
windows: D:\xx\xxxx\03
mac: /Users/xxx/03
3、注意:path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起,它会根据你的系统,拼接好路径
4、语法:
1)加载 path 模块
2)使用 path.join 方法,拼接路径
const fs = require('fs')
// 1. 引入 path 模块对象
const path = require('path')
// 2. 调用 path.join() 配合 __dirname 组成目标文件的绝对路径
console.log(__dirname)fs.readFile(path.join(__dirname, '../test.txt'), (err, data) => {if (err) console.log(err)else console.log(data,data.toString())
})
-
5、http 模块-创建 Web 服务
1、需求:创建 Web 服务并响应内容给浏览器
2、步骤:
1)加载 http 模块,创建 Web 服务对象
2)监听 request 请求事件,设置响应头和响应体
3)配置端口号并启动 Web 服务
3、浏览器请求 http://localhost:3000 测试
(localhost:固定代表本机的域名)
// 1.1 加载 http 模块,创建 Web 服务对象
const http = require('http')
const server = http.createServer()
// 1.2 通过 on 监听 request 事件,设置响应头和响应体
server.on('request', (req, res) => {// 设置响应头-内容类型-普通文本以及中文编码格式res.setHeader('Content-Type', 'text/plain;charset=utf-8')// 设置响应体内容,结束本次请求与响应res.end('欢迎使用 Node.js 和 http 模块创建的 Web 服务')
})
// 1.3 配置端口号并启动 Web 服务
server.listen(3000, () => {console.log('Web 服务启动成功了')
})终端:ctrl + c 停止服务
-
6、node.js 模块化
1、使用:
1)导出:module.exports = {}
2)导入:require('模块名或路径')
2、模块名或路径:
1)内置模块:直接写名字(例如:fs,path,http)
2)自定义模块:写模块文件路径(例如:xxx.js)
3、node.js 使用的是 CommonJS 标准,CommonJS 模块是为 Nodejs 打包 JavaScript 代码的原始方式,Nodejs 还支持浏览器和其他 JavaScript 运行时使用的 ECMAScript 模块标准,在 Nodejs 中每个文件都被视为一个单独的模块
-
7、ECMAScript 标准 - 默认导出和导入
1、默认标准使用:
1)导出:export default {}
2)导入:import 变量名 from '模块名或路径'
2、注意:Node.js 默认支持 CommonJS 标准语法
3、如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建 package.json 文件,并设置 { "type" : "module" }
-
8、ECMAScript 标准 - 命名导出和导入
命名标准使用:
1)导出:export 修饰定义语句
2)导入:import { 同名变量 } from '模块名或路径‘
如何选择:
1)按需加载,使用命名导出和导入
2)全部加载,使用默认导出和导入
-
9、包的概念
1、什么是包?
将模块,代码,其他资料聚合成的文件夹
2、包分为哪 2 类呢?
项目包:编写项目代码的文件夹
软件包:封装工具和方法供开发者使用
3、package.json 文件的作用?
记录软件包的名字,作者,入口文件等信息
4、导入一个包文件夹的时候,导入的是哪个文件?
默认 index.js 文件,或者 main 属性指定的文件
-
10、npm - 软件包管理器
- npm 是 Node.js 标准的软件包管理器
- 在 2017 年 1 月时,npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。
- 它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端JavaScript 中使用的工具。
- 下载的包会存放在当前项目下的 node_modules 中,并记录在 package.json 中
1、初始化清单文件 : npm init -y (得到 package.json 文件,有则略过此命令)
2、下载软件包 : npm i 软件包名称
3、使用软件包
当项目中只有 package.json 没有 node_modules 怎么办?
当前项目下,没有 node_modules就不能正常运行,我们需执行 npm i 安装所有依赖软件包
-
11、npm - 全局软件包 nodemon
1、软件包区别:
1)本地软件包:当前项目内使用,封装属性和方法,存在于 node_modules
2)全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置
2、nodemon 作用:替代 node 命令,检测代码更改,自动重启程序【总的来说,之前的node ‘文件路径’ 启动服务,只执行一次,而 nodemon 却开启后一直检测,代码改变保存后,编译一次,同时终端输出】
3、使用:
1)安装:npm i nodemon -g(-g 代表安装到全局环境中)
2)运行:nodemon 待执行的目标 js 文件
-
12、Node.js 总结
1、Node.js 模块化:
1)概念:每个文件当做一个模块,独立作用域,按需加载
2)使用:采用特定的标准语法导出和导入进行使用
2、CommonJS 标准:一般应用在 Node.js 项目环境中
![]()
3、ECMAScript 标准:一般应用在前端工程化项目中
相关文章:

node.js笔记
首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C 程序) 其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境) 区别:都支持 ECMAScript 标准语法,Node.js 有独立…...

mysql 增量备份与恢复使用详解
目录 一、前言 二、数据备份策略 2.1 全备 2.2 增量备份 2.3 差异备份 三、mysql 增量备份概述 3.1 增量备份实现原理 3.1.1 基于日志的增量备份 3.1.2 基于时间戳的增量备份 3.2 增量备份常用实现方式 3.2.1 基于mysqldump增量备份 3.2.2 基于第三方备份工具进行增…...

9月5日上课内容 第一章 NoSQL之Redis配置与优化
本章结构 关系型数据库和非关系型数据库 概念介绍 ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是…...

QT 第四天
一、设置一个闹钟 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend…...

nrf52832 GPIO输入输出设置
LED_GPIO #define LED_START 17 #define LED_0 17 #define LED_1 18 #define LED_2 19 #define LED_3 20 #define LED_STOP 20设置位输出模式: nrf_gpio_cfg_output(LED_0); 输出高电平:nrf_gpio_pin_set(LED_0); 输…...

MyBatis 动态 SQL 实践教程
一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列…...

CSS 斜条纹进度条
效果: 代码: html: <div class"active-line flex"><!-- lineWidth:灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…...
JavaScript(1)每天10个小知识点
目录 1. JavaScript 有哪些数据类型,它们的区别?**2. 数据类型检测的方式有哪些**3. null 和 undefined 区别**4. intanceof 操作符的实现原理及实现**5. 如何获取安全的 undefined 值?**6. Object.is() 与比较操作符 “”、“” 的区别*…...

scanf和scanf_s函数详解
目录 引言: 1.scanf函数的用法: 2.scanf_s函数的用法: 3.scanf和scanf_s的区别: 结论: 引言: 在C语言中,输入函数scanf是非常常用的函数之一,它可以从标准输入流中读取数据并将其…...

基于SSM的在线购物系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

认识JVM的内存模型
从上一节了解到整个JVM大的内存区域,分为线程共享的heap(堆),MethodArea(方法区),和线程独享的 The pc Register(程序计数器)、Java Virtual Machine Stacks(…...

Java8实战-总结19
Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里,你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…...

论文浅尝 | 训练语言模型遵循人类反馈的指令
笔记整理:吴亦珂,东南大学硕士,研究方向为大语言模型、知识图谱 链接:https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型(large language model, LLM)可以根据提示完成各种自然语言处理任务。然而&am…...

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书
文章目录 一、前言二、什么是 DDoS 攻击?三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类?5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …...
64位Linux系统上安装64位Oracle10gR2及Oracle11g所需的依赖包
在64位Linux系统上安装64位Oracle 10gR2,到底需要装哪些包? 这不是一个完整的安装教程,仅仅探讨在64位CentOS 5.8系统上安装64位Oracle 10gR2,到底需要装哪些RPM包. 实验环境VMWare Workstation 8.0 Linux发行版: CentOS 5.8 x86_64 Kernel版本: 2.6.18-308.el5 Oracle Dat…...
Unity InputSystem 基础使用之鼠标交互
资料 官方文档 导入InputSystem包 Package Manager 搜索Input System进行下载启用该包,会重启Unity Editor 注意 InputSystem可以和旧版输入系统一起使用 设置:Project Settings->Player->Other Settings->Configuration->Active Input…...
《算法竞赛·快冲300题》每日一题:“二进制数独”
《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 二…...

CnosDB 签约京清能源,助力分布式光伏发电解决监测系统难题。
近日,京清能源采购CnosDB,升级其“太阳能光伏电站一体化监控平台”。该平台可以实现电站设备统一运行监控,数据集中管理,为操作人员、维护人员、管理人员提供全面、便捷、差异化的数据和服务。 京清能源集团有限公司(…...
汇编:lea 需要注意的一点
lea和mov的效用上不一样,如果当前%rsi的值是0, lea 0x28(%rsi),%rax ,这个只是计算一个地址,而不是去做地址访问。 mov 0x8(%rsi),%rsi,而这个mov,在计算完地址,还要访问内存地址。如果rsi是0&a…...

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)
数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言,基于功能,划分为4类: 1、数据定…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...