内容简介:自称为“命令行接口 React”的 JavaScript 库 Ink 最近发布了第二个主要迭代版本。借助 Ink,开发者可以通过组装 React 组件来构建命令行应用程序,并充分利用他们的 React 知识和 React 生态系统。官方文档提供了如下的示例:
自称为“命令行接口 React”的 JavaScript 库 Ink 最近发布了第二个主要迭代版本。借助 Ink,开发者可以通过组装 React 组件来构建命令行应用程序,并充分利用他们的 React 知识和 React 生态系统。
Ink 是一个 React 渲染器,可以将 React 组件树转成字符串,然后输出到终端上。Ink 2.0 可以无缝支持 React 的某些特性,比如 Hooks 或 Context ,还可以与 React 生态系统中的其他重要组件(比如 Redux )发生交互。
官方文档提供了如下的示例:
复制代码
importReact, {Component} from'react';
import{render,Color} from'ink';
classCounterextendsComponent{
constructor() {
super();
this.state = {
i:0
};
}
render() {
return(
<Colorgreen>
{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 参数( flexShrink 、 flexGrow 、 flexDirection 等等)。内置组件 Box 可用于配置布局。下列的组件:
复制代码
import{render, Box, Text, Color}from'ink';
constFlexbox =()=>(
<Boxpadding={2}flexDirection="column">
<Box>
<Boxwidth={14}>
<Textbold>Total tests:</Text>
</Box>
12
</Box>
<Box>
<Boxwidth={14}>
<Textbold>Passed:</Text>
</Box>
<Colorgreen>10</Color>
</Box>
<Box>
<Boxwidth={14}>
<Textbold>Failed:</Text>
</Box>
<Colorred>2</Color>
</Box>
</Box>
);
render(<Flexbox/>);
将在终端上显示:
可以使用 ink-testing-library 来测试 Ink 组件。这个库的灵感来自 react-testing-library,一个可替代 Jest 来测试 React 组件的框架。可以像下面这样测试一个计数器应用程序:
复制代码
import Reactfrom'react';
import {Text}from'ink';
import {render}from'ink-testing-library';
const Counter = ({count}) => <Text>Count: {count}</Text>;
const {lastFrame, rerender} = render(<Countercount={0}/>);
lastFrame() ==='Count: 0';//=> true
rerender(<Countercount={1}/>);
lastFrame() ==='Count: 1';//=> true
终端应用程序和命令行应用程序之间有一个区别。终端应用程序具有图形化用户界面,可能带有复杂的导航和输入功能。
基于 blessed 终端界面库构建的 React-blessed 可以让应用程序变成下面这样:
Ink 旨在简化命令行应用程序的界面,提供更简单的输入功能:
Ink 采用了 MIT 开源协议。开发者可以通过其 GitHub 主页 贡献代码。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ruby-on-rails – 如何从命令行重新启动Rails应用程序时定义环境?
- Android里应用程序,应用程序窗口和视图对象之间的关系
- 使用 Bluemix、Watson Discovery 和 Cloudant 构建移动应用程序来分析其他应用程序
- ChromeOS 终端应用程序暗示其即将支持 Linux 应用
- 这几天在C程序中有哪些应用程序?
- Zookeeper详解-应用程序(七)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!