在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 简介的更多相关文章

  1. dig命令(转载)

    dig命令使用大全(linux上域名查询) 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DNS的原理,配置,以及其查询过程.以前使用dig仅仅是查询一下A记录或 ...

  2. .net学习网站汇总

    http://chs.gotdotnet.com/quickstart/简介:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示 ...

  3. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...

  4. [dig]使用dig查看当前网络连通情况

    1. dig domain, 通过server可以查到该域名被哪个server给解析了 2. dig @dns domain 不走/etc/resolve.conf,直接走指定的dns ------- ...

  5. dig命令使用大全

    https://www.cnblogs.com/daxian2012/archive/2013/01/10/2854126.html 译者序:可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程, ...

  6. 项目总结(二)->一些常用的工具浅谈

    程序员是否应该沉迷于一个编程的世界,为了磨砺自己的编程技能而两耳不闻窗外事,一心只为写代码:还是说要做到各有涉猎,全而不精.关于这点每个人心中都有一套自己的工作体系和方法体系. 我一直认为,程序员你首 ...

  7. Dig HOWTO 中文手册--dig命令使用大全

    Dig HOWTO 中文手册--dig命令使用大全 DNS -- 本人翻译的dig howto手册. 译者序: 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DN ...

  8. 【转载】解决繁体、日文游戏乱码的五种方法 转载自:http://tieba.baidu.com/p/488627981

    方法1:转换区域 开始——设置——控制面板——区域和语言选项——分别选择“高级”和“区域选项”标签——在其下拉框中都选择“日语”(或“日本”)(选项有点多,慢慢找)——重启后即可生效. *某影注:日语 ...

  9. React Native 三端同构

    React Native 三端同构 https://www.ibm.com/developerworks/cn/web/wa-universal-react-native/index.html rea ...

随机推荐

  1. webElement.text()获取到内容为空

    使用webElement.text()方法获取字符串时,有时候会获取失败--获取到的内容为空 使用 webElement.getAttribute("attributeName") ...

  2. Node.js的知识点框架整理

    背景:因为appium是基于Node.js的,所以想看一下Node.js.但是发现很多资料的顺序看起来有点颠倒.然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用. 本文不包含nod ...

  3. 用Python提取XML里的内容,存到Excel中

    最近做一个项目是解析XML文件,提取其中的chatid和lt.timestamp等信息,存到excel里. 1.解析xml,提取数据 使用python自带的xml.dom中的minidom(也可以用l ...

  4. codeblocks c++11 pthread

    支持c++11: setting->compiler-> 打上勾即可.(如果没有c++11,那么请更新codeblocks最新版.) pthread_create错误: 由于pthread ...

  5. 清明梦超能力者黄YY(idx数组)

    清明梦超能力者黄YY https://www.nowcoder.com/acm/contest/206/I 题目描述 黄YY是一个清明梦超能力者,同时也是一个记忆大师.他能够轻松控制自己在梦中的一切, ...

  6. C#操作Excel 单元格的格式处理[xyytIT]

    一. C# 操作 Excel 单元格自动填充,居中对齐,字体颜色等格式设置: Excel.Range titleRange = worksheet.get_Range(worksheet.Cells[ ...

  7. 归并排序/合并排序c++实现

    #include <iostream>#include<string.h> using namespace std;class merges{public:void merge ...

  8. Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。

    1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...

  9. meterpreter 如何留后门,使攻击持久化

    安装后门方法一:meterpreter >run persistence -X -i 5 -p 443 -r 192.168.0.108 Persistent agent script is 6 ...

  10. Judy Array - Example

    “ In computer science and software engineering, a Judy array is a data structure that has high perfo ...