node.js笔记

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


  • 1、下载 node.js

  1. 下载网址:Node.js (nodejs.org)
  2. 安装过程:直接点击默认下一步即可。
  3. 注释事项: 安装在非中文路径下,无需勾选自动安装其他配套软件。
  4. 成功验证: 打开 cmd 终端,输入 node -v 命令查看版本号,如果有显示,则代表安装成功。


  • 2、使用 node.js 

  1. 如果在浏览器里面打开加载 js 文件,可以在控制台里面打开该文件,其实就是在 node环境下编译
  2. 如果用 node.js 加载,需要在终端里面 执行 命令【node 文件名】
  3. 注意:Node.js 环境中没有 BOM 和 DOM
  • tips1:vscode终端可以使用快捷键 【ctrl + `  (` 是esc下面的那个键)】,
  • tips2:输入node 后,后面的文件名,可以输入一部分,按 tab 键补全【如下面的 01.js, 输入 01 或者 0 ,按 tab 补全就行,但是只有当前目录可以,如下面的 04 文件夹下面的文件,需要补全文件夹名称,才能补全旗下的文件】


  • 3、fs 模块 - 读写文件

  1. 模块:类似插件,封装了方法/属性
  2. fs 模块:封装了与本机文件系统进行交互的,方法/属性
  3. 语法:
    1. 加载 fs 模块对象
    2. 写入文件内容
    3. 读取文件内容
// 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 - 软件包管理器

  1. npm 是 Node.js 标准的软件包管理器
  2. 在 2017 年 1 月时,npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。
  3. 它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端JavaScript 中使用的工具。
  4. 下载的包会存放在当前项目下的 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 标准:一般应用在前端工程化项目中

 

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

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

相关文章

网络安全-IP地址信息收集

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 IP反查域名 http://stool.chinaz.com/same https://tools.ipip.net/ipdomain.php 如果渗透目标为虚拟主机…

FPGA基本算术运算

FPGA基本算术运算 FPGA基本算术运算1 有符号数与无符号数2 浮点数及定点数I、定点数的加减法II、定点数的乘除法 3 仿真验证i、加减法验证ii、乘除法验证 FPGA基本算术运算 FPGA相对于MCU有并行计算、算法效率较高等优势,但同样由于没有成型的FPU等MCU内含的浮点数运…

合宙Air724UG LuatOS-Air LVGL API控件-图片(Gif)

图片(Gif) GIF图片显示,core版本号要>3211 示例代码 方法一 -- 创建GIF图片控件 glvgl.gif_create(lvgl.scr_act()) -- 设置显示的GIF图像 lvgl.gif_set_src(g,"/lua/test.gif") -- gif图片居中 lvgl.obj_align(g, nil, lvgl…

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日,第14届中国数据库技术大会(DTCC2023)在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详…

Vue3-devtools开发者工具安装方法

因为最近在学习Vue3,但是之前找到的Vue3-Devtools失效了,那就来下载安装下 下载安装 Github下载地址:Vue3-Devtools 这个链接快点:Vue3-Devtools 点击链接后页面如下 点击main选项,下拉列表往下拉,找到你想要的版…

JAVA设计模式第七讲:设计模式在 Spring 源码中的应用

设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。本文以面试题作为切入点,介绍了设计模式的常见问题。我们需要掌握各种设计模式的原理、实现、设计意图和应用场景,搞清楚能解决什么问题…

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…

Excel VSTO开发7 -可视化界面开发

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 7 可视化界面开发 前面的代码都是基于插件启动或者退出时,以及Excel Application的相关事件,在用户实际操作…

亚马逊云科技人工智能内容审核服务:大大降低生成不安全内容的风险

生成式人工智能技术发展日新月异,现在已经能够根据文本输入生成文本和图像。Stable Diffusion是一种文本转图像模型,可以创建栩栩如生的图像应用。通过Amazon SageMaker JumpStart,使用Stable Diffusion模型轻松地从文本生成图像。 尽管生成式…

并发-Executor框架笔记

Executor框架 jdk5开始,把工作单元与执行机制分离开来,工作单元包括Runable和Callable,执行机制由Executor框架来提供。 Executor框架简介 Executor框架的两级调度模型 Java线程被一对一映射为本地操作系统线程 java线程启动会创建一个本…

Unity3D URP 仿蜘蛛侠风格化BloomAO

Unity3D URP 仿蜘蛛侠风格化Bloom&AO BloomBloom效果流程:制作控制面板VolumeComponent.CSCustom Renderer FeatherCustom Renderer PassBloom ShaderComposite Shader 完善Custom Feather风格化AO 总结 本篇文章介绍在URP中如何进行风格化后处理,使…

高阶数据结构-----三种平衡树的实现以及原理(未完成)

TreeMap和TreeSet的底层实现原理就是红黑树 一)AVL树: 1)必须是一棵搜索树:前提是二叉树,任取一个节点,它的左孩子的Key小于父亲节点的Key小于右孩子节点的Key,中序遍历是有序的,按照Key的大小进行排列,高度平衡的二叉…

2024字节跳动校招面试真题汇总及其解答(一)

1. 【算法题】重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:hea…

SSH是如何配置的

目录 什么是SSH SSH可以做什么其他用途? ssh有几种连接方法吗 我应该用哪种方法连接SSH1或SSH2? 每天都在用SSH你知道SSH的原理吗 开启ssh后telnet会关闭吗 SSH的优缺点 SSH和Telnet之间优缺点的对比 SSH的配置实验 ensp Cisco H3C 1、什么是…

QT—基于http协议的网络文件下载

1.常用到的类 QNetworkAccessManager类用于协调网络操作,负责发送网络请求,创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号: finished():完成…

【八大经典排序算法】:直接插入排序、希尔排序实现 ---> 性能大比拼!!!

【八大经典排序算法】:直接插入排序、希尔排序实现 ---> 性能大比拼!!! 一、 直接插入排序1.1 插入排序原理1.2 代码实现1.3 直接插入排序特点总结 二、希尔排序 ( 缩小增量排序 )2.1 希尔排序原理2.2 代码实现2.3 希尔排序特点…

数据可视化、BI和数字孪生软件:用途和特点对比

在现代企业和科技领域,数据起着至关重要的作用。为了更好地管理和理解数据,不同类型的软件工具应运而生,其中包括数据可视化软件、BI(Business Intelligence)软件和数字孪生软件。虽然它们都涉及数据,但在功…

文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 1. 文章简介2. 具体方法3. 实验结果 1. 数学推理 1. 实验设计2. 实验结果3. 消解实验4. 鲁棒性考察 2. 常识推理 1. 实验设计2. 实验结果 3. 符号推理 1. 实验设计2. 实验结果 4.…

华为数通方向HCIP-DataCom H12-821题库(单选题:241-260)

第241题 ​​LS Request​​报文不包括以下哪一字段? A、通告路由器(Advertising Router) B、链路状态 ID (Link Srate ID) C、数据库描述序列号(Database Dascription Sequence lumber) D、链路状态类型 Link state type) 答案:C 解析: LS Request 报文中包括以下字段…

协议定制 + Json序列化反序列化

文章目录 协议定制 Json序列化反序列化1. 再谈 "协议"1.1 结构化数据1.2 序列化和反序列化 2. 网络版计算器2.1 服务端2.2 协议定制(1) 网络发送和读取的正确理解(2) 协议定制的问题 2.3 客户端2.4 代码 3. Json实现序列化反序列化3.1 简单介绍3.2 使用 协议定制 J…