目次
Node での Path モジュールの使用
一般的に使用される Path メソッド
path.relative()
跨操作系统路径和 URL
ホームページ ウェブフロントエンド jsチュートリアル Node.js のパス モジュールと一般的なメソッドについての簡単な説明

Node.js のパス モジュールと一般的なメソッドについての簡単な説明

Aug 24, 2021 am 10:28 AM
node.js パスモジュール

この記事では、Node.js の Path モジュールを理解し、Path モジュールの使用法と一般的に使用される Path メソッドを紹介します。

Node.js のパス モジュールと一般的なメソッドについての簡単な説明

Node.js path module は、オペレーティング システムに依存しない方法でファイル システム パスを操作するのに役立つ組み込みモジュールです。 OSX、Linux、および Windows をサポートする CLI ツールを構築する場合、Path モジュールは不可欠です。 [推奨学習: "nodejs チュートリアル "]

Linux 上でのみ実行されるバックエンド サービスを構築している場合でも、パス モジュールはパスを操作する際のエッジ ケースを回避するのに役立ちます。

以下では、パス モジュールを使用するための一般的なパターンと、パスを文字列に操作する代わりにパス モジュールを使用する必要がある理由について説明します。

Node での Path モジュールの使用

Path モジュールで最も一般的に使用されるメソッドは、path.join() です。このメソッドは、以下に示すように、1 つ以上のパス セグメントを文字列に結合します。

const path = require('path')

path.join('/path', 'to', 'test.txt') // '/path/to/test.txt'
ログイン後にコピー

なぜ文字列連結の代わりに path.join() メソッドを使用する必要があるのか​​疑問に思われるかもしれません。

'/path' + '/' + 'to' + '/' + 'test.txt' // '/path/to/test.txt'

['/path', 'to', 'test.txt'].join('/') // '/path/to/test.txt'
ログイン後にコピー

主な理由は 2 つあります:

  • Windows サポートのため 。 Windows では、パス区切り文字としてスラッシュ (/) ではなくバックスラッシュ (\) が使用されます。 path.join() がこれを処理します。 Windows だけでなく、Linux や OSX でも path.join('data', 'test.txt')'data/test.txt' を返すためです。
  • エッジケースの処理用。ファイル システム パスを使用する場合、多くの特殊なケースが発生します。たとえば、2 つのパスを手動で連結しようとすると、誤ってパス区切り文字が重複してしまう可能性があります。 path.join() このメソッドは、次のように先頭と末尾のスラッシュを処理します。
path.join('data', 'test.txt') // 'data/test.txt'
path.join('data', '/test.txt') // 'data/test.txt'
path.join('data/', 'test.txt') // 'data/test.txt'
path.join('data/', '/test.txt') // 'data/test.txt'
ログイン後にコピー

一般的に使用される Path メソッド

#path モジュールには、ファイル拡張子やディレクトリなどのパス コンポーネントを抽出するためのメソッドもいくつかあります。

path.extname() メソッドはファイル拡張子を文字列として返します:

path.extname('/path/to/test.txt') // '.test'
ログイン後にコピー

2 つのパスを連結するのと同じように、取得されるファイル拡張子は最初に表示されるよりも小さくなります。複雑。

パスが

. で終わる場合、. が返されます。ファイルに拡張子がなく、. で終わっていない場合、またはファイルに拡張子がない場合は、null 値が返されます。

path.extname('/path/to/index.') // '.'

path.extname('/path/to/README') // ''

path.extname('/path/to/.gitignore') // ''
ログイン後にコピー

path モジュールには、ファイル名 (拡張子を含む) とディレクトリをそれぞれ取得する

path.basename() メソッドと path.dirname() メソッドもあります。

path.basename('/path/to/test.txt') // 'test.txt'

path.dirname('/path/to/test.txt') // '/path/to'
ログイン後にコピー

path.parse() このメソッドは、拡張子やディレクトリを含む 5 つの異なるコンポーネントに分割されたパスを含むオブジェクトを返します。 path.parse() このメソッドは、拡張子なしのファイル名を取得するメソッドでもあります。

path.parse('/path/to/test.txt')

/*
{
  root: '/',
  dir: '/path/to',
  base: 'test.txt',
  ext: '.txt',
  name: 'test'
}
*/
ログイン後にコピー

path.relative()

path.join()path.extname のように使用します() このような方法は、ファイル パスを使用するほとんどのユースケースをカバーします。ただし、パス モジュールには、path.relative() などのより高度なメソッドがいくつかあります。

path.relative(from, to) メソッドは、現在の作業ディレクトリに基づいて、from から to までの相対パスを返します。 fromto が両方とも同じパスに解決される場合 (それぞれ path.resolve() を呼び出した後)、長さ 0 の文字列が返されます。

// 返回相对于第一条路径的第二条路径的路径
path.relative('/app/views/home.html', '/app/layout/index.html') // '../../layout/index.html'
ログイン後にコピー

path.relative() メソッドは、あるディレクトリに対する相対パスが指定されているが、別のディレクトリに対する相対パスが必要な場合に便利です。たとえば、一般的なファイル システム監視ライブラリ Chokidar は、監視対象ディレクトリへの相対パスを提供します。

const watcher = chokidar.watch('mydir')

// 如果用户添加 mydir/path/to/test.txt,则会打印 mydir/path/to/test.txt
watcher.on('add', path => console.log(path))
ログイン後にコピー

だからこそ、

Chokidar ツールが頻繁に使用されます。たとえば、一般的な Gatsby または webpack も内部で path.relative() メソッドを使用します。

たとえば、Gatsby は

path.relative() メソッドを使用して、静的ファイル ディレクトリの同期を支援します。

export const syncStaticDir = (): void => {
  const staticDir = nodePath.join(process.cwd(), `static`)
  chokidar
    .watch(staticDir)
    .on(`add`, path => {
      const relativePath = nodePath.relative(staticDir, path)
      fs.copy(path, `${process.cwd()}/public/${relativePath}`)
    })
    .on(`change`, path => {
      const relativePath = nodePath.relative(staticDir, path)
      fs.copy(path, `${process.cwd()}/public/${relativePath}`)
    })
}
ログイン後にコピー

ここで、ユーザーが新しいファイル

main.jsstatic ディレクトリに追加するとします。 Chokidar は、パスを static/main.js に設定して on('add') イベント ハンドラーを呼び出します。ただし、ファイルを /public にコピーする場合、追加の static/ は必要ありません。

Call

path.relative('static', 'static/main.js') static を基準とした相対的な static/main.js を返します。 static の内容を public にコピーするパス。

跨操作系统路径和 URL

默认情况下,path 模块会根据 Node 进程运行的操作系统自动在 POSIX(OSX、Linux)和 Windows 模式之间切换。

但是,path 模块确实可以在 POSIX 上使用 Windows path 模块,反之亦然。path.posixpath.win32 属性分别包含 path 模块的 Posix 和 Windows 版本。

// 返回 'path\to\test.txt',与操作系统无关
path.win32.join('path', 'to', 'test.txt')

// 返回 'path/to/test.txt',与操作系统无关
path.posix.join('path', 'to', 'test.txt')
ログイン後にコピー

在大多数情况下,根据检测到的操作系统自动切换 path 模块是正确的行为。但是,使用 path.posixpath.win32 属性对于总是希望输出 Windows 或 Linux 样式路径的测试或应用程序可能会有所帮助。

例如,一些应用程序使用 path.join()path.extname() 等方法处理 URL 路径。

// 'https://api.mydomain.app/api/v2/me'
'https://api.mydomain.app/' + path.join('api', 'v2', 'me')
ログイン後にコピー

这种方法适用于 Linux 和 OSX,但如果有人试图将您的应用程序部署到一些无服务器上会发生什么?

你最终会得到 https://api.mydomain.app/api\v2\me,这不是有效的 URL!如果使用 path 模块操作 URL,则应使用 path.posix

原文地址:https://juejin.cn/post/6997799224213504037

作者:lio_zero

更多编程相关知识,请访问:编程视频!!

以上がNode.js のパス モジュールと一般的なメソッドについての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

最適な Node.js Docker イメージを選択する方法について話しましょう。 最適な Node.js Docker イメージを選択する方法について話しましょう。 Dec 13, 2022 pm 08:00 PM

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Nov 16, 2022 pm 08:34 PM

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Nov 29, 2022 pm 08:44 PM

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

Nodeのイベントループについて話しましょう Nodeのイベントループについて話しましょう Apr 11, 2023 pm 07:08 PM

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

pkg を使用して Node.js プロジェクトを実行可能ファイルにパッケージ化する方法について説明します。 pkg を使用して Node.js プロジェクトを実行可能ファイルにパッケージ化する方法について説明します。 Dec 02, 2022 pm 09:06 PM

Nodejs実行可能ファイルをpkgでパッケージ化するにはどうすればよいですか?次の記事では、pkg を使用して Node プロジェクトを実行可能ファイルにパッケージ化する方法を紹介します。

See all articles