开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Reapp——使用 React 开发混搭移动应用

  • 2015-02-28
  • 本文字数:2044 字

    阅读完需:约 7 分钟

过去的两周时间里,围绕 Facebook发布 React Native(一个能够借助 JavaScript 开发原生移动应用的 React.js 扩展)的相关热点铺天盖地。而其中的热点之一就是 Reapp 向 React 爱好者们推出的一个移动应用开发的替代方案。

React 是一个构建用户界面的客户端 JavaScript 框架,由 Facebook 最初开发并开源。React 使用一个称为 JSX 的声明式语法和 JavaScript 语法扩展来描述 HTML 布局。每个 React 组件都通过属性和状态得以支持和配置,对它们的改变将通过单向数据流触发更新。这些更新是通过虚拟DOM 优化的,它区别对待不同的组件,确保只有状态变换导致的那些修改才得到刷新。

表面上,Reapp 与React Native 有着惊人的相似之处,二者都使用React 来创建应用程序用户界面的框架。然而,在底层机制上这两个框架之间却具有明显的哲学差异。React Native 将React 组件绑定到原生UI 控件中,构建与设备操作系统匹配的界面。而Reapp 却是将React 组件绑定到一个跨平台的UI-Kit 来创建混搭应用。

读者可通过该项目的 Kitchen Sink 样例应用来感受 Reapp UI-Kit 的表现力与强大。特别是该应用的“Mailbox”效果,它展示了基于 UI-Kit 的 Reapp 及其 React 如何用于快速定义邮箱风格的用户界面:

复制代码
var Mailbox = React.createClass({
render() {
return (
<div>
<SearchBar defaultValue="" />
<List styles={{
self: {
paddingLeft: 25
}
}}>
<ListItem
title="Erinn Silsby"
titleAfter="8:45 PM"
titleSub="New messages from Jane Doe really long title should ellipse"
>
Lorem ipsume dolor sit amet, consectetur adipiscing
elit. Nulla sagittis tellus ut turpis condimentium,
ursula major sagittis.
</ListItem>
<ListItem
title="Phebe Matz"
titleAfter="8:45 PM"
titleSub="New messages from Jane Doe really long title should ellipse"
>
Lorem ipsume dolor sit amet, consectetur adipiscing
elit. Nulla sagittis tellus ut turpis condimentium,
ursula major sagittis.
</ListItem>
<ListItem
title="Derek Boulware"
titleAfter="8:45 PM"
titleSub="New messages from Jane Doe really long title should ellipse"
>
Lorem ipsume dolor sit amet, consectetur adipiscing
elit. Nulla sagittis tellus ut turpis condimentium,
ursula major sagittis.
</ListItem>
<ListItem
title="Samantha Canor"
titleAfter="8:45 PM"
titleSub="New messages from Jane Doe really long title should ellipse"
>
// ... truncated for readability ...
// ... complete code sample available at https://github.com/reapp/kitchen-sink/blob/master/app/components/kitchen/Mailbox.jsx
</List>
</div>
);
}
});

上述代码片段举例说明了一个自定义邮箱组件如何通过三个 Reapp UI-Kit 组件——List、ListItem 以及 SearchBar——快速搭建而成。通过 Kitchen Sink 样例应用的在线版本可查看生成的用户界面。

然而 Reapp 并非只是一个带有 React 编程接口的 UI 工具套件,它还提供了其他处理非 UI 关注功能的组合包:

  • reapp-routes ——用来生成对象树的模块,这些对象代表路由或文件路径;
  • reapp-component——支持装饰模式和工厂模式的依赖注入模块;
  • reapp-ui——包含 UI-Kit;UI-Kit 是一整套 React 组件,通过主题支持动画和换肤,以允许平台特定风格。所有可用的 UI 组件都在 Reapp 站点列出

Reapp 的目标是通过合并大量主流 JavaScript 库来最大化开发者的生产效率。为了简化依赖管理,Reapp 包含了 Webpack 模块绑定器,其使用“代码拆分”来优化在运行时要加载的依赖。另外,Reapp 还捆绑了日益流行的 6To5 转译器,其允许开发者用 ES6 语法编写 JavaScript 代码,但转译成 ES5 语法,保持兼容性的同时最大限度提高开发效率。

Reapp 框架的 alpha 版本已提供使用,并可通过 npm安装。其同时是一个开源项目,源代码放在 GitHub 上。

随着该项目发布 alpha 版本,开发人员也发布了两个样例项目,以演示其功能和用法。Hacker News样例程序是一个功能完整的HackerNews 软件新闻网站客户端应用, Kitchen Sink 样例程序演示了 Reapp UI-Kit 的功能。这两个样例程序的源代码都可以通过 Reapp Github仓库获取。

查看英文原文: Reapp - Hybrid Mobile App Development Using React


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-28 08:246928

评论

发布
暂无评论
发现更多内容

SAP UI5 的规则构建器控件介绍

汪子熙

JavaScript SAP SAP UI5 ui5 9月月更

超长序列,超快预测!深势科技联手阿里云,AI蛋白质预测再下一城

阿里云大数据AI技术

人工智能 深度学习 企业号九月金秋榜

Java开发培训的就业方向有哪些?

小谷哥

写出优秀的产品手册文档的技巧

Baklib

文档 产品手册

怎么来选择大数据培训课程

小谷哥

江南农村商业银行容器云平台建设经验分享

BoCloud博云

云计算 云原生 容器云

OpenHarmony Camera源码分析

OpenHarmony开发者

OpenHarmony

访问控制系统的质量评价

权说安全

网络安全 零信任 访问控制

零信任态势评估:安全控制自动化

权说安全

零信任 动态评估

首批合作伙伴!博云携手中科院共建 SERVE 云平台规范

BoCloud博云

云计算 云原生 处理器

Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

spring 9月月更

干货 | 企业数字化转型过程中,传统IT和数字型IT能否严格区分?

嘉为蓝鲸

运维 转型 IT 数字化 研发

什么是数据质量管理?企业怎样做好数据质量管理?

雨果

数据质量

Linux系统安装配置Tomcat

Linux Tomccat 9月月更

硬实力!旺链科技与蚂蚁、腾讯共同入选国家工信安全中心“区块链优选计划”

旺链科技

区块链 产业区块链 Baas 企业号九月金秋榜 融合创新

TiFlash 源码解读(八)TiFlash 表达式的实现与设计

PingCAP

源码阅读 TiDB TiDB 源码解读

太牛了,这是我见过把微服务讲的最全最好的SpringCloud架构进阶

程序知音

Java 架构 微服务 SpringCloud 后端技术

学员在web前端培训机构应该怎么学习

小谷哥

大促活动如何抵御大流量 DDoS 攻击?

京东科技开发者

安全 电商 DDoS 电商大促 防护

好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快

程序知音

Java spring 程序员 后端 框架

大规模数据如何实现数据的高效追溯

华为云开发者联盟

大数据 后端 华为云 企业号九月金秋榜

如何在 ACK 中使用 MSE Ingress

阿里巴巴中间件

阿里云 容器 微服务 云原生 ingress

Baklib|FAQ常见问题对产品推广的重要性

Baklib

产品 FAQ

Java培训学习技术需要具备哪些能力

小谷哥

知识管理对企业的作用不容小觑

Baklib

知识管理 企业

如何选择比较靠谱的数据培训班?

小谷哥

OneFlow源码解析:Tensor类型体系与Local Tensor

OneFlow

深度学习 源码解析 算子

给工作加点料——试一试python

为自己带盐

Python 爬虫 9月月更

5 分钟比较理解 require() vs import()

掘金安东尼

前端 9月月更

干货 | 如何实现软件自动化部署?

嘉为蓝鲸

运维 IT 应用发布 应用部署

贝斯的圆桌趴 |科技公司内部 SaaS 工具大公开

Bytebase

Reapp——使用React开发混搭移动应用_移动_Matt McComb_InfoQ精选文章