IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js 2022.11.3 -> 正文阅读

[JavaScript知识库]Node.js 2022.11.3

目录

Nodejs

npm介绍

Node.js 是什么

Node.js回调函数

Node.js事件循环

Node.js 模块系统

Node.js 函数

Node.js匿名函数

Node.js路由

Node.js全局对象

Node.js 全局变量

Console的方法

process

Util

异步和同步

Node.js 文件系统

Node.js GET/POST 请求

Node.js 工具模块

Node.js Web 模块

Node.js Express 框架

Node.js RESTful API

Node.js 多进程

Node.js 连接 MySQL

习题

1.如何应用 Node.js 中的 Buffer

2.Node.js 中内置的 fs 模块架构由哪几部分组成

3.如何读取 JSON 配置文件

4.Node.js 有哪些核心模块


Nodejs

npm介绍

npm 是随同 Nodejs 一起安装的包管理工具,能解决Nodejs代码部署上的很多问题

常见的使用场景有以下几种

1.允许用户从 NPM 服务器下下载别人编写的第三方包到本地使用

2.允许用户从 NPM 服务器下载并安装别人编写的命令行程序到本地使用

3.允许用户将自己编写的包或命令行程序上传到 NPM 服务器供别人使用

4.由于新版的Nodejs 已经集成了 npm,所以之前的npm 也一并安装好 了

可以通过 npm -v 来测试是否成功安装

使用package.json packag.json 位于模块的目录下,用于定义包的属性

Node.js 是什么

1.Node.js就是运行在服务端的 JavaScript

2.Node.js是一个基于Chrome JavaScript运行时建立的一个平台

3.Node.js是一个事件驱动I/O服务端 JavaScript 环境,基于Google 的 V8引擎

V8引擎执行 JavaScript 的速度非常快,性能非常好

Node.js回调函数

Node.js 异步编程的之间体现就是回调

异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了

回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数

回调函数是指用一个函数作为参数传入另一个函数,这个函数会被某个时机调用

Node.js事件循环

Node.js 异步执行回调接口可以处理大量的并发,所以性能非常高

Node.js 几乎每个 API 都是支持回调函数的

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现

Node.js 单线程类似进入一个 While(true)的事件循环,知道没有事件观察者退出

每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数

Node.js 模块系统

1.为了让 Node.js 的文件可以相互调用,Node.js提供了一个简单的模块系统

2.模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的

3.一个Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码,JSON 或者是编译过的 C/C++ 扩展

Node.js 函数

在JavaScript,一个函数可以作为另一个函数的参数,可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数,Node.js中函数的使用与 JavaScript 类似

Node.js匿名函数

我们可以把一个函数作为变量传递。但是我们不一定要绕这个“先定义,再传递”的圈子,可以直接在另一函数的括号中定义和传递这个函数

Node.js路由

我们要为路由提供请求的 URL 和 其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码,因此我们需要查看 http 请求的 URL 以及 GET/GET 参数,我们需要所有数据都会包含在 request 对象中该对象作为 onRequest()回调函数的第一个参数传递,但是为了解析这些数据,我们需要额外的Node.js 模块 它们分别是 uel 和 querystring 模块

Node.js全局对象

在浏览器 JavaScript 中,通常 window 是全局对象,而Node.js中全局对象是 global,所有全局变量都是global对象的属性,在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它

Node.js 全局变量

1.在最外层定义的变量

2.全局对象的属性

3.隐式定义的变量(未定义直接赋值的变量)

_filename

表示当前正在执行的脚本的文件名,它将输出文件所在的位置的绝对路径,参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径

_dirname

表示当前执行脚本所在的目录

setTimeout(cb,ms)

全局函数的在指定的毫秒(ms)数后执行指定函数(cb)

setTimeout()只执行一次指定函数

返回一个代表定时器的句柄值

clearTimeout(t)

全局函数用于停止一个之前通过 setTimeout()创建的定时器。参数t 是通过setTimeout()函数创建的定时器

setInterval(cb,ms)

全局函数在指定的毫秒(ms)数后执行指定函数(cb)。返回一个代表定时器的句柄值。可以使用 clearInterval(t)函数来清除定时器。setInterval()方法会不停地调用函数,直到clearInterval()被调用或窗口被关闭

Console的方法

console.log([data][,..]) 向标准输出流打印字符并以换行符结束

console.info([data][,..]) 返回信息型消息

console.error([data][,..]) 输出错误消息

console.warn([data][,..]) 输出警告消息

console.dir(obj[,options]) 对一个对象进行检查

console.time(label) 输出时间,表示计时开始

console.timeEnd(label) 结束时间,表示计时结束

console.trace(message[,...]) 当前执行的代码在堆栈中调用路径,测试函数运行有帮助

console.assert(value[,message][,...]) 用于判断某个表达式或变量是否为真,接受两个参数,当第一个参数为 false,才会输出第二参数,否则不会有结构

process

是一个全局变量,即 global对象的属性

它用于描述当前 Node.js 进程状态的对象,提供了一个操作系统的简单接口

exit :当进程准备退出时触发

beforeExit:当 node 清空时间循环,并且没有其他安排时触发这个时间,通常来说,当没有进程安排时node 退出,但是 beforeExit 的监听器可以异步调用,这样 node 就会继续执行

uncaughtException:当一个异常冒泡回到事件循环,触发这个事件,如果给异常添加监视器,(打印堆栈跟踪信息并退出)这个操作就不会发生

Signal 事件:当进程接收到信号就触发,信号列表详细见标准的 POSIX信号,如 SIGINT、SIGUSR1等

Util

是一个Node.js 核心模块,提供常用函数的集合,弥补核心 JavaScript 的功能 过于精简的不足

util.isArray(object):是一个数组返回 true,否则返回 false

util.isRegExp(object):是一个正则表达式返回true,否则返回false

util.isDate(object):是一个日期返回true,否则返回false

异步和同步

Node.js文件系统(fs模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和 同步的 fs.readFileSync()。

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)

异步方法性能更高,速度更快,而且没有阻塞

Node.js 文件系统

Node.js提供一组类似 UNIX(POSIX)标准的文件操作 API

打开文件

异步模式下打开文件的语法格式:fs.open(path,flags[,mode],callback)

参数使用说明如下

path - 文件的路径

flags -文件打开的行为

mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)

callback - 回调函数,带有两个参数

获取文件信息

通过异步模式获取文件信息的语法格式:fs.stat(path,callback)

path - 文件路径

callback - 回调函数

写入文件

fs.writeFile(file,data[,options],callback)

writeFile 直接打开文件默认是 w 模式,如果文件存在,该方法写入的内容会覆盖旧的文件内容

file - 文件名或文件描述符

data - 要写入文件的数据,可以是 String (字符串)或 Buffer (缓冲 )对象

options - 该参数是一个对象,包含{encoding,mode,flag}默认编码为 utf8,模式为0666,flag为'w'

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回

读取文件

以下为异步模式下读取文件的语法格式:

fs.read(fd,buffer,offset,length,position,callback)

该方法使用了文件描述符来读取文件

fd - 通过 fs.open() 方法返回的文件描述符

buffer - 数据写入的缓冲区

offset - 缓冲区写入的写入偏移量

length - 要从文件中读取的字节数

position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取

callback -回调函数,有三个参数 err ,bytesRead ,buffer 。 err为错误信息,bytesRead表示读取的字节数,buffer 为缓冲区对象

关闭文件

以下为异步模式下关闭文件的语法格式:

fs.close(fd,callback)

该方法使用了文件描述符来读取文件

fd - 通过 fs.open() 方法返回的文件描述符

callback - 回调函数,没有参数

删除文件

以下为删除文件的语法格式:

fs.unlink(path,callback)

path - 文件路径

callback - 回调函数,没有参数

创建目录

以下为创建目录的语法格式

fs.mkdir(path[,options],callback)

path - 文件路径

options 参数可以是: recursive - 是否以递归的方式创建目录,默认为 false

mode - 设置目录权限,默认为 0777

callback - 回调函数,没有参数

读取目录

以下为读取目录的语法格式

fs.readdir(path,callback)

path - 文件路径

callback - 回调函数,回调函数带有两个参数 err ,files,err 为错误信息,files 为目录下的文件数组列表

删除目录

以下为删除目录的语法格式

fs.rmdir(path,callback)

path - 文件路径

callback - 回调函数,没有参数

Node.js GET/POST 请求

获取 GET 请求内容(直接被嵌入路径中),URL 是完整的请求路径,包括了?后面的内容

手动解析后面的内容作为 GET 请求的参数

node.js 中 url 模块中的 parse 函数提供了这个功能

在浏览器中访问http://localhost:3000/user?name=张三&url=ZS: Global management consulting and technology firm

获取 POST 请求内容,所有内容弄都在请求体里面,http.ServerRequest 并没有一个属性内容为请求体·,原因是等待请求体传输可能是一件耗时的工作

Node.js 工具模块

  1. OS模块

提供基本的系统操作函数

  1. Path 模块

提供了处理和转换文件路径的工具

  1. Net 模块

用于底层的网络通信。提供了服务端和客户端的操作

  1. DNS 模块

用于解析域名

  1. Domain 模块

简化异步代码的异常处理,可以捕捉处理 try catch 无法捕捉的

Node.js Web 模块

什么是 Web 服务器

Web 服务器一般指网络服务器,是指驻留与因特网上某种类型计算机的程序,Web 服务器的基本功能就是提供 Web 信息浏览服务,它只需支持 HTTP 协议、 HTML 文档格式及 URL,与客户端的网络浏览器配合

大多数 web 服务器都支持服务端的脚本语言,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器,目前最主流的三个 Web 服务器 是 Apache, Nginx,IIS

Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据

Server - 服务端,一般指 Web 服务器,可以接受客户端请求,并向客户端发送响应数据

Business - 业务层,通过 Web 服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等

Data - 数据层,一般有数据库组成

Node.js Express 框架

Express 简介

Express是一个简洁而灵活的 node.js Web 应用框架,提供了一系列请打特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具

使用 Express 可以快速地搭建一个完整功能的网站

Express 框架核心特性:

可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不同的 HTTP 请求动作。可以通过向模板传递参数来动态渲染 HTML 页面

Node.js RESTful API

REST 表述性状态传递

表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。需要注意的是,REST 是 设计风格而不是标准。 REST 通常基于使用 HTTP ,URI 和 XML(标准通用标记语言下的一个子集) 以及 HTML (标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。REST 通常使用 JSON 数据格式

HTTP 方法

以下为 REST 基本架构的四个方法:

GET - 用于获取数据

PUT - 用于更新或添加数据

DELETE - 用于删除数据

POST - 用于添加数据

Node.js 多进程

Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发,有助于在多核 CPU 的系统上创建多个子进程 ,从而提高性能

exec()方法

child_process.exec 使用子进程执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回

语法:child_process.exec(command[,options],callback)

spawn()方法

child_process.spawn 使用指定的命令行参数创建新进程

语法:child_process.spawn(command[,args],options)

fork 方法

child_process.fork 是 spawn()方法的特殊形式,用于创建进程

语法:child_process.fork(modulePath[,args][,options])

Node.js 连接 MySQL

var mysql = require('mysql');

var connection = mysql.createConnection({

host : 'localhost',//地址

user : 'root',//用户名

password : '123456',//密码

database : 'test'//数据库名

});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {

if (error) throw error;

console.log('The solution is: ', results[0].solution);

});

习题

1.如何应用 Node.js 中的 Buffer

  1. 创建Buffer
  2. 复制Buffer
  3. 拼接Buffer
  4. 截取Buffer
  5. 填充Buffer
  6. Buffer工具方法
  7. Buffer 与 String 的转换

fs.resd(Buffer)

2.Node.js 中内置的 fs 模块架构由哪几部分组成

  • fs 文件模块
  1. 读取文件
    1. 异步读取
    2. 同步读取文件
    3. 流式读取
  2. 写入文件
    1. 异步写入文件
    2. 同步写入文件
  3. 追加式写入
    1. 异步追加
    2. 同步追加
  4. 读取文件/文件夹信息
    1. 语法方式
    2. 读取信息示例
    3. 文件信息对象的方法
    4. 修改文件名
  5. 删除目录
  6. 新增目录
  7. 读取目录中的文件列表
  8. 删除空文件夹
  9. 监听文件是否发生改变
  • fs 流式读写
    1. Stream 介绍
    2. 有关流的操作
    3. 流式读取
  • fs 管道方式
    1. 管道的概念
    2. 管道的语法
    3. 不采用管道方式复制文件
    4. 采用管道流的方式复制文件

3.如何读取 JSON 配置文件

Node 运行环境有内置的 require 函数 和 fs 模块,你可以用它来加载或读取 JSON 文件。因为 require 是全局可用

但是使用 fs 模块之前,要先要求它

如何使用去哪聚 require 函数加载 JSON 文件

使用全局的 require 函数来同步加载 Node中的 JSON 文件,在使用 require 加载一个文件后,它被缓存了。因此,再次使用 require 加载该文件将加载缓存的版本。

4.Node.js 有哪些核心模块

1.HTTP 模块

作用:处理网络客户端的请求

2.URL 模块

作用:处理客户端请求过来的 url

3.Query Strings 模块

作用:处理客户端通过 get/post 请求传递过来的参数

4.File System 模块

作用:字啊服务端操作文件,可能是需要将浏览器上传的图片保存到服务器,也可能是需要将服务器的资源读取之后返回给浏览器

5.Path 模块

作用:操作文件的路径,为文件操作服务

6.Global 模块

作用:全局共享的,不需要导入模块即可以使用

常用的属性:

_dirname:文件所在的文件夹路径

_filename:文件所在的路径

require():导入需要的模块

module:自定义模块时用到

exports:自定义模块时用到

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:19:49  更:2022-11-05 00:20:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:18:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码