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\247\232\346\242\246\347\224\267/20240229-\345\256\211\350\243\205&\345\210\235\345\247\213\345\214\226.md" "b/\345\247\232\346\242\246\347\224\267/20240229-\345\256\211\350\243\205&\345\210\235\345\247\213\345\214\226.md" new file mode 100644 index 0000000000000000000000000000000000000000..0541f12cb69b0744c7d5d871bdcdf23ad1cd1dee --- /dev/null +++ "b/\345\247\232\346\242\246\347\224\267/20240229-\345\256\211\350\243\205&\345\210\235\345\247\213\345\214\226.md" @@ -0,0 +1,40 @@ +### 什么是Node.js +Node.js是一个基于Chrome V8引擎的JavaScript运行环境。 +- 也就是JavaScript通过浏览器这个运行环境可以做前端开发 +- JavaScript通过node.js这个运行环境可以做后端开发 +- Node.js中无法调用DOM和BOM等浏览器内置API。 +### Node.js 可以做什么 +Node.js作为一个JavaScript的运行环境,仅仅提供了基础的功能和APl。然而,基于Node.js提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了Node.js,可以让前端程序员胜任更多的工作和岗位: +- 基于Express框架(http://www.expressjs.com.cn),可以快速构建Web应用 +- 基于Electron框架(https:l/electronjs.org),可以构建跨平台的桌面应用 +- 基于restify框架(http:restify.com),可以快速构建API接口项目 +- 读写和操作数据库、创建实用的命令行工具辅助前端开发、etc... +### 什么是包? +- Node.js中的第三方模块又叫做包。 +- 就像电脑和计算机指的是相同的东西,第三方模块和包指的是同一个概念,只不过叫法不同。 +### 包的来源 +- 不同于Node.js中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。 +- 注意:Node.js中的包都是免费且开源的,不需要付费即可免费下载使用。 +### 为什么需要包 +- 由于Node.js的内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发的时,效率很低。 +- 包是基于内置模块封装出来的,提供了更高级、更方便的APi,极大的提高了开发效率。 +- 包和内置模块之间的关系,类似于jQuery和浏览器内置API之间的关系。 +### 从哪里下载包 +- 国外有一家IT公司,叫做npm,Inc.这家公司旗下有一个非常著名的网站:https://www.npmjs.com/ ,它是全球最 大的包共享平台,你可以从这个网站上搜索到任何你需要的包,只要你有足够的耐心! +- 到目前为止,全球约1100多万的开发人员,通过这个包共享平台,开发并共享了超过120多万个包供我们使用。 npm,Inc.公司提供了一个地址为https://registry.npmjs.org/ 的服务器,来对外共享所有的包,我们可以从这个服务 器上下载自己所需要的包。 +### npm: 包管理工具 +### 在项目中下载包命令 +- npm install 包的完整名称 +- npm i 包的完整名称 (简写) +- 一般默认下载的包都是最新版本,如果需要指定版本: npm i 包的完整名称@版本号 +- eg:npm i moment@2.22.2 +### 解决下包速度慢的问题 +了解: + +- 在使用npm下包的时候,默认从国外的https://registry.npmjs.org/ 服务器进行下载,此时,网络数据的传输需要经过漫长的海底光缆,因此下包速度会很慢。 +- 淘宝在国内搭建了一个服务器,专门把国外官方服务器上的包同步到国内的服务器,然后在国内提供下包的服务。从而极大的提高了下包的速度。 +- 镜像(Mirroring)是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在个完全相同的副本即为镜像。 +解决方法: 切换镜像源 +- npm config get registry 这是了解到目前的镜像源 +- npm config set registry http://npmmirror.com +- http://npmmirror.com 淘宝最新镜像源 \ No newline at end of file diff --git "a/\345\247\232\346\242\246\347\224\267/20240301-\346\250\241\345\235\227.md" "b/\345\247\232\346\242\246\347\224\267/20240301-\346\250\241\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..ffc31680cfd34e06e8079da1511daed652d81f39 --- /dev/null +++ "b/\345\247\232\346\242\246\347\224\267/20240301-\346\250\241\345\235\227.md" @@ -0,0 +1,11 @@ +### module对象 +- 在每个js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息 +### module.exports对象 +在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。 外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。 在一个自定义模块中,默认情况下, module.exports ={} + +### Node.js中的模块化规范 +- Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖。 +- CommonJS规定: +1. 每个模块内部,module变量代表当前模块。 +2. module变量是一个对象,它的exports属性(即module.exports)是对外的接口。 +3. 加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块。 \ No newline at end of file diff --git "a/\345\247\232\346\242\246\347\224\267/20240302-\346\232\264\351\234\262\345\217\230\351\207\217&\346\226\207\344\273\266\347\263\273\347\273\237.md" "b/\345\247\232\346\242\246\347\224\267/20240302-\346\232\264\351\234\262\345\217\230\351\207\217&\346\226\207\344\273\266\347\263\273\347\273\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..ce097a96776afffcce4ea42eba8f47b177c294d7 --- /dev/null +++ "b/\345\247\232\346\242\246\347\224\267/20240302-\346\232\264\351\234\262\345\217\230\351\207\217&\346\226\207\344\273\266\347\263\273\347\273\237.md" @@ -0,0 +1,42 @@ +### 回顾:同步、异步 +Node.js 中的磁盘操作是由其他 线程 完成的,结果的处理有两种模式: + +- 同步处理 JavaScript 主线程 会等待 其他线程的执行结果,然后再继续执行主线程的代码,效率较低 +- 异步处理 JavaScript 主线程 不会等待 其他线程的执行结果,直接执行后续的主线程代码,效率较好 +### 什么是fs文件系统模块 +- fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 +- eg: + - fs.readFile(path[,options],callback) 方法,用来读取指定文件中的内容 + - fs.writeFile(file,data[,options],callback) 方法,用来向指定的文件中写入内容 +- 如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它: const fs = require('fs') +### 使用 fs 模块 中的readfile方法读取文件 +- 异步读取:fs.readFile(path[,options],callback) + - 参数1:必选参数,字符串,表示文件的路径。 + - 参数2:可选参数,表示以什么编码格式来读取文件。一般默认指定为 utf8 + - 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。 +- 同步读取:fs.readFileSync(path[,options]) 参数与 fs.readFile 大体一致,只是没有 callback 参数 +### 使用 fs 模块中的writefile方法撰写文件文件 +- fs.writeFile(file,data[,options],callback) +- 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。 + - 参数2:必选参数,表示要写入的内容。 + - 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf8。会直接覆盖文件 + - {flag:'a'} 追加文件 + - {flag:'w'} 直接覆盖文件 + - 参数4:必选参数,文件写入完成后的回调函数。 +- 同步写入:fs.writeFileSync(file,data[,options]) 参数与 fs.writeFile 大体一致,只是没有 callback 参数 +### 暴露数据 import +- 分支模块 + + function fn(){ + console.log('111') + } + 暴露数据 + export {fn} +- 主模块 + 前提:在配置文件package.json中把该项目的commonjs规范改成 module + 在package.json中加入 "type":"module" + 这时就不能用 require 来导入模块了 + 利用 import ·· from ·· + import {fn} from "分支模块路径" + 执行分支模块中的方法 + fn() \ No newline at end of file diff --git "a/\345\247\232\346\242\246\347\224\267/20240303-\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" "b/\345\247\232\346\242\246\347\224\267/20240303-\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" new file mode 100644 index 0000000000000000000000000000000000000000..f764e04fc32d86ad2e24c1e7ceaf01124efdc4ee --- /dev/null +++ "b/\345\247\232\346\242\246\347\224\267/20240303-\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" @@ -0,0 +1,21 @@ +### fs 模块读取文件夹 +1. fs.readdir(path[,options],callback) --- 异步读取 + fs.readdir('./node_demo',(err,data)=>{ + if(err) console.log(err) + console.log(data) + }) + + 返回的是一个数组,内容为读取的目录中的每个文件夹名或者文件名 + eg: ['./zz','./tt.txt','./zz/kk.txt'] +2. fs.readdirSync(path[,options]) --- 同步读取 + let data = fs.readdirSync('./node_demo') + console.log(data) //['./zz','./tt.txt','./zz/kk.txt'] +### fs 模块查看资源状态,查看是文件夹还是文件 +1. fs.stat(path[,options],callback) --- 异步查看 +2. fs.statSync(path[,options]) --- 同步查看 + 常见的搭配结果值对象解构: + size 文件体积 + birthtime 创建时间 + mtime 最后修改时间 + isFile 检测是否为文件 + 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