From 28e1587955fb6aed2bcd0ba034b13f550d7361cc Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 1 Mar 2024 22:20:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...05\345\217\212\351\225\234\345\203\217.md" | 57 +++++++++++++++++++ ...7\345\242\203,\346\250\241\345\235\227.md" | 54 ++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 "\351\273\204\345\215\216\351\233\250/2024.02.29- node.js\345\256\211\350\243\205\345\217\212\351\225\234\345\203\217.md" create mode 100644 "\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" diff --git "a/\351\273\204\345\215\216\351\233\250/2024.02.29- node.js\345\256\211\350\243\205\345\217\212\351\225\234\345\203\217.md" "b/\351\273\204\345\215\216\351\233\250/2024.02.29- node.js\345\256\211\350\243\205\345\217\212\351\225\234\345\203\217.md" new file mode 100644 index 0000000..d158073 --- /dev/null +++ "b/\351\273\204\345\215\216\351\233\250/2024.02.29- node.js\345\256\211\350\243\205\345\217\212\351\225\234\345\203\217.md" @@ -0,0 +1,57 @@ +## Node.js +### node.js简介 +``` +Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它是几乎任何类型项目的流行工具! + +Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 非常高效。 + +Node.js 应用在单个进程中运行,无需为每个请求创建新线程。 Node.js 在其标准库中提供了一组异步 I/O 原语,以防止 JavaScript 代码阻塞,并且通常,Node.js 中的库是使用非阻塞范例编写的,这使得阻塞行为成为异常而不是常态。 + +当 Node.js 执行 I/O 操作时,如从网络读取、访问数据库或文件系统,Node.js 不会阻塞线程和浪费 CPU 周期等待,而是会在响应返回时恢复操作。 + +这使得 Node.js 可以使用单个服务器处理数千个并发连接,而不会引入管理线程并发的负担(这可能是错误的重要来源)。 + +Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在除了客户端代码之外,还能够编写服务器端代码,而无需学习完全不同的语言。 + +在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为你不必等待所有用户更新他们的浏览器 - 你负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本, 你还可以通过运行带有标志的 Node.js 来启用特定的实验性特性。 +``` +### node.js 安装 +``` +1.TypeScript:是js中强类型,开发大型项目 + +2.安装:官网node.js + 下载20.11.1 LTS + window+r 打开cmd + node -v 查看是否安装 + npm -v 包管理器,用于管理项目中的依赖包 + nvm:用于管理node版本的管理器 +``` + + +``` +新建文件夹 用vscode打开 + 终端:npm + npm install koa +vscode 出现:node_modeules:依赖包所处地点 + {}package-lock.json:锁定依赖包的版本 + {}package.json:真正项目的配置文件 +``` + +### 镜像 +下载后将镜像地址改为中国 +``` +国内npm源镜像(换源) +终端:ping registry.npmjs.org + +npm config get registry +npm config srt registry https://..... + +``` + + +### 其他 +``` +esc:清空终端输入命令 +cls:清空终端 +tab:补全路径 +``` \ No newline at end of file diff --git "a/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" "b/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" new file mode 100644 index 0000000..3b210b0 --- /dev/null +++ "b/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" @@ -0,0 +1,54 @@ +### 搭建Node开发环境 + +``` +在Mac系统上,Finder选中一个目录,右键菜单并没有“通过Code打开”这个操作。不过我们可以通过Automator自己添加这个操作。 + +先运行Automator,选择“服务”: + +automator-service + +然后,执行以下操作: + +在右侧面板选择“服务”收到选定的“文件夹”,位于“Finder.app“,该选项是为了从Finder中接收一个文件夹; 在左侧面板选择”实用工具“,然后找到”运行Shell脚本“,把它拽到右侧面板里; 在右侧”运行Shell脚本“的面板里,选择Shell”/bin/bash“,传递输入“作为自变量”,然后修改Shell脚本如下: + +for f in "$@" +do + open -a "Visual Studio Code" "$f" +done +保存为“Open With VSCode”后,打开Finder,选中一个文件夹,点击右键,“服务”,就可以看到“Open With VSCode”菜单: +``` + + +### 模板 +``` +在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 + +为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Node环境中,一个.js文件就称之为一个模块(module)。 +``` + +``` +要在模块中对外输出变量,用: + +module.exports = variable; +输出的变量可以是任意对象、函数、数组等等。 + +要引入其他模块输出的对象,用: + +var foo = require('other_module'); +引入的对象具体是什么,取决于引入模块输出的对象。 +``` + +``` +例如: +//暴露:函数/字符串/对象...都可以实现 +hello.js:function fn(){ + console.log('哈哈哈哈哈'); +} +module.exports=fn; + +//引用: +app.js:let fn=require('./hello'); +fn(); + +终端:node app.js +``` \ No newline at end of file -- Gitee From f81afb0da024f21d40e757eb77ba06f2026b33c9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 2 Mar 2024 17:35:30 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\345\242\203,\346\250\241\345\235\227.md" | 12 +++++ ...72\346\234\254\346\250\241\345\235\227.md" | 47 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 "\351\273\204\345\215\216\351\233\250/2024.03.02-\345\237\272\346\234\254\346\250\241\345\235\227.md" diff --git "a/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" "b/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" index 3b210b0..d6e5eb9 100644 --- "a/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" +++ "b/\351\273\204\345\215\216\351\233\250/2024.03.01-\345\274\200\345\217\221\347\216\257\345\242\203,\346\250\241\345\235\227.md" @@ -51,4 +51,16 @@ app.js:let fn=require('./hello'); fn(); 终端:node app.js +``` +另外一种方法 +``` +//暴露:you.js +let str ='abc'; +function abc(){log('ffff')} +export {abc}==module.exports=abc + +//引用:app.js +import {abc} from './you'; +log(abc); +abc(); ``` \ No newline at end of file diff --git "a/\351\273\204\345\215\216\351\233\250/2024.03.02-\345\237\272\346\234\254\346\250\241\345\235\227.md" "b/\351\273\204\345\215\216\351\233\250/2024.03.02-\345\237\272\346\234\254\346\250\241\345\235\227.md" new file mode 100644 index 0000000..722cf01 --- /dev/null +++ "b/\351\273\204\345\215\216\351\233\250/2024.03.02-\345\237\272\346\234\254\346\250\241\345\235\227.md" @@ -0,0 +1,47 @@ +### 基本模块 +javas中有一个特殊的对象,称为全局对象(global,object),它及其所有属性都可以在程序的任何地方访问,全局变量即全局对象的属性。 +#### global(全局) +``` +global.console.log(444); +console.log(5555); +console.warn(1111); +console.error(6666); +``` + +#### process + +process 是一个全局变量,即 global 对象的属性。 + +它用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。通常在你写本地命令行程序的时候,少不了要 和它打交道。 + +fs:node.js内置的fs模块,就是文件系统模块,负责读写文件 + +##### 同步,异步 +同步,异步: + Node.js中的 同步 方法和 异步 方法都是用于处理I/O操作的。 同步 方法会阻塞代码的执行,直到操作完成并返回结果。 而 异步 方法则不会阻塞代码的执行,而是在操作完成后通过回调函数返回结果。 + +同步:串联 + +异步:并联 + +``` +//引入: +var fs=require('fs'); +//异步:读 +fs.readFile('tt.txt','utf-8',(err,data)=>{ + if(err){console.log(err);}else{ + console.log(data); + } +}); +//写 +fs.writeFile('tt.txt','小屁孩,顾事业','utf-8',function(err){ + console.log(err); +}); + +//追加: +fs.writeFile('tt.txt','\nhhhhhhhh\n',{flag:'a'},function(err){ + console.log(err); +}); +console.log(fs.writeFile); + +``` \ No newline at end of file -- Gitee From b013776e4ada099e25782ebe368f07af422b2150 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 3 Mar 2024 11:40:43 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\347\273\237\346\250\241\345\235\227.md" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "\351\273\204\345\215\216\351\233\250/2024.03.03-\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" diff --git "a/\351\273\204\345\215\216\351\233\250/2024.03.03-\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" "b/\351\273\204\345\215\216\351\233\250/2024.03.03-\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" new file mode 100644 index 0000000..a9bf6fd --- /dev/null +++ "b/\351\273\204\345\215\216\351\233\250/2024.03.03-\346\226\207\344\273\266\347\263\273\347\273\237\346\250\241\345\235\227.md" @@ -0,0 +1,38 @@ +##### 注:有panckage.json文件才是一个标准的node.js项目 + +#### 同步读 (readFileSync) +``` +import fs from 'fs'; +let data=fs.readFileSync('xx.txt','uft-8'); +console.log(data); +``` + +#### 读文件夹 +``` +import fs from 'fs'; +//异步 +fs.readdir('./',(err,data)=>{ + data.foreach(item)=>{ + log(item); + fs.stat(item,(wrong,dirData)=>{ + let isDir=dirData.isDirectiry(); + if(isDir){ + fs.readdir(item,(kk,dd)=>{ + if(kk){log(kk)} + else{ + log(dd) + } + }) + } + }) + } +}) + +//注意:若出现多个则需要用递归的方法。 +``` + +``` +1.读取指定文件夹,列出所有的文件或文件夹 +2.遍历这些文件或者文件夹,判断是否是文件夹,是,则继续调用读取文件夹的方法 +3.一直重复第二步,直到将所有的内容都列出 +``` \ No newline at end of file -- Gitee