Node.js は、Web アプリケーション、API、コマンド ライン ツールなどの構築に広く使用されている、人気のあるバックエンド JavaScript プログラミング言語です。 Node.js では、プログラム内で読み取り、書き込み、変更するフォルダーをユーザーに選択させる必要がある場合があります。この記事ではNode.jsを使ってフォルダーを選択する方法を紹介します。
1. ネイティブ Node.js を使用してフォルダー選択を実装します
Node.js は、ファイル システムを操作するための fs モジュールを提供します。 fs モジュールには、ディレクトリ内のすべてのファイルとサブディレクトリを読み取ることができる readdir と呼ばれるメソッドがあります。以下は、ネイティブ Node.js を使用してフォルダーを選択するコード例です。
const fs = require('fs'); const path = require('path'); let dir = process.argv[2] || '.'; fs.readdir(dir, (err, files) => { if (err) throw err; console.log('请选择一个文件夹:'); files.forEach(file => { let filePath = path.join(dir, file); fs.stat(filePath, (err, stats) => { if (err) throw err; if (stats.isDirectory()) { console.log(`[${file}]`); } else { console.log(file); } }); }); process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { data = data.trim(); let filePath = path.join(dir, data); fs.stat(filePath, (err, stats) => { if (err) throw err; if (stats.isDirectory()) { process.stdin.pause(); console.log(`已选择[${data}]文件夹!`); } else { console.log(`${data}不是一个有效的文件夹!`); } }); }); });
コードは、最初に fs.readdir メソッドを使用してユーザー指定のフォルダーを読み取り、次に fs.stat メソッドを使用して各ファイルがフォルダーではないかどうかを判断します。最後に、process.stdin はユーザーの入力を取得するために使用されます。ユーザーの入力がフォルダーの場合は、ユーザーがフォルダーを選択したことを意味します。
2. サードパーティ モジュールを使用してフォルダーを選択する
ネイティブ Node.js を使用するだけでなく、サードパーティ モジュールを使用してフォルダーを選択することもできます。フォルダーを選択するための 2 つの一般的なサードパーティ モジュールを次に示します。
inquirer は、Web フォームの開発と同じようにコマンド ライン上で対話型の選択を作成できる、強力な対話型コマンド ライン ユーザー インターフェイス ライブラリです。以下は、inquirer を使用してフォルダーを選択するコード例です。
const inquirer = require('inquirer'); const fs = require('fs'); const path = require('path'); let dirs = fs .readdirSync('.') .filter(file => { return fs.statSync(file).isDirectory(); }) .map(dir => { return { name: `[${dir}]`, value: dir }; }); inquirer .prompt([ { type: 'list', name: 'dir', message: '请选择一个文件夹:', choices: dirs, }, ]) .then(answer => { console.log(`已选择[${answer.dir}]文件夹!`); });
このコードは、fs.readdirSync メソッドを使用して現在のディレクトリ内のすべてのフォルダーを読み取り、filter メソッドを使用してすべてのフォルダーをフィルターで除外します。次に、各フォルダーはマップ メソッドを通じてオブジェクトにカプセル化され、フォルダー名が問い合わせ者の選択リストに表示されるようになります。最後に、inquirer.prompt メソッドを使用して選択リストをポップアップし、ユーザーがフォルダーを選択できるようにし、answer.dir を使用してユーザーが選択したフォルダーの名前を取得します。
file-tree-select は、inquirer と node-file-tree に基づいて構築されたファイル セレクター プラグインです。コマンドラインで現在のディレクトリにあるファイルツリーを表示でき、ユーザーはキーボードの上下矢印とスペースバーを使用してフォルダーを選択できます。以下は、file-tree-select を使用してフォルダーを選択するコード例です。
const fileTreeSelect = require('file-tree-select'); const path = require('path'); let dir = process.argv[2] || '.'; let absDir = path.resolve(dir); fileTreeSelect(absDir, { hideFiles: true }).then(result => { console.log(`已选择[${result}]文件夹!`); });
このコードでは、まず path.resolve メソッドを使用して、ユーザーが入力したフォルダー名を絶対パスに解決します。次に、fileTreeSelect メソッドを使用して、現在のディレクトリ内のファイル ツリーを表示し、ユーザーはキーボード操作を使用してフォルダーを選択できます。最後に、.then メソッドを使用して、ユーザーが選択したフォルダー パスを取得します。
3. 概要
フォルダーの選択は、Node.js の一般的な操作です。この記事では、ネイティブ Node.js、inquireer、file-tree-select を使用してフォルダーを選択する 3 つの方法を紹介します。小規模なプロジェクトの場合は、ネイティブ Node.js を使用することでニーズを満たすことができますが、大規模なプロジェクトの場合は、サードパーティ モジュールを使用することで開発効率とコードの品質を向上させることができます。
以上がnodejsはフォルダーの選択を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。