【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:005096
用户头像

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

关注

评论 1 条评论

发布
用户头像
秀啊 react
2019-04-25 10:15
回复
没有更多了
发现更多内容

【C 语言】指针 Three 之 [赋值语句的方法、指针变量的大小、上述总结、 * 和 & 认识、对解引用(*)认识]

謓泽

5月月更

揭秘华为云GaussDB(for Influx):数据直方图

华为云开发者联盟

数据库 华为云 GaussDB(for Influx) 数据直方图 直方图

C语言打印程序行号、日期方便调试程序

DS小龙哥

5月月更

苹果 AppStore 财年和账单那些趣事

37手游iOS技术运营团队

apple appstore App生态

WorkPlus IM即时通讯:快速集成、私有化部署、安全加密

WorkPlus

探索开源工作流引擎Azkaban在MRS中的实践

华为云开发者联盟

开源 MRS Azkaban 开源工作流引擎

快速上手云原生安全平台 NeuVector

Rancher

Kubernetes k8s rancher NeuVector

微信小程序商城源代码

源字节1号

软件开发 小程序开发

直播预告丨OpenHarmony标准系统多媒体子系统之视频解读

OpenHarmony开发者

OpenHarmony 多媒体

有了这10个GitHub仓库,开发者如同buff加持

华为云开发者联盟

GitHub 开源 Web 软件开发

MAE自监督算法介绍和基于EasyCV的复现

阿里云大数据AI技术

深度学习 算法 自监督学习

[Day40]-[回溯]-子集

方勇(gopher)

LeetCode 数据结构算法

洞见科技中标渤海银行「联邦学习平台建设+营销场景建模服务」两大项目

洞见科技

金融科技 隐私计算

区块链有什么价值?

CECBC

技术分享| 快对讲如何降噪

anyRTC开发者

人工智能 音视频 语音通话 视频通话 降噪

极狐GitLab yum/apt repo正式开放,更顺畅的极狐GitLab安装升级体验

极狐GitLab

极狐GitLab 安装源

从SVN完美迁移到Git,我只用了5分钟

阿里云云效

git svn 阿里云 版本控制 代码

Apache Kafka 分层存储(Tiered Storage)技术解析

移动云大数据

kafka

7件大事回顾加密史上最疯狂一周

CECBC

HarmonyOS崩溃服务能力全新上线,帮你高效解决崩溃问题!

HarmonyOS开发者

HarmonyOS 崩溃服务能力

基于GPU的并行集群系统在中国的发展状况

Finovy Cloud

gpu 云服务器 集群渲染 渲染服务

浅谈 Fiori Fundamentals 和 SAP UI5 Web Components 的关系

Jerry Wang

前端开发 UI SAP Fiori 5月月更

听说你在写Python爬虫,你对浏览器的开发者工具了解多少?【多图预警】

梦想橡皮擦

5月月更

Wallys-AR9582 /2x2 MIMO /Industrial-grade/ 902-928Mhz

wallys-wifi6

你说写代码,最常用的3个设计模式是啥?

小傅哥

设计模式 小傅哥 架构设计 代码优化 设计原则

站在全新的业务视角,重新认识 Bonree Zeus

博睿数据

APM 博睿数据 zeus

《数字经济全景白皮书》银行数字化篇 重磅发布!

易观分析

银行数字化

软件完整性保护方案之Sigstore

墨菲安全

网络安全 java 编程 墨菲安全 软件完整性 sigstore

实用教程 | 云原生安全平台 NeuVector 部署

Rancher

Kubernetes k8s rancher NeuVector

比特币跌破27000美元!币圈大佬损失惨重,最高身价缩水近9成

CECBC

攻防演练 | 关于蓝队攻击研判的3大要点解读

青藤云安全

安全攻防 网络安全

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