如何在 Deno 中优雅地处理输入和输出

Deno 是一个安全的 JavaScript 和 TypeScript 运行时环境,它支持异步 I/O 操作、跨平台支持和内置的模块加载器。在 Deno 中处理输入和输出是非常重要的操作,因为它们是与用户的主要交互方式之一。本文将详细介绍如何在 Deno 中优雅地处理输入和输出,帮助读者掌握这个关键技能。

输入和输出的基础知识

在 Deno 中,输入和输出通常是指从命令行读取用户输入(标准输入)或将结果输出到控制台(标准输出)。我们可以使用 Deno.stdinDeno.stdout 来访问它们。Deno.stdin 是一个 Deno.File 对象,可以通过监听其 readable 事件从中读取数据,而 Deno.stdout 是一个插入式的 WriteCloser,可以使用 .write() 方法将数据写入。

那么,如何读取用户在命令行中输入的数据呢?可以使用 Deno.readLine() 方法。这个方法返回一个 Promise,一旦读取到数据,它就会被解析为一个字符串。在写入数据时,我们可以使用 .write() 方法将数据写入到 Deno.stdout 中。

以下是一个简单的示例程序:

----- ----- - ----- --------------------- ---
--------------------- -----------

----- ------- - --- --------------
----- ---- - ------------------------
----- ------------------------

这个程序首先使用 Deno.readLine() 方法读取用户的输入,并使用 console.log() 方法将结果输出到控制台。然后,它使用 TextEncoder 将要输出的数据编码,并使用 .write() 方法将数据写入到 Deno.stdout 中。

以交互式方式读取输入

在命令行工具中,交互式读取输入是非常常见的操作。在 Deno 中,我们可以使用 prompt() 方法读取交互式输入。这个方法类似于 readline(),但它不需要参数,并返回读取到的字符串。

以下是一个简单的示例程序:

----- ---- - ---------------- ---
---------------------------

这个程序首先使用 prompt() 方法读取用户的输入,并将结果输出到控制台。

处理控制台输出

在 Deno 中,我们可以使用 console.log() 方法将信息输出到控制台。此外,我们还可以使用 Deno.writeAllSync() 方法将数据写入到文件或其他数据流中,例如使用 Deno.openSync() 打开一个文件并传递数据。

以下是一个简单的示例程序:

----- --- - ----------
-----------------

----- ---- - ----------------------------- - ------ ---- ---
--------------------------- --- ---------------------------
---------------------

这个程序首先使用 console.log() 方法将消息写入到控制台,然后使用 Deno.openSync() 方法打开一个名为 output.txt 的文件并使用 Deno.writeAllSync() 将消息写入到里面,最后使用 Deno.close() 方法关闭文件句柄。

处理文件输入和输出

在 Deno 中,我们可以使用 Deno.readFile()Deno.writeFile() 方法读取和写入文件。这些方法都是异步的,并且返回 Promise,因此我们需要使用 async/await.then() 方法来处理它们的结果。

以下是一个简单的示例程序:

----- -------- - ----- -----------------------------
--------------- --------------------------------

----- ------------------------------ --- --------------------------- ----------
----- ---------- - ----- ------------------------------
--------------- ----------------------------------

这个程序首先使用 Deno.readFile() 方法读取 input.txt 文件中的内容,并使用 TextDecoder 解码内容并将其输出到控制台。然后,它使用 Deno.writeFile() 方法将字符串 "Hello World!" 写入到 output.txt 文件中,并使用再次使用 Deno.readFile() 方法读取文件内容,并使用 TextDecoder 解码内容并将其输出到控制台。

总结

在本文中,我们探讨了如何在 Deno 中优雅地处理输入和输出,并详细讲述了如何读取用户输入、以交互式方式读取输入、处理控制台输出以及处理文件输入和输出。我们希望这些技巧对读者学习和掌握 Deno 技术非常有帮助。同时,请注意,本文只是介绍了 Deno 的入门知识,您还可以深入研究文件读写、HTTP 请求等其他方面的内容。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6469a915968c7c53b0983d76


猜你喜欢

  • 在 React Native 项目中使用 Babel7 加装饰器的应用实例

    随着React Native的持续发展,越来越多的开发者开始探索如何在RN项目中使用一些前端现代化的技术,比如ES6/7和装饰器。而Babel则是其中极为重要的一环,它使我们可以在RN项目中使用ES6...

    1 年前
  • 在 iOS 上使用 Material Design 组件出现的样式问题解决方法

    随着 Material Design 在移动端的普及,越来越多的移动应用开始使用 Material Design 组件。然而,在 iOS 上使用 Material Design 组件时,可能会遇到样式...

    1 年前
  • ES11 之 新增类型化数组函数

    在 ES11 中,新增了一些类型化数组函数,包括 from, of, slice, filter, map, reduce, reduceRight, every, some, find, findI...

    1 年前
  • GraphQL 多语言支持最佳实践

    GraphQL 是一种面向 API 的查询语言,与传统 RESTful API 相比,其具有强大的类型检查能力、可组合性和灵活性,因此近年来逐渐成为前端开发的热门选择。

    1 年前
  • 在 Koa2 中使用 Swagger 构建 API 文档

    作为一名前端开发人员,我们经常会需要编写一些 RESTful API 以供后端服务调用,同时为了方便后端服务的理解和调用,为我们的 API 编写 API 文档也显得尤为重要。

    1 年前
  • 浅谈 Server-Sent Events 和 WebSocket 的区别

    作为前端开发者,我们经常需要使用一些实时通信的工具,例如长连接、短连接等。在这里,我们要讨论 Server-Sent Events 和 WebSocket 这两个工具之间的区别。

    1 年前
  • JS 异步操作 ——Promise & ES8 之 Async/Await

    JS 异步操作 ——Promise & ES8 之 Async/Await 在现代 Web 开发中,JavaScript 通常是最常用的前端语言之一。而 JavaScript 的异步操作是 W...

    1 年前
  • Docker 学习网络篇(基础篇)

    对于 Docker 新手来说,学习 Docker 的网络模式可能是一个难点。Docker 的网络模式是完全独立于主机网络的,其网络架构是高级应用程序的基础,也是容器之间通信的基础。

    1 年前
  • Angular Material Table 使用及其实现思路

    Angular Material 是 Angular 官方出品的一套 UI 组件库,提供了丰富的组件和样式,其中包含 Material Design 风格的 table 组件,可以轻松地创建美观、高性...

    1 年前
  • # 如何在 SASS 中使用 @mixin 创建响应式布局样式

    如何在 SASS 中使用 @mixin 创建响应式布局样式 随着移动互联网的发展,越来越多的网站需要兼容不同的设备和屏幕尺寸。为了让网站在不同的设备上都有良好的用户体验,响应式布局成为了前端开发中不可...

    1 年前
  • React-Create-App 2 中 ESLint+Prettier 集成指南

    本文主要介绍如何在 React-Create-App 2 中集成 ESLint 和 Prettier。ESLint 是一款常用的 JavaScript 静态代码检查工具,可以帮助开发者在编码过程中发现...

    1 年前
  • ES6 中的遍历器及其应用

    在ES6中,遍历器(Iterator)是一个非常有用的工具,它可以极大地简化我们对数据集合的迭代过程。本文将详细介绍ES6中遍历器的概念、遍历器对象的使用方法以及它们的应用场景,希望能够对前端开发者有...

    1 年前
  • OpenAPI 与 Headless CMS,为 API 管理保驾护航

    随着互联网的不断发展,越来越多的应用程序开始向前端转移,使得前端开发变得日益重要。前端的开发过程需要使用大量的 API 接口,而这些接口的管理和文档编制变得越来越重要。

    1 年前
  • Mongoose 如何进行数据的类型限制?

    Mongoose 是 Node.js 程序中最流行的 MongoDB ODM。它允许开发者使用 Node.js 操作 MongoDB 数据库,并提供了一些类型验证功能,以确保开发者创建了正确格式的文档...

    1 年前
  • Serverless 应用中如何处理时区问题

    引言 在 Serverless 应用中处理时区问题是一个常见的难点。由于 Serverless 应用具有分散的计算资源和分布式的部署环境,使得时区问题变得更加复杂。

    1 年前
  • ES9 中的 for await...of 循环和异步迭代器的应用

    随着 JavaScript 应用场景的不断扩大,异步编程已经成为了前端开发不可或缺的一部分。同时,ES6 中推出的迭代器和生成器也为异步编程带来了方便和可读性。但是,它们存在一个问题,就是无法处理异步...

    1 年前
  • LESS 中如何使用!important 来覆盖默认样式

    LESS 中如何使用 !important 来覆盖默认样式 CSS 是前端开发中最基础的语言之一,几乎每个网页都需要使用它。 而在 CSS 中,!important 是一个很重要的标记,它可以强制覆盖...

    1 年前
  • 如何利用 REM 单位实现响应式设计的自适应布局

    在现代 Web 开发中,响应式设计已经成为了标准。其主要目的是为不同设备和分辨率下的用户提供最佳的浏览体验。而自适应布局是实现响应式设计的基础。本文将介绍如何通过 REM 单位实现自适应布局。

    1 年前
  • Web Components 中如何实现可重用的表单项组件

    随着前端技术的发展,Web Components 成为了一种流行的前端组件开发方式。它能够有效地将一些常见的 UI 元素封装成组件,从而实现模块化和可重用性。本文将着重介绍 Web Component...

    1 年前
  • 对 Chai.expect.to.be.closeTo 方法的讲解

    作为前端开发人员,我们常常需要编写自动化测试脚本来确保代码质量和逻辑正确性。在编写测试用例时,我们需要检查数值类型的变量,例如浮点数,但由于机器精度的限制,进行相等判断时可能会出现一些意想不到的错误。

    1 年前

相关推荐

    暂无文章