>웹 프론트엔드 >프런트엔드 Q&A >nodejs는 폴더 선택을 구현합니다.

nodejs는 폴더 선택을 구현합니다.

WBOY
WBOY원래의
2023-05-28 13:47:561455검색

Node.js는 웹 애플리케이션, 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를 사용하는 것 외에도 타사 모듈을 사용하여 폴더를 선택할 수도 있습니다. 다음은 폴더 선택을 위한 두 가지 일반적인 타사 모듈입니다.

  1. inquirer

inquirer는 웹 양식을 개발하는 것처럼 명령줄에서 대화형 선택 항목을 만들 수 있는 강력한 대화형 명령줄 사용자 인터페이스 라이브러리입니다. 다음은 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 메서드를 사용하여 모든 폴더를 필터링합니다. 그러면 각 폴더는 map 메소드를 통해 객체로 캡슐화되어 질문자의 선택 목록에 폴더 이름이 표시될 수 있습니다. 마지막으로 inquirer.prompt 메소드를 사용하여 사용자가 폴더를 선택할 수 있도록 선택 목록을 팝업하고, Answer.dir을 사용하여 사용자가 선택한 폴더의 이름을 가져옵니다.

  1. file-tree-select

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, inquirer 및 file-tree-select를 사용하여 폴더를 선택하는 세 가지 방법을 소개합니다. 소규모 프로젝트의 경우 기본 Node.js를 사용하면 대규모 프로젝트의 요구 사항을 충족할 수 있으며 타사 모듈을 사용하면 개발 효율성과 코드 품질을 향상시킬 수 있습니다.

위 내용은 nodejs는 폴더 선택을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.