教程CLI【免费下载链接】learnyounodeLearn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.项目地址https://gitcode.com/gh_mirrors/le/learnyounode点击查看免费下载本指南围绕 learnyounode 开源练习项目中的filtered_ls一题展开讲解如何用 Node.js 的fs.readdir()与path.extname()实现按扩展名过滤目录文件列表并输出到控制台。读完本文你将掌握异步 I/O 读取目录的标准写法、命令行参数的获取方式以及 learnyounode 自动化验证verify的运行机制。题目要求过滤目录文件列表在 learnyounode 的第 5 个练习对应exercises/filtered_ls目录中你需要编写一个程序实现以下功能打印出指定目录下的文件列表按照特定的文件扩展名对列表进行过滤将过滤后的结果打印到终端每个文件占一行必须使用异步 I/O。程序运行时需要接收两个命令行参数第一个参数目录路径如/path/to/dir/第二个参数文件扩展名如txt。需要注意第二个参数不会自带前导点号.也就是说传入的是txt而不是.txt。但过滤条件要求文件以.txt结尾所以需要在代码中自行拼接点号。filtered_ls完整的题目原文位于 problem.pl.md波兰语版以及 problem.md英文版各语言版本如 problem.zh-cn.md内容完全一致。核心 APIfs.readdir 与 path.extnamefs.readdir(pathname, callback)fs.readdir()是 Node.jsfs模块提供的异步读取目录内容的方法它接收两个参数第一个参数目录路径pathname第二个参数回调函数 callback。回调函数签名为function callback (err, list) { /* ... */ }其中list是一个数组数组中的每个元素是该目录下的文件名字符串形式。完整 API 文档见仓库内的 docs-nodejs/fs.html。path.extname(path)path模块的extname方法可以返回一个路径或文件名的扩展名部分例如path.extname(index.html)返回.html。它的返回值包含前导点号这正是与命令行第二个参数需要互补的地方。path模块完整文档见 docs-nodejs/path.html。官方参考实现exercises/filtered_ls/solution/solution.js是本题的官方参考实现use strict const fs require(fs) const path require(path) const folder process.argv[2] const ext . process.argv[3] fs.readdir(folder, function (err, files) { if (err) return console.error(err) files.forEach(function (file) { if (path.extname(file) ext) { console.log(file) } }) })这个实现展示了几个关键点参数获取process.argv[2]取目录process.argv[3]取扩展名。注意process.argv的前两个元素是 Node 运行时保留的系统信息可执行文件路径与脚本路径所以程序参数的起点是下标 2。扩展名拼接const ext . process.argv[3]将第二个参数补上点号与path.extname()的返回值格式对齐。异步回调fs.readdir(folder, callback)在回调中统一处理结果与错误。逐行输出console.log(file)天然在每条文件名后追加换行符满足一个文件一行的要求。另一种等价写法filter 链式调用test/filtered_ls/valid_01.js给出了一个用Array.prototype.filter实现的等价答案const fs require(fs) const path require(path) fs.readdir(process.argv[2], function (err, list) { if (err) { console.log(err) } list.filter(function (file) { return path.extname(file) . process.argv[3] }).forEach(function (file) { console.log(file) }) })两种写法思路一致先readdir拿到完整文件列表再用path.extname(file) . ext做精确匹配。区别只在于官方解法用forEach内嵌if而测试用例用filter生成新数组。易错点同步 I/O 会导致验证失败题目明确要求必须使用异步 I/O。test/filtered_ls/invalid_01.js展示了典型的反例——使用同步 APIconst list fs.readdirSync(process.argv[2])learnyounode 的验证机制见exercises/filtered_ls/exercise.js会在子进程内通过exercises/my_first_io/wrap.js包装所有 fs 方法记录用户实际调用了哪些 API。exercise.addVerifyProcessor中的校验逻辑如下若检测到任何以Sync结尾的调用如readdirSync判定 FAIL若检测到异步调用如readdir判定 PASS若两者都没有检测到即根本没调用 fs 模块同样判定 FAIL这是 nodeschool 社区的已知边界情况见 exercise.js 中引用的 GitHub issue 讨论。因此即便readdirSync能输出同样的结果也会因为使用了同步 I/O而无法通过验证。另一个反例是test/filtered_ls/invalid_02.js它通过child_process.exec(ls -1 ...)调用系统命令来列目录。从wrap.js的源码看它只包装fs、fs.promises与util的调用不会记录exec——这同样无法满足使用fs.readdir()异步 I/O的考察目标。验证机制与自动化测试运行时如何构造测试数据exercises/filtered_ls/exercise.js在运行前会在系统临时目录下创建_learnyounode_pid测试目录使用os.tmpdir()与当前进程 pid 保证唯一性依据 file-list.json 中预置的 15 个文件名如learnyounode.dat、learnyounode.txt、README.md、w00t.txt、data.json等逐一写入测试文件内容为nothing to see here通过submissionArgs.unshift(md)与unshift(testDir)把目录路径与扩展名md注入被验证程序的命令行参数中。也就是说实际验证时你的程序会收到testDir和md两个参数只有扩展名为.md的文件例如README.md应被输出。verify 命令编写好filtered-ls.js后通过以下命令验证$ learnyounode verify filtered-ls.js根据 README.md 的使用说明learnyounode verify只会验证当前选中的练习对应的预期输出如果想在验证前查看题目说明可以先运行learnyounode用方向键与回车选中练习。验证通过会显示 PASS失败则会输出 FAIL 及失败原因例如提示使用了fs.readdirSync()。动手实验完整的实战流程安装 learnyounode 并启动运行learnyounode在课程列表中选择FILTERED LS练习进入后终端会打印本题的说明与提示。创建filtered-ls.js写入官方参考实现或你自己的异步写法。先用 Node 直接自测需要先准备测试目录与文件例如$ mkdir -p /tmp/filter-test $ touch /tmp/filter-test/a.txt /tmp/filter-test/b.md /tmp/filter-test/c.json $ node filtered-ls.js /tmp/filter-test txt预期输出为a.txt一行。 4. 运行learnyounode verify filtered-ls.js提交验证观察 PASS/FAIL 结果。小结filtered_ls练习的核心目标有三一是掌握fs.readdir()的异步回调用法二是理解process.argv的参数下标规则前两项为系统信息三是学会用path.extname()精确匹配扩展名。配套的验证机制exercise.js 与 wrap.js会强制检查 fs 调用的同步/异步属性确保学习者真正用异步 I/O 完成目录读取——这也是本题区别于my_first_io同步读取文件和my_first_async_io异步读取文件的关键考察点。赞分享教程CLI【免费下载链接】learnyounodeLearn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.项目地址https://gitcode.com/gh_mirrors/le/learnyounode点击查看免费下载相关推荐掌握Node.js命令行参数learnyounode Baby Steps练习详解掌握Node.js命令行参数learnyounode Baby Steps练习详解 想要快速掌握Node.js命令行参数处理技巧吗learnyounode的教程CLILearnYouNode 教程模块化文件过滤程序开发指南LearnYouNode 教程模块化文件过滤程序开发指南 痛点为什么需要模块化开发 你是否曾经遇到过这样的场景代码越写越长功能越来越复杂维护起来越来教程CLISwiftCrossUI 项目常见问题解决方案SwiftCrossUI 项目常见问题解决方案 SwiftCrossUI 是一个开源项目旨在提供一个跨平台的声明式 UI 框架灵感来自于 SwiftUI。该教程CLI上一篇OBS Studio 模块ModuleAPI 参考libobs 插件的声明、导出与加载全解下一篇70亿参数引爆企业智能新纪元IBM Granite-4.0-H-Tiny轻量化部署实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
2026最新wordpress跳转到老域名安全坑位解析 2026最新wordpress跳转到老域名安全坑位解析 网站做好了没人访问,这往往是表象,深层原因可能是你的流量入口被劫持或重定向配置混乱,导致搜索引擎无法正确抓取新站权重。2026最新的安全态势显示,WordPress作为全球市场占有率最… · 2026/9/28 2:54:07
OpenPencil Vue SDK 属性面板开发指南:从无头原语到变量绑定的完整实战 前端桌面应用AI 应用MCP 服务 【免费下载链接】open-pencil AI-native design editor. Open-source Figma alternative. 项目地址: https://gitcode.com/gh_mirrors/op/open-pencil 点击查看 免费下载 open-pencil/vue 的属性面板(Property Panels&… · 2026/9/28 2:54:07
顺义本土正骨名医——苏荫来的故事 在顺义本地骨伤正骨领域,有这样一位深耕三十余年的实力派老医者,一身古法正骨手艺,一手传承绝活,专治各类筋骨伤痛,凭借精准的手法、扎实的疗效、踏实的行医作风,深得邻里百姓信赖与认可。他就是杏园金方首… · 2026/9/28 3:29:27
2026实测百度网盘直链助手脚本,速度超越PanDownload工具 随着我们手头的各种文档和视频资料越来越大,网盘在数据流转中扮演的角色也越来越重要。不管是工作交接还是备份生活点滴,它都帮了我们不少忙。
不过在日常使用中,偶尔遇到下载变慢也确实会让人感到有些苦恼。面对这种现象我们除了可以配合Pa… · 2026/9/28 3:29:08
剪映操作|输入文字后,能不能自动生成虚拟主播、配音和字幕 适用对象:AI视频生成任务的创作者。本文只处理“输入文字后,能不能自动生成虚拟主播、配音和字幕?”这一件事。先确定这一条要解决什么先给结论:处理“输入文字后,能不能自动生成虚拟主播、配音和字幕?”&a… · 2026/9/28 3:28:21
运算符 文件操作 6 运算符:算数运算: - * / % ////:整除%:求余比较运算:> < > < !赋值运算 : - *a21
b2
a,bb,a#只适合python
print(a)#2
print(b)#21逻辑运算:and or not当and,or… · 2026/9/28 3:27:47
字符集和编码 bytes 5 字符集和编码ascii——编排了128个文字字符,只需要7个0和1就可以表示了——1 byte8 bitANSI——每个字符 16 bit,2byteGBK编码Unicode:万国码utf-8:最短的字节长度8 英文:8bit,1 byte总结:as… · 2026/9/28 3:27:28
高效获取STM32开发参考方案:摆脱资料海洋,聚焦可落地项目 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 3:19:17
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
制作网页比较方便的软件怎么选?一文搞懂避坑指南 制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25