认识全局变量方法

全局变量

__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
  • 示例:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容