认识全局变量方法

全局变量

__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
  • 示例:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容