認(rèn)識(shí)全局變量方法

全局變量

__dirname

定義

1.全局變量 2.當(dāng)前目錄名
__dirname表示當(dāng)前文件(模塊)所在的目錄名稱。

  • Dir: directory 文件夾、目錄
  • Name: 名字

語(yǔ)法

console.log(__dirname) //全局直接調(diào)用

示例

console.log(__dirname)

輸出

D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲
------------------------------
/Users/zj/Desktop/7/0329

絕對(duì)路徑 VS 相對(duì)路徑

#區(qū)分絕對(duì)路徑和相對(duì)路徑?
# 絕對(duì)路徑 (不帶斜杠)
\Users\zj\Desktop\7\0329
\zj\Desktop\7\0329
\Desktop\7\0329
----------------------------
# 相對(duì)路徑有三種(點(diǎn)帶斜杠或不帶斜杠)
images/aaa.jpg
./images/aaa.jpg
../images/aaa.jpg

__filename

定義
1.全局變量 2.當(dāng)前文件名
__filename表示當(dāng)前文件(模塊)的名稱。

  • file: 文件
  • Name: 名字

示例

console.log(__filename)

輸出

D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲\__dirname.js
--------------
/Users/zj/Desktop/7/0329/1-global.js

內(nèi)置模塊 Path

定義

node:path 是一個(gè)內(nèi)置模塊。它提供了處理路徑的API。路徑分為:

  • 文件路徑
  • 文件夾路徑

使用path模塊,第一步做什么?

  • 8大方法

1、path.basename()

定義:路徑的最后一部分

語(yǔ)法

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 學(xué)習(xí)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()用于返回當(dāng)前目錄的路徑。

語(yǔ)法

path.dirname('path')

返回值:返回當(dāng)前路徑;

示例

const path=require("node:path")

console.log(path.dirname('path'));

輸出

PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲> node 2path.dirname.js
.
PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲>

3、path.extname(path)

定義

返回的是當(dāng)前文件的擴(kuò)展名。

語(yǔ)法

path.extname(path)

返回值:當(dāng)前文件夾的擴(kuò)展名;

示例:

const path=require("node:path")

console.log(path.extname(__filename));

輸出:

PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲> node 3path.extname.js
.js
PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲>

4、path.parse()

定義

parse() 方法:從路徑字符串返回一個(gè)對(duì)象。

語(yǔ)法

path.parse('路徑')

返回值

返回一個(gè)表示路徑的對(duì)象。

示例

console.log(__filename);
console.log(path.parse(__filename));

輸出

{
  root: 'D:\\',
  dir: 'D:\\vscode 學(xué)習(xí)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()方法:從路徑對(duì)象轉(zhuǎn)路徑字符串。

語(yǔ)法

path.format(路徑對(duì)象)

返回值

返回路徑字符串

示例

const obj = path.parse(__filename)
console.log(path.format(obj));

輸出

PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲> node 5path.format.js
PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\亂敲> 

6、path.join()

定義

join()方法用于把路徑片段連接為規(guī)范路徑。

簡(jiǎn)言之:連接路徑片段。

語(yǔ)法

path.join()
path.join('路徑片段1','路徑片段2',...)

返回值

返回一個(gè)拼接好的規(guī)范的路徑

示例

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 學(xué)習(xí)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 學(xué)習(xí)html前端\全局變量的方法\亂敲> 
-------------------
fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/folder2/index.html
/fold1/index.html

7、path.isAbsolute()

定義

isAbsolute()方法用于檢測(cè)一個(gè)路徑是否是絕對(duì)路徑。

語(yǔ)法

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()方法用于解析為絕對(duì)路徑。

語(yǔ)法

path.resolve([...paths])//路徑片段

返回值
**
**返回絕對(duì)路徑字符串

示例

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 學(xué)習(xí)html前端\全局變量的方法\亂敲\fold1\folder2\index.html
D:\fold1\folder2\index.html
D:\folder2\index.html
D:\folder2\index.html
D:\hello.html

FS模塊(FS系統(tǒng))

定義:
fs文件系統(tǒng)模塊,允許操作計(jì)算機(jī)系統(tǒng)上的文件。

  • 讀取文件
  • 創(chuàng)建文件
  • 修改文件
  • 刪除文件

引入Fs文件系統(tǒng)

  • 引入

引入基于 promise 的 API(標(biāo)準(zhǔn)):

import * as fs from 'node:fs/promises';
const fs = require('node:fs/promises');

引入回調(diào)和同步的 API(默認(rèn)):

import * as fs from 'node:fs';
const fs = require('node:fs');

所有文件系統(tǒng)操作都具有同步、回調(diào)和基于 promise 的形式,并且可以使用 CommonJS 語(yǔ)法和 ES6 模塊進(jìn)行訪問(wèn)。


fs.readFile()

用于異步讀取文件內(nèi)容
語(yǔ)法:

fs.readFile("文件路徑",callback)
fs.readFile("文件路徑",(err,data)=>{if(err) console.log(data)})

返回值:返回讀取到的內(nèi)容
數(shù)據(jù)類型:buffer(二進(jìn)制)
實(shí)例:

默認(rèn):
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>
    }
   
})//異步讀取/
轉(zhuǎn)文本:
const content = fs.readFile("./data.txt","utf-8",(err,data)=>{
    if(err){
        console.log(err);
    }else{
        console.log(data);//hello wdold
    }
   
})//異步讀取/

fs.writeFile()

語(yǔ)法:

fs.writeFile("要寫入的文件","要寫入的字符串",(err)=>{
  if(err){
        console.log(失敗時(shí)返回err);
    }else{
        console.log("成功");
    }
})

返回值:根據(jù)回調(diào)函數(shù)
實(shí)例:

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的主要內(nèi)容
    • 安裝軟件包
    • 刪除軟件包
    • 分享你自己寫的軟件包(npmjs.com)
  • NPM是世界上最大軟件包平臺(tái)。
  • NPM的構(gòu)成:
    • 官網(wǎng)(https://npmjs.com): 查詢軟件包
    • CLI(Command Line Interface):命令行交互工具
    • 軟件注冊(cè)表:JS軟件包的倉(cāng)庫(kù)

package是什么

  • 意思:軟件包
  • 一個(gè)package由1個(gè)或多個(gè)module組成。

package.json是什么

  • 用于描述你的模塊文件。

  • 用于配置你的模塊文件。

  • package.json描述了如何使用模塊文件。

  • 一個(gè)pacakge(軟件包)必須包含一個(gè)package.json文件。

  • package.json文件的創(chuàng)建方法:

    • 手動(dòng)創(chuàng)建

    • 半自動(dòng):npm init命令創(chuàng)建

    • 自動(dòng):npm init --yes命令創(chuàng)建

node_modules

  • 用于存儲(chǔ)第三方模塊的文件
  • 打包項(xiàng)目發(fā)給別人之前,可刪除node_modules文件夾,以減少文件體積。
  • 注意:package.json和package-lock.json不能刪
  • 可使用 npm install 重新安裝模塊

module

  • 模塊就是一個(gè)js文件或文件夾
  • 模塊必須擁有package.json文件

第三方模塊的使用方法

第一步:創(chuàng)建文件夾

mkdir buhaoqi-package  

第二步:創(chuàng)建index.js

cd buhaoqi-package
New-item index.js

第三步:安裝upper-case模塊

npm install upper-case

第四步:修改index.js內(nèi)容

const upperCase = require('upper-case').upperCase
function hello(name){
    console.log(upperCase(`hello ${name},good good study!`));
}
hello('zhangsan')
module.exports = hello

第五步:運(yùn)行index.js

node index

輸出結(jié)果

HELLO ZHANGSAN,GOOD GOOD STUDY!

NPM(管理模塊)詳細(xì)版!NPM總結(jié)

  • 定義:
  • NPM: Node Package Manager Node縮寫;
  • 意思:軟件包管理器;
  • NPM就是Node.js平臺(tái)的商店。
    -NPM的主要內(nèi)容:
  • 安裝軟件包;
  • 刪除安裝包;
  • 分享你自己的軟件包;(npm.zs.com
  • NPM是世界上最大軟件包平臺(tái);
  • NPM的構(gòu)成:
  • 官網(wǎng):https://npmjs.com:查詢軟件包;- CLi(Command Line Interface):命令行交互工具
  • 軟件注冊(cè)表:JS軟件包倉(cāng)庫(kù);

module

  • 模塊就是一個(gè)js文件或文件夾
  • 所有的模塊必須擁有一個(gè)package.json

package

  • 定義:
  • 意思:軟件包
  • 一個(gè)package由一個(gè)或多個(gè)模塊組成;

package.json (創(chuàng)建package方法有幾種?)

  • 1.clx-package(自定義手動(dòng)創(chuàng)建軟件包方法)
    2.index.js //配置你的模塊
    3.package2.json;

  • 2.npm init命令創(chuàng)建

  • 3.npm init--yes命令創(chuàng)建
    定義:
  • 用于描述你的模塊文件;
  • 用于配置你的模塊文件;
  • package.json描述了如何使用軟件包;
  • 一個(gè)package(軟件包)必須包含一個(gè)package.json 文件;
示例:1.2.3
--------------------
// 1.clx-package(自定義手動(dòng)創(chuàng)建軟件包方法)
     2.index.js //配置你的模塊
     3.package2.json;
-------------------
//2.半自動(dòng)創(chuàng)建
PS D:\vscode 學(xué)習(xí)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 學(xué)習(xí)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 學(xué)習(xí)html前端\全局變量的方法\clx-pack> 

--------------------

//3.全自動(dòng)
PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\clx-pack>  npm init --yes        
Wrote to D:\vscode 學(xué)習(xí)html前端\全局變量的方法\clx-pack\package.json:

{
  "name": "clx-pack",
  "version": "1.0.0",
  "description": "clx hello package",//關(guān)鍵詞/依賴于模塊
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "\"clx\""
  ],
  "author": "\"clx-pack\"",
  "license": "ISC"
}


PS D:\vscode 學(xué)習(xí)html前端\全局變量的方法\clx-pack> 

版本號(hào)

NPM采用的是Sementic Version Controls系統(tǒng)

語(yǔ)法

X.Y.Z

1.1.3
初始版本號(hào)一般默認(rèn):0.1.0
正式發(fā)布:1.0.0

X : Major Version 主版本號(hào):較大變化

Y: Minor Version 副版本號(hào):增加了一個(gè)函數(shù)

Z: patch Version Bug版本號(hào):修復(fù)bug
————————————————————————————

node_modules

  • 用于存儲(chǔ)第三方軟件的文件夾;

http.createServer()

  • 定義:用于創(chuàng)建一個(gè)NOde服務(wù)器。主要做了兩件事:
  • 處理請(qǐng)求
  • 處理響應(yīng)
  • 語(yǔ)法:
http.createServer({選項(xiàng)對(duì)象},監(jiān)聽函數(shù)(回調(diào)函數(shù)))
- 選項(xiàng)對(duì)象:可選參數(shù),是一個(gè)Object,通過(guò)選項(xiàng)對(duì)象,傳入一些參數(shù);
- 監(jiān)聽函數(shù):是一個(gè)回調(diào)函數(shù)。當(dāng)用戶請(qǐng)求從端口進(jìn)來(lái)后,該函數(shù)立刻被調(diào)用;
- Request對(duì)象:請(qǐng)求對(duì)象
 - 包含已請(qǐng)求有關(guān)的信息;
- Reaponse對(duì)象:響應(yīng)對(duì)象;
    - 包含已響應(yīng)有關(guān)的信息;
  • 返回值:返回一個(gè)Server對(duì)象;
  • 示例:


server.listen()

  • 定義:監(jiān)聽端口
  • 語(yǔ)法:
server.listen([port[, host[, backlog]]][, callback])
- `handle` [<Object>]
- `backlog` [<number>]
-  `callback` [<Function>]
*   返回: [<net.Server>](http://url.nodejs.cn/DixUe8)

- 端口
- 主機(jī)名
- 


1、res.setHeader()

  • 定義:用于使用單個(gè)值設(shè)置響應(yīng)頭。設(shè)置響應(yīng)頭信息;(使用一個(gè)值)
    特點(diǎn)
  • 只能設(shè)置一個(gè)值
  • 重復(fù)出現(xiàn)
  • 優(yōu)先級(jí)低于res.writeHeader()
  • 語(yǔ)法:

  • 返回值:無(wú);
  • 示例:
res.setHeader('Concent-Type',"text/html")
-------
res.setHeader('Concent-Type':"text/pilan")
--
res.setHeader('Concent-Type':"text/json")

2、res.write()

  • 定義:寫入數(shù)據(jù)

  • 語(yǔ)法:

- 數(shù)據(jù)
- 字符編碼
  • 返回值:布爾值

3、res.writeHead()

  • 定義:設(shè)置響應(yīng)頭信息;
    特點(diǎn)
  • 只能設(shè)置一個(gè)值
  • 只能執(zhí)行一次
  • 優(yōu)先級(jí)高于res.setHeader()
  • 語(yǔ)法:

  • 返回值:返回一個(gè)響應(yīng)對(duì)象。以便鏈?zhǔn)秸{(diào)用;
  • 示例:

4、res.end()

  • 定義:用于通知服務(wù)器響應(yīng)結(jié)束;??
  • 語(yǔ)法:
responese.end([data[,encoding],
  • 返回值:返回this
  • 示例:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容