译:Microsoft/ReactXP 简介
在Github的Microsoft项目中发现一个名为ReactXP的项目,这是一个由Skype团队开发的,用于进行Web及跨平台APP开发的库(建立在React Js 和 ReactNative之上)。看了下国内还没介绍,特将其官网的介绍博文翻译过来,https://microsoft.github.io/reactxp/blog/2017/04/06/introducing-reactxp.html
从VS Code, .Net Core, TypeScript, PowerShell, ReactXP 等一系列的优秀开源项目来看,自从Nadella主政提出“移动优先、云优先”的战略后,微软正积极拥抱开源社区。
虽然,曾经在移动战略上失利,但现在微软正焕发着新的活力。 ——吴盐以兑 译注
我们微软Skype团队很高兴地宣布,现在开源了ReactXP,我们开发这个库目的是将其用于跨平台的开发。它基于React JS和React Native,允许您使用单个代码库来创建Web和Native的应用。
ReactXP的历史
Skype运行在许多平台上,包括台式机,笔记本电脑,手机,平板电脑,浏览器,甚至电视和汽车。历史上,每个Skype客户端的UI都是从零开始以每个平台的“Native”语言来编写的(iOS上使用Objective C,Android上使用Java,Web上使用HTML和JavaScript等)。大约一年前,我们着手努力重塑Skype。我们决定,我们需要采取新的方法来进行客户端开发 - 这将使我们的工程效率和敏捷性最大化。我们想过在不同的代码库中多次实现新的功能,我们也想尽量减少重复工作。我们探索了一些可能的选项,像Cordova(PhoneGap)这样的Web封装方案没有能达到我们希望的性能或原生体验( “native feel”);Xamarin是跨平台移动开发的绝佳解决方案,但可惜不能用于Web版本。我们最终决定在React JS和React Native之上建立我们的新客户端。为了统一React JS和React Native实现中的行为和接口,我们开发了ReactXP。 (最初将其称为ReactX,因此在来源中提及此术语。)
Skype团队还对React Native代码库做出了许多贡献,修复错误,提高性能,并消除React JS和React Native之间的行为差异。最大的贡献是React Native布局引擎的重大改造。原始实施方式松散地遵循W3C flexbox标准,但与某些重要方面的标准不同。现在更新的布局引擎能可靠地生成与所有兼容的Web浏览器相同的布局。
ReactXP设计理念
ReactXP被设计为一个在React和React Native之上的一个轻量级跨平台抽象层。它实现了十几个可用于构建更复杂组件的基础组件。它还实现了一个被大多数应用程序所需的API命名空间集。
ReactXP目前支持以下平台:Web(React JS),iOS(React Native),Android(React Native)和Windows UWP(React Native)。 Windows UWP仍然是一项正在进行的工作,一些组件和API尚未完成。
ReactXP 核心(“core”)仅包含通用功能。更加特定的跨平台功能用ReactXP扩展的形式提供。 Skype团队开发了大约二十个这样的扩展,我们计划逐步来开源其中一些。扩展的形式会允许我们扩展ReactXP,而不增加其占用空间或复杂性。
当我们决定在ReactXP中公开哪些属性(props)和样式(style attributes)时,我们尽力坚持能在所有支持的平台上统一实施的方式。例如,我们不会公开任何不兼容React Native的HTML特定属性或特定CSS样式。在一些特殊情况下,我们公开某一平台特定属性或样式时,会将在文档中标记为在其他平台上的“非通用”(“no ops”),但这只是在我们找不到变通的解决办法时才会如此。
ReactXP的未来
Skype团队将继续维护和构建ReactXP,微软的其他团队也开始使用它并作出贡献。今天我们开放给更广泛的开源社区。希望其他人会觉得有用,欢迎反馈和贡献。
我们计划每月新增一个ReactXP版本,与React Native版本大致对齐。
去代码库Microsoft/reactxp看看。
[本文首发于知乎 ]
译:Microsoft/ReactXP 简介的更多相关文章
- dig命令(转载)
dig命令使用大全(linux上域名查询) 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DNS的原理,配置,以及其查询过程.以前使用dig仅仅是查询一下A记录或 ...
- .net学习网站汇总
http://chs.gotdotnet.com/quickstart/简介:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示 ...
- Office 365 开发概览系列文章和教程
Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...
- [dig]使用dig查看当前网络连通情况
1. dig domain, 通过server可以查到该域名被哪个server给解析了 2. dig @dns domain 不走/etc/resolve.conf,直接走指定的dns ------- ...
- dig命令使用大全
https://www.cnblogs.com/daxian2012/archive/2013/01/10/2854126.html 译者序:可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程, ...
- 项目总结(二)->一些常用的工具浅谈
程序员是否应该沉迷于一个编程的世界,为了磨砺自己的编程技能而两耳不闻窗外事,一心只为写代码:还是说要做到各有涉猎,全而不精.关于这点每个人心中都有一套自己的工作体系和方法体系. 我一直认为,程序员你首 ...
- Dig HOWTO 中文手册--dig命令使用大全
Dig HOWTO 中文手册--dig命令使用大全 DNS -- 本人翻译的dig howto手册. 译者序: 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DN ...
- 【转载】解决繁体、日文游戏乱码的五种方法 转载自:http://tieba.baidu.com/p/488627981
方法1:转换区域 开始——设置——控制面板——区域和语言选项——分别选择“高级”和“区域选项”标签——在其下拉框中都选择“日语”(或“日本”)(选项有点多,慢慢找)——重启后即可生效. *某影注:日语 ...
- React Native 三端同构
React Native 三端同构 https://www.ibm.com/developerworks/cn/web/wa-universal-react-native/index.html rea ...
随机推荐
- C++指针与引用
1.指针与引用的区别: (1)非空区别.引用不能指向空值. (2)合法性区别.由于指针可能为空,所以需要测试它以防止它为空. (3)可修改区别.引用初始化后不可再被修改. (4)内容区别.指针的内容是 ...
- 基于AspectJ的XML方式进行AOP开发
-------------------siwuxie095 基于 AspectJ 的 XML 方式进行 AOP 开发 1 ...
- 【校招面试 之 C/C++】第6题 C++深拷贝与浅拷贝
1.两个的区别(1)在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制.当数据成员中没有指针时,浅拷贝是可行的: 但当数据成员中有指针时,如果采用简单的浅 ...
- Spring整合JMS——事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.JmsTransactio ...
- git 常用命令笔记
#提交代码会加上用户名和邮箱 git config --global user.name 名字 git config --global user.email 邮箱 git config --globa ...
- git format-patch 用法【转】
本文转载自:http://blog.csdn.net/xzongyuan/article/details/9425739 git format-patch相对于git diff更便于操作,是更新的打包 ...
- 在探http请求
参考:https://itbilu.com/other/relate/Ny2IWC3N-.html Cookie和Session都是为了解决HTTP协议的无状态问题,存储HTTP通讯中客户端与服务器之 ...
- macos修改vmware Fusion的NAT网络
https://blog.csdn.net/zhishengqianjun/article/details/77046796 http://pubs.vmware.com/fusion-5/index ...
- 连接数据库-corina
import pymysqlimport pandas as pdfrom pandas import DataFramefrom sqlalchemy import create_engine cl ...
- 7.20 文本框内容 超出 显示 。。 和 split
word-wrap:break-word; word-break:break-all; overflow:auto; split 去 :等 ,只要有: 就会在:两边 各生产一个值 ,所有 应习惯把最 ...