Node.js ialah bahasa pengaturcaraan JavaScript bahagian belakang yang popular yang digunakan secara meluas untuk membina aplikasi web, API, alatan baris arahan, dsb. Dalam Node.js, kadangkala anda perlu membenarkan pengguna memilih folder untuk membaca, menulis dan mengubah suai dalam program. Artikel ini akan memperkenalkan cara menggunakan Node.js untuk memilih folder.
1. Gunakan Node.js asli untuk memilih folder
Node.js menyediakan modul fs untuk mengendalikan sistem fail. Dalam modul fs, terdapat kaedah yang dipanggil readdir, yang boleh membaca semua fail dan subdirektori dalam direktori. Berikut ialah contoh kod yang menggunakan Node.js asli untuk memilih folder:
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}不是一个有效的文件夹!`); } }); }); });
Kod pertama kali menggunakan kaedah fs.readdir untuk membaca folder yang ditentukan pengguna, dan kemudian menggunakan kaedah fs.stat untuk tentukan sama ada setiap fail Bukan folder. Akhir sekali, process.stdin digunakan untuk mendapatkan input pengguna Jika input pengguna ialah folder, ia bermakna pengguna memilih folder.
2. Gunakan modul pihak ketiga untuk memilih folder
Selain menggunakan Node.js asli, anda juga boleh menggunakan modul pihak ketiga untuk memilih folder. Berikut ialah dua modul pihak ketiga biasa untuk memilih folder.
inquirer ialah perpustakaan antara muka pengguna baris arahan interaktif yang berkuasa yang boleh membuat pilihan interaktif pada baris arahan seperti membangunkan borang web. Berikut ialah contoh kod yang menggunakan penyiasat untuk memilih folder:
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}]文件夹!`); });
Kod ini menggunakan kaedah fs.readdirSync untuk membaca semua folder dalam direktori semasa dan menggunakan kaedah penapis untuk menapis semua folder. Kemudian setiap folder dikapsulkan ke dalam objek melalui kaedah peta, supaya nama folder boleh dipaparkan dalam senarai pilihan penyiasat. Akhir sekali, gunakan kaedah inquirer.prompt untuk memaparkan senarai pilihan untuk membenarkan pengguna memilih folder dan gunakan answer.dir untuk mendapatkan nama folder yang dipilih oleh pengguna.
file-tree-select ialah pemalam pemilih fail yang dibina pada inquirer dan node-file-tree. Ia boleh memaparkan pepohon fail dalam direktori semasa pada baris arahan, dan pengguna boleh memilih folder melalui anak panah atas dan bawah serta bar ruang papan kekunci. Berikut ialah contoh kod yang menggunakan fail-tree-select untuk memilih folder:
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}]文件夹!`); });
Kod pertama kali menggunakan kaedah path.resolve untuk menyelesaikan nama folder yang dimasukkan oleh pengguna ke dalam laluan mutlak. Kemudian gunakan kaedah fileTreeSelect untuk memaparkan pepohon fail dalam direktori semasa, dan pengguna boleh menggunakan operasi papan kekunci untuk memilih folder. Akhir sekali, gunakan kaedah .then untuk mendapatkan laluan folder yang dipilih oleh pengguna.
3. Ringkasan
Memilih folder ialah operasi biasa dalam Node.js. Artikel ini memperkenalkan tiga cara untuk memilih folder menggunakan Node.js asli, inquirer dan file-tree-select. Untuk projek kecil, menggunakan Node.js asli boleh memenuhi keperluan untuk projek besar, menggunakan modul pihak ketiga boleh meningkatkan kecekapan pembangunan dan kualiti kod.
Atas ialah kandungan terperinci nodejs melaksanakan pemilihan folder. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!