2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Ink 2.0 发布:命令行应用程序的 React

  • 2019-04-25
  • 本文字数:1419 字

    阅读完需:约 5 分钟

Ink 2.0发布:命令行应用程序的React

自称为“命令行接口 React”的 JavaScript 库 Ink 最近发布了第二个主要迭代版本。借助 Ink,开发者可以通过组装 React 组件来构建命令行应用程序,并充分利用他们的 React 知识和 React 生态系统。


Ink是一个 React 渲染器,可以将 React 组件树转成字符串,然后输出到终端上。Ink 2.0 可以无缝支持 React 的某些特性,比如HooksContext,还可以与 React 生态系统中的其他重要组件(比如Redux)发生交互。


官方文档提供了如下的示例:


import React, {Component} from 'react';import {render, Color} from 'ink';
class Counter extends Component { constructor() { super(); this.state = { i: 0 }; }
render() { return ( <Color green> {this.state.i} tests passed </Color> ); }
componentDidMount() { this.timer = setInterval(() => { this.setState({ i: this.state.i + 1 }); }, 100); }
componentWillUnmount() { clearInterval(this.timer); }}
render(<Counter/>);
复制代码


终端上的输出:



Ink 2.0 提供了 7 个内置的组件。还有其他10个第三方组件也可用于开发终端应用程序,以及 14 个组件正在迁移到 Ink 2.0。这些可重用的组件提供了常用的终端用户界面布局和行文(文本输入框、进度条、微调器、确认输入框、滚动条、自动完成、文本动画、图像显示等)。这些组件也解决了其他一些较受关注的问题,比如链接、路由、动画和颜色。


Ink 2.0 使用了Yoga,一个实现了Flexbox的跨平台布局引擎。所以,每个元素就是一个 Flexbox 容器,可以使用相关的 Flexbox 参数(flexShrinkflexGrowflexDirection等等)。内置组件 Box 可用于配置布局。下列的组件:


import {render, Box, Text, Color} from 'ink';
const Flexbox = () => ( <Box padding={2} flexDirection="column"> <Box> <Box width={14}> <Text bold>Total tests:</Text> </Box> 12 </Box>
<Box> <Box width={14}> <Text bold>Passed:</Text> </Box> <Color green>10</Color> </Box>
<Box> <Box width={14}> <Text bold>Failed:</Text> </Box> <Color red>2</Color> </Box> </Box>);
render(<Flexbox/>);
复制代码


将在终端上显示:



可以使用 ink-testing-library 来测试 Ink 组件。这个库的灵感来自 react-testing-library,一个可替代 Jest 来测试 React 组件的框架。可以像下面这样测试一个计数器应用程序:


import React from 'react';import {Text} from 'ink';import {render} from 'ink-testing-library';
const Counter = ({count}) => <Text>Count: {count}</Text>;
const {lastFrame, rerender} = render(<Counter count={0}/>);lastFrame() === 'Count: 0'; //=> true
rerender(<Counter count={1}/>);lastFrame() === 'Count: 1'; //=> true
复制代码


终端应用程序和命令行应用程序之间有一个区别。终端应用程序具有图形化用户界面,可能带有复杂的导航和输入功能。


基于blessed终端界面库构建的React-blessed可以让应用程序变成下面这样:



Ink 旨在简化命令行应用程序的界面,提供更简单的输入功能:



Ink 采用了 MIT 开源协议。开发者可以通过其GitHub主页贡献代码。


查看英文原文Ink: React for Interactive Command-Line Apps


2019-04-25 08:005333
用户头像

发布了 731 篇内容, 共 466.8 次阅读, 收获喜欢 2006 次。

关注

评论 1 条评论

发布
用户头像
秀啊 react
2019-04-25 10:15
回复
没有更多了
  • 特别加餐|用 ChatGPT 开发一个看板项目

    有不少同学希望了解AI,尤其是生成式AI对前端开发工作和前端工程师意味着什么,我个人也在关注相关领域的进展,正好趁着这次加餐的机会,跟你交流一下我的想法。

    2023-05-22

  • 这些 react 面试题你会吗,反正我回答的不好

    第二个参数是一个函数,该函数会在 setState函数调用完成并且组件开始重渲染时调用,可以用该函数来监听渲染是否完成。

    2022-09-24

  • React 组件设计模式 - 纯组件,函数组件,高阶组件

    如果你想写的组件只包含一个 render 方法,并且不包含 state,那么使用函数组件就会更简单。我们不需要定义一个继承于 React.Component 的类,我们可以定义一个函数,这个函数接收 props 作为参数,然后返回需要渲染的元素。

    2022-12-07

  • 加餐 01|留言区心愿单:真·子组件以及 jsx-runtime

    在本专栏选用的React 18.2.0版本和与它配套的CRA中,新JSX运行时也是被默认启用的。

    2022-09-20

  • CLI 新功能之多项目启动器

    大家好,我是小鑫同学。一位从事过Android开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感的

    2022-10-12

  • 编程小白也能快速掌握的 ArkUI JS 组件开发

    近期,Playground中ArkUI JS组件在线预览又有更新啦~

    2022-08-31

  • 小程序生命周期

    小程序生命周期分为 : 页面生命周期 + 组件生命周期它有四个阶段:

    2023-04-14

  • Angular tsconfig.json 文件里的 paths 用途

    Angular 项目目录中的 TSConfig 文件表明该目录是 TypeScript 或 JavaScript 项目的根目录。 TSConfig 文件可以是 tsconfig.json 或 jsconfig.json,两者都有相同的配置变量集。

    2022-09-08

  • 从 React 源码角度看 useCallback,useMemo,useContext

    useCallback和useMemo是一样的东西,只是入参有所不同。

    2023-02-28

  • 04|Vue 概览:Vue 哪些内容是你必须要掌握的?

    这节课我们就来揭开Vue的神秘面纱,一起来看看Vue里必须掌握的知识点,以及怎样学习Vue才更加高效。

    2023-05-01

  • vue 中的几个高级概念

    混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

    2023-02-28

  • 一天梳理完 React 所有面试考察知识点

    性能优化,永远是面试的重点,性能优化对于 React 更加重要

    2022-10-25

  • 22|物料组件的编译和管理:如何处理组件的多种模块格式?

    浏览器端把握在用户手里,我们无法预测实际代码在运行过程中会出现什么兼容问题,如果平台渲染能支持多重模块格式,就意味着可以做一些优化策略,在低版本浏览器中,就可以优先选择对应能支持的模块格式。

    2023-01-13

  • 构建工具 Gulp-lesson5

    大家好,我是小鑫同学。一位从事过 Android 开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感

    2022-10-13

  • 🧩 Vue 深入组件开发☞#异步组件#

    大家好,我是小鑫同学。一位从事过Android开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感的

    2022-10-12

  • 39|语法扩展:通过 JSX 来做语法扩展

    这节课我们就来看看JSX是如何用在Web UI开发中的。即使你不使用React,这样的模版模式也有很大的借鉴意义。

    2022-12-17

  • Qt | 控件之 QComboBox

    QComboBox组件的使用。

    2022-07-17

  • 从源码角度看 React-Hydrate 原理

    React 渲染过程,即ReactDOM.render执行过程分为两个大的阶段:render 阶段以及 commit 阶段。React.hydrate渲染过程和ReactDOM.render差不多,两者之间最大的区别就是,ReactDOM.hydrate 在 render 阶段,会尝试复用(hydrate)浏览器现有的 dom 节点,并相互

    2022-11-25

  • 32|Fabric:新渲染器的演进之路

    对核心渲染流程的持续迭代和优化,是 React Native 能够广受欢迎的重要原因之一。

    2023-01-01

  • Flutter 实现小姐姐渐现动画效果

    小姐姐使用渐现动效和我们捉迷藏了,还能从清纯风无痕过渡到高冷风哦!这就是 AnimatedOpacity 渐现动画组件的魅力

    2022-07-12

发现更多内容

优秀的程序员都有的十条特征,你中了几条?

禅道项目管理

项目管理 程序员 软件开发 项目管理软件

【洞见】智算操作系统,推进算力迈入普惠智算新时代

九章云极DataCanvas

《第一章、HarmonyOS介绍》02-HarmonyOS赋能套件介绍

清风论

华为 鸿蒙 HarmonyOS 鸿蒙应用开发

1688跨境寻源通系统案例:rakumart日本市场1688代采集运系统搭建

tbapi

1688代采系统 1688代采 1688代购系统 1688寻源通 1688寻源通系统

看完这篇,你的服务设计能力将再次进化!

京东零售技术

后端 企业号2024年7月PK榜

DataCanvas Alaya NeW智算操作系统震撼亮相WAIC 2024

九章云极DataCanvas

安全极客团队荣获首届“矩阵杯”网络安全大赛人工智能挑战赛“三等奖”

云起无垠

基于Rspack实现大仓应用构建提效实践|得物技术

得物技术

最佳实践 企业号2024年7月PK榜 Rspack 前端大仓

十大 Feature:腾讯云数据仓库TCHouse-D 2.0内核引擎全新升级

腾讯云大数据

TCHouse

tiup与prometheus迁移实践

神州数码

观测云产品更新 | 视图变量、仪表板、监控通知对象、日志索引等

观测云

监控 日志

使用这些API文档工具创建漂亮的API文档

幂简集成

API API 文档

深入解析 MS404:基于 ERC404 标准的独特原生资产

NFT Research

NFT ERC404

京东.Vision首登苹果Vision Pro 背后的技术探索

京东零售技术

Vision pro 企业号2024年7月PK榜

河南正规等保测评机构名称以及地址汇总

行云管家

等保 等保测评 河南

文献解读-多组学-第十八期|《整合 WES 和 RNA-Seq 数据以进行短变异发现》

INSVAST

基因数据分析 生信服务

华为云IoT端到端灰度发布,如何实现海量用户业务平稳过渡升级

华为云开发者联盟

微服务 物联网 华为云 华为云开发者联盟 企业号2024年7月PK榜

袋鼠云产品支持全栈信创适配,更加安全可靠、自主可控

袋鼠云数栈

信创 信创产业 信创生态 信创国产化 国产信创

基于Joint BERT模型的意图识别技术实践

神州数码

即时通讯技术文集(第41期):直播技术合集(Part1) [共12篇]

JackJiang

网络编程 即时通讯 IM

利用 MySQL 克隆插件搭建主从

Simon

MySQL MySQL主从复制

彻底解决网络哈希冲突,百度百舸的高性能网络 HPN 落地实践

百度Geek说

网络 哈希 企业号2024年7月PK榜

小间距LED显示屏:安防监控的未来趋势

Dylan

科技 LED LED display LED显示屏 市场

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

袋鼠云数栈

sql 大数据 数据中台 AI 大模型

淘宝详情数据获取的 API 之旅:突破与创新

Noah

传统行业包括哪些行业?需要采购堡垒机吗?

行云管家

IT 等保 堡垒机 传统行业

Sentieon Arm版本:进一步降低基因组计算成本

INSVAST

基因数据分析 生信服务

2024 年 6 月公链行业研报:市场回调,比特币和以太坊 Layer 2 表现各异

Footprint Analytics

比特币 以太坊 公链 区块链+ BTC

Nacos 2.3.2 连接达梦数据库

JEECG低代码

信创 naocs JeecgBoot 信创国产化 达梦数据库

汽车尾气排放污染的解决方案

DevOps和数字孪生

汽车

Ink 2.0发布:命令行应用程序的React_大前端_Bruno Couriol_InfoQ精选文章