diff --git a/readme.md b/readme.md deleted file mode 100644 index 4c7fce1a6d837b4222a7ace58bcfe14ff9050cf9..0000000000000000000000000000000000000000 --- a/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -## net前端班笔记 - -上课录屏地址:https://www.alipan.com/s/R85ZxiyYWBg \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024.02.29-Nodejs\345\222\214npm.md" "b/\345\217\266\346\235\250/2024.02.29-Nodejs\345\222\214npm.md" new file mode 100644 index 0000000000000000000000000000000000000000..cff5e3123b4be078f797a110d148cb3ab14cf7c7 --- /dev/null +++ "b/\345\217\266\346\235\250/2024.02.29-Nodejs\345\222\214npm.md" @@ -0,0 +1,38 @@ + + +### Node.js 简介 + +- Node.js 是一个基于Chrome V8引擎的JavaScript运行环境。 + +- 官网地址:[Node.js (nodejs.org)](https://link.juejin.cn/?target=https%3A%2F%2Fnodejs.org%2Fen%2F) + +#### Node.js中的JavaScript运行环境 + +- 浏览器是JavaScript 的前端运行环境。 + +- Node.js 是JavaScript的后端运行环境。 + +- Node.js 中无法调用DOM和BOM等浏览器内置API。 + +- Node.js 可以做什么 + + Node,js作为一个JavaScript 的运行环境,仅仅提供了基础的功能和API。然而,基于Node.,js提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了Node.js,可以让前端程序员胜任更多的工作和岗位。 + + - 基于 [Express 框架 (opens new window)](https://link.juejin.cn/?target=http%3A%2F%2Fwww.expressjs.com.cn%2F),可以快速构建 Web 应用 + + - 基于 [Electron 框架 (opens new window)](https://link.juejin.cn/?target=https%3A%2F%2Felectronjs.org%2F),可以构建跨平台的桌面应用 + + - 基于 [restify 框架 (opens new window)](https://link.juejin.cn/?target=http%3A%2F%2Frestify.com%2F),可以快速构建 API 接口项目 + - 读写和操作数据库、创建实用的命令行工具辅助前端开发 + +# Node.js 工具模块 + +在 Node.js 模块库中有很多好用的模块。接下来我们为大家介绍几种常用模块的使用: + +| 序号 | 模块名 & 描述 | +| :--- | :----------------------------------------------------------- | +| 1 | [**OS 模块**](https://www.runoob.com/nodejs/nodejs-os-module.html) 提供基本的系统操作函数。 | +| 2 | [**Path 模块**](https://www.runoob.com/nodejs/nodejs-path-module.html) 提供了处理和转换文件路径的工具。 | +| 3 | [**Net 模块**](https://www.runoob.com/nodejs/nodejs-net-module.html) 用于底层的网络通信。提供了服务端和客户端的的操作。 | +| 4 | [**DNS 模块**](https://www.runoob.com/nodejs/nodejs-dns-module.html) 用于解析域名。 | +| 5 | [**Domain 模块**](https://www.runoob.com/nodejs/nodejs-domain-module.html) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。 | \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024.03.01-\346\250\241\345\235\227.md" "b/\345\217\266\346\235\250/2024.03.01-\346\250\241\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..d8ff91d283350f253826b5dd935803594fb9fa97 --- /dev/null +++ "b/\345\217\266\346\235\250/2024.03.01-\346\250\241\345\235\227.md" @@ -0,0 +1,111 @@ +### 模块分类 + +- Node.js 中根据模块来源的不同,将模块分为了3大类,分别是 + - 内置模块(内置模块是由Node.js官方提供的,例如fs、path、http等) + - 自定义模块(用户创建的每个.js文件,都是自定义模块) + - 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前 需要先下载) + +### 加载模块 + +```javascript +//加载内置fs模块 +const fs = require('fs') + +// 加载用户自定义模块 +const custom - require('./custom.js') + +// 加载第三方模块 +const moment - require('moment') +``` + +- **注意**:使用require方法加载其它模块时,会执行被加载模块中的代码。 + +### 模块作用域 + +- 和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。 +- 该作用域防止了全局变量污染的问题 + +### module对象 + +- 在每个.js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息 + - id,path,exports,parent,filename等... + +#### module.exports + +- 在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。 +- 外界用require()方法导入自定义模块时,得到的就是 module.exports所指向的对象。 + +**代码示例** + +```javascript +// moduleA.js +// 导出变量 +module.exports.username = 'zs' +module.exports.sayHello = function() { + console.log('Hello!') +} +// main.js +// 导入并使用变量 +const moduleA = require('./moduleA.js') +moduleA.sayHello() +``` + +### exports对象 + +- 由于module.exports单词写起来比较复杂,为了简化向外共享成员的代码,Node提供了exports对象。默认情况下,exports和module.exports 指向同一个对象。最终共享的结果,还是以module.exports指向的对象为准。 +- 时刻谨记,require)模块时,得到的永远是 module.exports指向的对象 + +```javascript +console.log(module.exports) // {} +console.log(exports) // {} +console.log(module.exports === exports) // true +``` + +### CommonJS规范 + +Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖。 + +- CommonJS规定: + 1. 每个模块内部,module变量代表当前模块。 + 2. module变量是一个对象,它的exports属性(即module.exports)是对外的接口。 + 3. 加载某个模块,其实是加载该模块的 module.exports属性。require)方法用于加载模块。 + +### 模块加载机制 + +模块第一次加载后会被缓存,即多次调用 `require()` 不会导致模块的代码被执行多次,提高模块加载效率。 + +#### 内置模块加载 + +内置模块加载优先级最高。 + +#### 自定义模块加载 + +加载自定义模块时,路径要以 `./` 或 `../` 开头,否则会作为内置模块或第三方模块加载。 + +导入自定义模块时,若省略文件扩展名,则 Node.js 会按顺序尝试加载文件: + +- 按确切的文件名加载 +- 补全 `.js` 扩展名加载 +- 补全 `.json` 扩展名加载 +- 补全 `.node` 扩展名加载 +- 报错 + +#### 第三方模块加载 + +- 若导入第三方模块, Node.js 会从**当前模块的父目录**开始,尝试从 `/node_modules` 文件夹中加载第三方模块。 +- 如果没有找到对应的第三方模块,则移动到再**上一层父目录**中,进行加载,直到**文件系统的根目录**。 + +例如,假设在 `C:\Users\bruce\project\foo.js` 文件里调用了 `require('tools')`,则 Node.js 会按以下顺序查找: + +- `C:\Users\bruce\project\node_modules\tools` +- `C:\Users\bruce\node_modules\tools` +- `C:\Users\node_modules\tools` +- `C:\node_modules\tools` + +#### 目录作为模块加载 + +当把目录作为模块标识符进行加载的时候,有三种加载方式: + +- 在被加载的目录下查找 `package.json` 的文件,并寻找 `main` 属性,作为 `require()` 加载的入口 +- 如果没有 `package.json` 文件,或者 `main` 入口不存在或无法解析,则 Node.js 将会试图加载目录下的 `index.js` 文件。 +- 若失败则报错 \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024.03.02-fs\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" "b/\345\217\266\346\235\250/2024.03.02-fs\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..a6a07fa3764da27886963318d8c599d38acd0785 --- /dev/null +++ "b/\345\217\266\346\235\250/2024.03.02-fs\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" @@ -0,0 +1,72 @@ +### fs文件系统模块 + +- fs 模块是Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 + +#### 导入模块 + +```javascript +// Nodejs内置模块 无需额外安装 +const fs = require('fs') +``` + +#### 读取文件内容 + +- 使用fs.readFile()方法,可以读取指定文件中的内容 + +```css +fs.readFile(path[, options], callback) +``` + +- 参数解释: + 1. path:必选参数,字符串,表示文件的路径。 + 2. options:可选参数,表示以什么编码格式来读取文件。 + 3. callback:必选参数,文件读取完成后,通过回调函数拿到读取的结果,该函数会传入两个参数。 + - err:文件读取错误时发生的报错 + - dataStr:文件内容 + +**示例代码** + +```javascript +const fs = require('fs') + +fs.readFile('./test.text', 'utf8', function (err, dataStr) { + // 如果读取成功,则err为null + // 如果读取失败,err的值为错误对象 + if(err) { + console.log(err) + } + console.log('+++++++++') + // 打印成功的结果 + console.log(dataStr) +}) +``` + +#### 写入文件内容 + +- 使用fs.writeFile0方法,可以向指定的文件中写入内容,语法格式如下 +- 该方法只能创建文件,不能创建目录 + +```css +fs.writeFile(file, data[, options], callback) +``` + +- 参数解释: + 1. file:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。 + 2. data:必选参数,表示要写入的内容。 + 3. options:可选参数,表示以什么格式写入文件内容,默认值是utf8。 + 4. callback:必选参数,文件写入完成后的回调函数,该函数会传入一个参数。 + - err:文件写入错误时发生的报错 + +**示例代码** + +```javascript +const fs = require('fs') + +fs.writeFile('./write.text', 'Hello FS Module!', 'utf8', function (err) { + // 如果写入成功,则err为null + // 如果写入失败,err的值为错误对象 + if (err) { + console.log(err) + } +}) +``` \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024.03.03-fs\346\250\241\345\235\227\350\257\273\345\217\226\346\226\207\344\273\266.md" "b/\345\217\266\346\235\250/2024.03.03-fs\346\250\241\345\235\227\350\257\273\345\217\226\346\226\207\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..088f84fdf8a698c3496702ac01f074f9fd2d9ae9 --- /dev/null +++ "b/\345\217\266\346\235\250/2024.03.03-fs\346\250\241\345\235\227\350\257\273\345\217\226\346\226\207\344\273\266.md" @@ -0,0 +1,57 @@ +## fs模块读取文件夹 + +\```JavaScript + +//导入方式一般有2种 + +import fs from 'fs'; + +const fs = require('fs'); + + + +\``` + +/* + +一、读取指定文件夹,列出所有的文件或者文件夹 + +二、遍历这些文件或者文件夹,判断是否文件夹,是,则继续调用读取文件夹的方法 + +三、一直重复第二步,直到将所有的内容都列出 + + + +*/ + +# nodejs 中读取文件状态; + +# fs.stat()方法; + +var fs = require("fs"); +/* + 读取文件的状态; + fs.stat(path,callback); + callback有两个参数;err,stats;stats是一个fs.Stats对象; + 如果发生错误err.code是常见错误之一; + 不建议在调用 fs.open() 、fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 检查一个文件是否存在。 作为替代,用户代码应该直接打开/读取/写入文件,当文件无效时再处理错误。 + 如果要检查一个文件是否存在且不操作它,推荐使用 fs.access()。 + */ +fs.stat("./wenjian.txt",function(err,stats){ + console.log(err); + console.log(stats); +// 获取文件的大小; + console.log(stats.size); +// 获取文件最后一次访问的时间; + console.log(stats.atime.toLocaleString()); +// 文件创建的时间; + console.log(stats.birthtime.toLocaleString()); +// 文件最后一次修改时间; + console.log(stats.mtime.toLocaleString()); +// 状态发生变化的时间; + console.log(stats.ctime.toLocaleString()) +//判断是否是目录;是返回true;不是返回false; + console.log(stats.isFile()) +// 判断是否是文件;是返回true、不是返回false; + console.log(stats.isDirectory()) +}) \ No newline at end of file diff --git "a/\350\200\201\350\203\241\346\235\245\344\271\237/20240301-node\345\256\211\350\243\205.md" "b/\350\200\201\350\203\241\346\235\245\344\271\237/20240301-node\345\256\211\350\243\205.md" deleted file mode 100644 index 61e49f6b04a70e4d5b737119aad617d6bd45dd48..0000000000000000000000000000000000000000 --- "a/\350\200\201\350\203\241\346\235\245\344\271\237/20240301-node\345\256\211\350\243\205.md" +++ /dev/null @@ -1,3 +0,0 @@ -## 怎么安装node - -如何修改镜像地址 \ No newline at end of file