【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

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

关注

评论 1 条评论

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

《数据结构》之栈和堆结构及JVM简析

EquatorCoco

数据结构 教程

人脸识别技术的原理及其应用

来自四九城儿

Flutter卡片分享功能实现:将你的内容分享给世界

编程的平行世界

flutter android

强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 ppo算法

C/S UDP通信实践踩坑记录与对于ICMP的进一步认识

这我可不懂

11个开源项目,5位技术大咖…华为云亮相2023开放原子全球开源峰会

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

Zilliz Cloud 明星级功能详解|解锁多组织与角色管理功能,让你的权限管理更简单!

Zilliz

SaaS 非结构化数据 Zilliz AIGC zillizcloud

升哲科技受邀出席第十四届夏季达沃斯论坛

SENSORO

阿里云顺利通过云原生中间件成熟度评估

阿里巴巴云原生

阿里云 云原生 中间件 成熟度

云原生应用交付平台 Orbit 主要功能与核心能力

CODING DevOps

Orbit gitops 应用管理

如何在 NGINX 中安全地分发 SSL 私钥

NGINX开源社区

nginx ssl

8个优秀好用的渠道,帮你找到所想要的资源

高端章鱼哥

技术 分享工具

软件测试/测试开发丨Python内置库学习笔记

测试人

Python 程序员 软件测试 内置库

人脸识别技术的优缺点及实际应用

来自四九城儿

精选|Dubbo异步化实践

得物技术

用友BIP全球司库十问之资金结算如何统一管理?

用友BIP

全球司库 资金管理

有奖问卷 | 2023 中国软件研发效能调查问卷即将截止

CODING DevOps

人脸识别技术的历史发展及未来趋势

来自四九城儿

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

大瞿科技

故障分析 | 从慢日志问题看 MySQL 半一致性读的应用场景

爱可生开源社区

MySQL innodb 事务

浅显易懂传统开发与低代码开发的区别

互联网工科生

低代码 JNPF 传统开发

数据湖系列之三 | 打造高性能云原生数据湖,层级 namespace 对象存储加速大数据计算

Baidu AICLOUD

数据湖 对象存储 层级namespace

AI 2.0来袭,AIGC如何重新定义招聘?

用友BIP

AI 招聘

深度分析:企业大数据分析的选型需要关注哪些能力

对不起该用户已成仙‖

跑得更快!华为云GaussDB以出色的性能守护“ERP的心脏”

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

当金融风控遇上人工智能,众安金融的实时特征平台实践

NebulaGraph

人工智能 风险控制 金融风控

数字化驱动,低代码引领:探索数智时代的开发新纪元!

EquatorCoco

低代码 数智化 AIGC

国产替代,本质是价值替代

用友BIP

人脸识别技术的挑战和未来发展

来自四九城儿

【AI 充电】KServe + Fluid 加速大模型推理

阿里巴巴云原生

阿里云 Kubernetes 云原生

企业需要什么样的全面预算管理?

用友BIP

全面预算

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