全局变量
__dirname
定义
1.全局变量 2.当前目录名
__dirname
表示当前文件(模块)所在的目录名称。
- Dir: directory 文件夹、目录
- Name: 名字
语法
console.log(__dirname) //全局直接调用
示例
console.log(__dirname)
输出
D:\vscode 学习html前端\全局变量的方法\乱敲
------------------------------
/Users/zj/Desktop/7/0329
绝对路径 VS 相对路径
#区分绝对路径和相对路径?
# 绝对路径 (不带斜杠)
\Users\zj\Desktop\7\0329
\zj\Desktop\7\0329
\Desktop\7\0329
----------------------------
# 相对路径有三种(点带斜杠或不带斜杠)
images/aaa.jpg
./images/aaa.jpg
../images/aaa.jpg
__filename
定义
1.全局变量 2.当前文件名
__filename
表示当前文件(模块)的名称。
- file: 文件
- Name: 名字
示例
console.log(__filename)
输出
D:\vscode 学习html前端\全局变量的方法\乱敲\__dirname.js
--------------
/Users/zj/Desktop/7/0329/1-global.js
内置模块 Path
定义
node:path
是一个内置模块。它提供了处理路径的API。路径分为:
- 文件路径
- 文件夹路径
使用path
模块,第一步做什么?
- 8大方法
1、path.basename()
定义:路径的最后一部分
语法
path.basename('路径','删除的后缀名')
返回值
返回 path
的最后一部分
示例
const path = require("node:path")
console.log(__filename);
console.log(path.basename(__filename));
console.log(path.basename(__filename,'.js'));
console.log(path.basename(__dirname));
输出
D:\vscode 学习html前端\全局变量的方法\乱敲\1basename.js
1basename.js
1basename
乱敲
----------
/Users/zj/Desktop/7/0329/2-path.js
2-path.js
2-path
0329
2、path.dirname(path)
定义
dirname()
用于返回当前目录的路径。
语法
path.dirname('path')
返回值:返回当前路径;
示例
const path=require("node:path")
console.log(path.dirname('path'));
输出
PS D:\vscode 学习html前端\全局变量的方法\乱敲> node 2path.dirname.js
.
PS D:\vscode 学习html前端\全局变量的方法\乱敲>
3、path.extname(path)
定义
返回的是当前文件的扩展名。
语法
path.extname(path)
返回值:当前文件夹的扩展名;
示例:
const path=require("node:path")
console.log(path.extname(__filename));
输出:
PS D:\vscode 学习html前端\全局变量的方法\乱敲> node 3path.extname.js
.js
PS D:\vscode 学习html前端\全局变量的方法\乱敲>
4、path.parse()
定义
parse()
方法:从路径字符串返回一个对象。
语法
path.parse('路径')
返回值
返回一个表示路径的对象。
示例
console.log(__filename);
console.log(path.parse(__filename));
输出
{
root: 'D:\\',
dir: 'D:\\vscode 学习html前端\\全局变
量的方法\\乱敲',
base: '4path.parse.js',
ext: '.js',
name: '4path.parse'
}
---------------------
{
root: '/',
dir: '/Users/zj/Desktop/7/0329',
base: '2-path.js',
ext: '.js',
name: '2-path'
}
5、path.format()
定义
format()
方法:从路径对象转路径字符串。
语法
path.format(路径对象)
返回值
返回路径字符串
示例
const obj = path.parse(__filename)
console.log(path.format(obj));
输出
PS D:\vscode 学习html前端\全局变量的方法\乱敲> node 5path.format.js
PS D:\vscode 学习html前端\全局变量的方法\乱敲>
6、path.join()
定义
join()
方法用于把路径片段连接为规范路径。
简言之:连接路径片段。
语法
path.join()
path.join('路径片段1','路径片段2',...)
返回值
返回一个拼接好的规范的路径
示例
const p1 = path.join('fold1','folder2','index.html')
console.log(p1);
const p2 = path.join('/fold1','folder2','index.html')
console.log(p2);
const p3 = path.join('/fold1','//folder2','index.html')
console.log(p3);
const p4 = path.join('/fold1','//folder2','./index.html')
console.log(p4);
const p5 = path.join('/fold1','//folder2','../index.html')
console.log(p5);
输出
PS D:\vscode 学习html前端\全局变量的方法\乱敲> node 6path.join.js
fold1\folder2\index.html
\fold1\folder2\index.html
\fold1\folder2\index.html
\fold1\folder2\index.html
\fold1\index.html
PS D:\vscode 学习html前端\全局变量的方法\乱敲>
-------------------
fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/index.html
7、path.isAbsolute()
定义
isAbsolute()
方法用于检测一个路径是否是绝对路径。
语法
path.isAbsolute(path)
返回
返回布尔值 :true 或 false
示例
const path=require("node:path")
console.log(path.isAbsolute(__filename));//true
console.log(path.isAbsolute('./data.json')); //false
---------------
const path=require("node:path")
console.log(path.isAbsolute(__filename));//true
console.log(path.isAbsolute(__dirname));//true
8、path.resolve()
定义
resolve()
方法用于解析为绝对路径。
语法
path.resolve([...paths])//路径片段
返回值
**
**返回绝对路径字符串
示例
const p1 = path.resolve('fold1','folder2','index.html')
folder1/folder2/index.html
/Users/zj/Desktop/7/0329/
/Users/zj/Desktop/7/0329/fold1/folder2/index.html
console.log(p1);
const p2 = path.resolve('/fold1','folder2','index.html')
console.log(p2);
const p3 = path.resolve('/fold1','/folder2','index.html')
console.log(p3);
const p4 = path.resolve('/fold1','//folder2','./index.html')
console.log(p4);
const p5 = path.resolve('/fold1','/folder2','../hello.html')
console.log(p5);
输出:
D:\vscode 学习html前端\全局变量的方法\乱敲\fold1\folder2\index.html
D:\fold1\folder2\index.html
D:\folder2\index.html
D:\folder2\index.html
D:\hello.html
FS模块(FS系统)
定义:
fs文件系统模块,允许操作计算机系统上的文件。
- 读取文件
- 创建文件
- 修改文件
- 删除文件
引入Fs文件系统
- 引入
引入基于 promise 的 API(标准):
import * as fs from 'node:fs/promises';
const fs = require('node:fs/promises');
引入回调和同步的 API(默认):
import * as fs from 'node:fs';
const fs = require('node:fs');
所有文件系统操作都具有同步、回调和基于 promise 的形式,并且可以使用 CommonJS 语法和 ES6 模块进行访问。
fs.readFile()
用于异步读取文件内容
语法:
fs.readFile("文件路径",callback)
fs.readFile("文件路径",(err,data)=>{if(err) console.log(data)})
返回值:返回读取到的内容
数据类型:buffer(二进制)
实例:
默认:
const content = fs.readFile("./data.txt",(err,data)=>{
if(err){
console.log(err);
}else{
console.log(data);//<Buffer 68 65 6c 6c 6f 20 77 64 6f 6c 64>
}
})//异步读取/
转文本:
const content = fs.readFile("./data.txt","utf-8",(err,data)=>{
if(err){
console.log(err);
}else{
console.log(data);//hello wdold
}
})//异步读取/
fs.writeFile()
语法:
fs.writeFile("要写入的文件","要写入的字符串",(err)=>{
if(err){
console.log(失败时返回err);
}else{
console.log("成功");
}
})
返回值:根据回调函数
实例:
const fs = require("node:fs")
fs.writeFile("./data.txt","cctv",(err)=>{
if(err){
console.log(err);
}else{
console.log("成功");
}
})
NPM是什么?
- NPM 是"Node Package Manager"的缩写,意思:Node软件包管理工具
- NPM的主要内容
- 安装软件包
- 删除软件包
- 分享你自己写的软件包(npmjs.com)
- NPM是世界上最大软件包平台。
- NPM的构成:
- 官网(https://npmjs.com): 查询软件包
- CLI(Command Line Interface):命令行交互工具
- 软件注册表:JS软件包的仓库
package是什么
- 意思:软件包
- 一个package由1个或多个module组成。
package.json是什么
用于描述你的模块文件。
用于配置你的模块文件。
package.json描述了如何使用模块文件。
一个pacakge(软件包)必须包含一个
package.json
文件。-
package.json文件的创建方法:
手动创建
半自动:npm init命令创建
自动:npm init --yes命令创建
node_modules
- 用于存储第三方模块的文件
- 打包项目发给别人之前,可删除node_modules文件夹,以减少文件体积。
- 注意:package.json和package-lock.json不能删
- 可使用
npm install
重新安装模块
module
- 模块就是一个js文件或文件夹
- 模块必须拥有
package.json
文件
第三方模块的使用方法
第一步:创建文件夹
mkdir buhaoqi-package
第二步:创建index.js
cd buhaoqi-package
New-item index.js
第三步:安装upper-case模块
npm install upper-case
第四步:修改index.js内容
const upperCase = require('upper-case').upperCase
function hello(name){
console.log(upperCase(`hello ${name},good good study!`));
}
hello('zhangsan')
module.exports = hello
第五步:运行index.js
node index
输出结果
HELLO ZHANGSAN,GOOD GOOD STUDY!
NPM(管理模块)详细版!NPM总结
- 定义:
- NPM: Node Package Manager Node缩写;
- 意思:软件包管理器;
- NPM就是Node.js平台的商店。
-NPM的主要内容: - 安装软件包;
- 删除安装包;
- 分享你自己的软件包;(npm.zs.com
) - NPM是世界上最大软件包平台;
- NPM的构成:
- 官网:https://npmjs.com:查询软件包;- CLi(Command Line Interface):命令行交互工具
- 软件注册表:JS软件包仓库;
module
- 模块就是一个js文件或文件夹
- 所有的模块必须拥有一个package.json
package
- 定义:
- 意思:软件包
- 一个package由一个或多个模块组成;
package.json (创建package方法有几种?)
- 1.clx-package(自定义手动创建软件包方法)
2.index.js //配置你的模块
3.package2.json;
- 2.npm init命令创建
- 3.npm init--yes命令创建
定义: - 用于描述你的模块文件;
- 用于配置你的模块文件;
- package.json描述了如何使用软件包;
- 一个package(软件包)必须包含一个package.json 文件;
示例:1.2.3
--------------------
// 1.clx-package(自定义手动创建软件包方法)
2.index.js //配置你的模块
3.package2.json;
-------------------
//2.半自动创建
PS D:\vscode 学习html前端\全局变量的方法\clx-pack> npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (clx-pack) clx-pack
version: (1.0.0) 1.0.0
description: clx hello package
entry point: (index.js) index.js
test command:
git repository:
keywords: "clx"
author: "clx-pack"
license: (ISC) "clx-pack"
Sorry, license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN <filename>".
license: (ISC)
About to write to D:\vscode 学习html前端\全局变量的方法\clx-pack\package.json:
{
"name": "clx-pack",
"version": "1.0.0",
"description": "clx hello package",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"\"clx\""
],
"author": "\"clx-pack\"",
"license": "ISC"
}
Is this OK? (yes) yes
PS D:\vscode 学习html前端\全局变量的方法\clx-pack>
--------------------
//3.全自动
PS D:\vscode 学习html前端\全局变量的方法\clx-pack> npm init --yes
Wrote to D:\vscode 学习html前端\全局变量的方法\clx-pack\package.json:
{
"name": "clx-pack",
"version": "1.0.0",
"description": "clx hello package",//关键词/依赖于模块
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"\"clx\""
],
"author": "\"clx-pack\"",
"license": "ISC"
}
PS D:\vscode 学习html前端\全局变量的方法\clx-pack>
版本号
NPM采用的是Sementic Version Controls系统
语法
X.Y.Z
1.1.3
初始版本号一般默认:0.1.0
正式发布:1.0.0
X : Major Version 主版本号:较大变化
Y: Minor Version 副版本号:增加了一个函数
Z: patch Version Bug版本号:修复bug
————————————————————————————
node_modules
- 用于存储第三方软件的文件夹;
http.createServer()
- 定义:用于创建一个NOde服务器。主要做了两件事:
- 处理请求
- 处理响应
- 语法:
http.createServer({选项对象},监听函数(回调函数))
- 选项对象:可选参数,是一个Object,通过选项对象,传入一些参数;
- 监听函数:是一个回调函数。当用户请求从端口进来后,该函数立刻被调用;
- Request对象:请求对象
- 包含已请求有关的信息;
- Reaponse对象:响应对象;
- 包含已响应有关的信息;
- 返回值:返回一个Server对象;
- 示例:
server.listen()
- 定义:监听端口
- 语法:
server.listen([port[, host[, backlog]]][, callback])
- `handle` [<Object>]
- `backlog` [<number>]
- `callback` [<Function>]
* 返回: [<net.Server>](http://url.nodejs.cn/DixUe8)
- 端口
- 主机名
-
1、res.setHeader()
- 定义:用于使用单个值设置响应头。设置响应头信息;(使用一个值)
特点 - 只能设置一个值
- 重复出现
- 优先级低于res.writeHeader()
- 语法:
- 返回值:无;
- 示例:
res.setHeader('Concent-Type',"text/html")
-------
res.setHeader('Concent-Type':"text/pilan")
--
res.setHeader('Concent-Type':"text/json")
2、res.write()
定义:写入数据
语法:
- 数据
- 字符编码
- 返回值:布尔值
3、res.writeHead()
- 定义:设置响应头信息;
特点 - 只能设置一个值
- 只能执行一次
- 优先级高于res.setHeader()
- 语法:
- 返回值:返回一个响应对象。以便链式调用;
- 示例:
4、res.end()
- 定义:用于通知服务器响应结束;??
- 语法:
responese.end([data[,encoding],
- 返回值:返回this
- 示例: