AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

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

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

关注

评论 1 条评论

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

从零开始学习ThingJS之创建App对象

ThingJS数字孪生引擎

可视化 3D可视化 数字孪生

40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

Java架构师迁哥

面阿里P7,竟问这么简单的题目?

Java架构师迁哥

服务可达,达者为先,产品发布会嘉宾精彩观点分享!

博睿数据

博睿数据 数据链DNA 服务可达

Bugless 异常监控系统 (iOS端)

37手游iOS技术运营团队

ios iOS Developer 崩溃分析 bugless

MeterSphere | 超好用的开源测试平台

Python研究所

签约计划

百余大企业共赴新文明之约:2021 DEMO WORLD 世界创新峰会拉开帷幕

创业邦

创新

🍃【SpringCloud基础使用】Nacos与Gateway实现动态路由

洛神灬殇

nacos SpringCloud Gateway 5月日更 自定义配置

公安局重点人员研判分析系统解决方案

牛x运维常用的工具系列-1

运维研习社

运维 工具分享 5月日更

MPP大规模并行处理架构详解

五分钟学大数据

大数据 MPP 5月日更

活动预告 _ 即构×火山引擎:泛娱乐社交音视频技术实践沙龙

ZEGO即构

Vue-1-初识

Python研究所

签约计划

获得业内一致好评!华山版Java性能优化全栈手册“登场”

Java架构追梦

Java 阿里巴巴 架构 性能优化 华山版

量化网格策略交易软件,马丁倍投策略机器人

我厂与张家港市达成全面战略合作,共推数据中心和城市智能化转型

百度大脑

数据中心 城市智能化

脉脉3小时转发65w次!这份Java面试宝典发生了什么?

Java架构师迁哥

编曲新手可以用什么编曲软件?

奈奈的杂社

编曲 编曲宿主 编曲软件

论证:iOS安全性,为什么需要审核?

37手游iOS技术运营团队

ios SIP Sandbox iOS Developer ios安全

走向机器智能时代:移动机器人的困局与创新

晨山资本

机器人 移动机器人 AMR

1小时内被全网疯转 29.8w 次,最终被所有大V协力封杀!

Java架构师迁哥

🔎【Java源码探索】深入浅出的分析HashMap(JDK8)

洛神灬殇

Java 源码 源码分析 hashmap 5月日更

工业4.0加速实现“数物相合”,可视化工厂节省时效高达85%

一只数据鲸鱼

人工智能 数据可视化 工业互联网 智慧工厂 智能生产

答应我,别再学Swing框架了好吗?

北游学Java

Java spring swing

中国呼叫中心与卓越客服产业峰会,百度智能客服再提行业创新

百度大脑

解决方案 行业创新

如何评估 Serverless 服务能力?这份报告给出了 40 条标准

Serverless Devs

云计算 云原生 Forrester Wave #Serverless

ARM和X86云服务器的算力对比

Python研究所

签约计划

Fabric | 自动化神器

Python研究所

签约计划

获5项大奖,发布《云计算开放应用架构标准》,阿里云持续领航云原生

阿里巴巴中间件

云计算 最佳实践 云原生 案例 白皮书

现在已经卷到需要问三色标记了吗?

艾小仙

用Python在树莓派上播放音乐

IT蜗壳-Tango

5月日更

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