diff --git "a/\347\224\230\345\244\267\345\215\216/20230213-\345\210\235\345\205\245nodejs.md" "b/\347\224\230\345\244\267\345\215\216/20230213-\345\210\235\345\205\245nodejs.md" new file mode 100644 index 0000000000000000000000000000000000000000..151a8461dfea7ba61fc127443c72ee1e79f6e4bb --- /dev/null +++ "b/\347\224\230\345\244\267\345\215\216/20230213-\345\210\235\345\205\245nodejs.md" @@ -0,0 +1,29 @@ +# nodejs +## nodejs下载地址 +https://nodejs.org/en/ +## 查看当前node的版本 +win+s输入cmd:“node -v” +## nodejs与io.js的关系? +io.js是Joyent的Node.js的一个分支 +* io.js: +节点转发基本上被合并到io.js中, +在社区驱动的发展和主动释放周期的基础上分化, +包括许多原始的Node.js开发者, +有未来的目标“与Node.js合并”。 + +* Node.js的: +原来的软件, +近来发展缓慢, +由Joyent赞助, +Joyent拥有商标Node.js。 + +# nvm +## nvm下载地址 +https://github.com/coreybutler/nvm-windows/releases +下方找到“nvm-setup.exe”点击下载 +## nvm有什么用? +nvm全名node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 +## nvm与npm又有什么关系? +* npm:随着 Node.js 一同安装的包管理器(主要用来管理包)。 +* nvm:需要单独安装,主要对项目使用的 Node.js 解释器进行管理。 + diff --git "a/\347\224\230\345\244\267\345\215\216/20230215-js\350\260\203\350\257\225\344\270\216\346\250\241\345\235\227.md" "b/\347\224\230\345\244\267\345\215\216/20230215-js\350\260\203\350\257\225\344\270\216\346\250\241\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..9658700a7d5ecdd524605c8ac01127bbc4251eaf --- /dev/null +++ "b/\347\224\230\345\244\267\345\215\216/20230215-js\350\260\203\350\257\225\344\270\216\346\250\241\345\235\227.md" @@ -0,0 +1,50 @@ +# js 的调试 + +在VSCode中,创建文件夹名为“.vscode”,在此文件夹下创建名为“launch.json”的文件 + +launch.json : +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name":"launch", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/hello.js" //hello.js 文件为需要使用调试的js文件 + } + ] +} +``` +有配置文件,可使用launch.json调试。 + +# 模块 + +程序代码越写越多,文件里代码就会越来越长,越来越不容易维护。 + +在Node环境中,一个.js文件就称之为一个模块。 + +一个方法也可以是一个模块。 + +## 模块有什么用? + +文件中,文件模块经常会用来引用。 + +```js +//a文件 +'use strict'; + +var a = 'abc'; + +function add(name) { + console.log(a + ', ' + abc + '!'); +} + +module.exports = add; +``` +另一边: +```js +//b文件 +var add = require('./a'); +``` + diff --git "a/\347\224\230\345\244\267\345\215\216/20230216-\345\205\250\345\261\200\345\217\230\351\207\217.md" "b/\347\224\230\345\244\267\345\215\216/20230216-\345\205\250\345\261\200\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..0ab4d47f147183fa6641b488db761e694657f467 --- /dev/null +++ "b/\347\224\230\345\244\267\345\215\216/20230216-\345\205\250\345\261\200\345\217\230\351\207\217.md" @@ -0,0 +1,100 @@ +# 全局变量 +## global +开发中遇到一个问题,使用node写接口时发现我需要使用一个全局变量来记录一个参数,浏览器上有自己的全局对象 window,那在node里面全局对象是什么呢?进行一波百度发现: nodejs 下也有自己的全局对象 global,并且在各个模块下 都可以直接访问 global 对象 + + +## process +### 属性 +process对象提供一系列属性,用于返回系统信息。 + +* process.pid:当前进程的进程号。 +* process.version:Node的版本,比如v0.10.18。 +* process.platform:当前系统平台,比如Linux。 +* process.title:默认值为“node”,可以自定义该值。 +* process.argv:当前进程的命令行参数数组。 +process.argv返回命令行脚本的各个参数组成的数组。 + +先新建一个脚本文件argv.js。 + ```js +// argv.js +console.log("argv: ",process.argv); +console.log("argc: ",process.argc); +``` +在命令行下调用这个脚本,会得到以下结果。 +```js +node argv.js a b c +# [ 'node', '/path/to/argv.js', 'a', 'b', 'c' ] +``` +* process.env:指向当前shell的环境变量,比如process.env.HOME。 +* process.execPath:运行当前进程的可执行文件的绝对路径。 +* process.stdout:指向标准输出。 + +process.stdout用来控制标准输出,也就是在命令行窗口向用户显示内容。它的write方法等同于console.log。 +```js +exports.log = function() { + process.stdout.write(format.apply(this, arguments) + '\n'); +}; +``` +* process.stdin:指向标准输入。 +* process.stderr:指向标准错误。 +### 方法 +process对象提供以下方法: + +* process.exit():退出当前进程。 +* process.cwd():返回运行当前脚本的工作目录的路径。_ +* process.chdir():改变工作目录。 +* process.nextTick():将一个回调函数放在下次事件循环的顶部。 +* process.chdir()改变工作目录的例子 + +# fs +fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 + +如果要在 JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它: +```js +const fs =require('fs'); +``` +## fs.readFile() 的语法格式 +使用 fs.readFile() 方法,可以读取指定文件中的内容 +```js +fs.readFile(./kk.js,'utf-8',function(err,dataStr){ + if (err) { + console.log(err); + } else { + console.log(dataStr); + } +}) +``` +参数解读: + +* 参数1:必选参数,字符串,表示文件的路径。 +* 参数2:可选参数,表示以什么编码格式来读取文件。 +* 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。 + +## fs.writeFile() 的语法格式 +使用 fs.writeFile() 方法,可以向指定的文件中写入内容 +```js +fs.writeFile(./kk.js,'666','utf-8',function(err) { + if (err) { + console.log('成功'); + } else { + console.log('失败'); + } +}) +``` +参数解读: + +* 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。 +* 参数2:必选参数,表示要写入的内容。 +* 参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。 +* 参数4:必选参数,文件写入完成后的回调函数。 + +## 异步读文件与同步读文件 +fs中 带Sync的就是同步方式 不带的就是异步 + +* 同步:前面的代码先执行 后面的代码需要等待前面的代码执行完毕才会执行 + +* 异步:代码的执行不分先后 也就是说前面的代码执行 不会导致后面的代码阻塞 所以异步代码的执行结果的顺序是不一定的 + +1. readFileSync(path[, options]) 同步读取文件 +2. readFile(path,[,options],callback(error,data)) 普通异步去读文件 +