整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

新思域创新mini-site 技术创意完美融合

014年6月27日,东风本田新CIVIC(思域)在广东肇庆上市第九代中期改款车型,作为一款紧凑级家用中级车,CIVIC(思域)所面临的市场竞争日趋激烈。为了能在新CIVIC(思域)上市前及上市时制造声量,提升产品关注度,创意服务提供商新意互动推出微信H5互动mini-site,并配合多位一体的组合传播,形成大范围覆盖和转发,该创意形态开创了汽车品牌传播造势先河,凭借创意传播和效果一举摘得第七届广告主金远奖网络类银奖。

创意策略先行,创新传播形式

整体策略方面,新意互动采用全方位的创新传播形式进行呈现。主要涵盖:创新的形象化手绘风格、生动有趣的动画效果、趣味化的内容包装、HTML5技术手机端滑动体验。在策略传播方面,配合“多位一体”的传播组合,为新思域上市预热并提升新思域的品牌特性。

创意方面,采用众所周知的典故作为内容包装,并以创新的形象化手绘风格配合生动有趣的动画效果,趣味化呈现给用户方可吸引眼球,并形成大范围转发。

具体内容设计如下——

第一屏:4S店经销商形象的动画小人,拉开卷轴,提示用户:向上滑动,此时背景音乐响起。第二屏:出现盘古开天辟地的形象,在人们印象汇中盘古实乃能力者的代言,在动画中出现文字:开天辟地,我能力至此,却无缘结识CIVIC。第三屏:出现大禹治水的画面,大禹治水三过家门而不入,实乃敬业的大无畏之人,在动画中出现文字:治水三过家门而不入,我敬业至此,却无缘结识CIVIC。第四屏:出现曹植七步成诗的画面,曹植七步成诗,其才气广为流传,在动画中出现文字:七步成诗,我才情至此,却无缘结识CIVIC。第五屏:出现刘备三顾茅庐诸葛亮的典故,刘备三顾茅庐,可见诸葛亮面子之大,在动画中出现文字:刘备三顾茅庐,我面子至此,却无缘结识CIVIC。第六屏:出现潘安的形象,潘安美男子的形象众所周知,以致后人均已貌若潘安来夸赞男子的美貌。在动画中出现文字:都说“貌若潘安”,我帅气至此,却无缘结识CIVIC。最后一屏:出现思域上市信息:时间及地点。因为如上故事人物均为古人,所以他们无缘结识CIVIC。

通过如上烘托,营造出神秘而趣味的气氛, 并表达了思域诚挚邀请用户参加上市会的本意,古人与“活在当下”正好形成对比,也表达了思域年轻化的心态。

技术与创意双管齐下

在上述策略和创意的指导下,新CIVIC上市预热活动围绕以下三个步骤展开:首先,利用媒体推送、网络红人推送、官方微信推送等“三位一体”的创新传播组合,确保达成人群广泛覆盖和精准投放。

其次,采用HTML5技术在手机端对产品信息进行完美呈现,用户只需通过滑屏的简单操作即可完成顺畅的体验。

最后,通过刻画古人现代化的活泼独特形象,搭配名人“发自肺腑”的逗趣文字,以及前后呼应的CIVIC压轴出场,让内容充满趣味性,充分调动用户自主转发积极性。

经过上述活动和传播执行,本次CIVIC(思域)在手机端建立的mini-site实现了1,117,428人群覆盖数, 浏览量为327,653次, 分享量高达78,055次。

本次传播活动亮点有以下三个方面:

第一,新传播:通过点对点的推送给参加上市会的媒体,确保全部精准有效。配合选择微信大号合作,大号选择基于汽车类专业订阅号,粉丝量大且专注于汽车,确保投放的精准性和广覆盖;并以官方微信推送的形式进行推广,这种三位一体的传播组合,确保达成人群广泛覆盖和精准投放;

第二,新形式:利用「手机MINISITE」创新的沟通形式(此形式在6月份前尚未被广泛应用),提供最便捷、丰富的用户体验。提供用户便捷顺畅的互动体验、生动有趣的动画效果,并搭配完美贴合的声效,提供用户简便的操作,丰富的体验;

第三,新内容“网络化趣味包装”传播内容,迎合目标人群兴趣点,形成社会化扩散效应。通过刻画古人现代化的活泼独特形象,搭配名人“发自肺腑”的逗趣文字,以及前后呼应的CIVIC压轴出场,让内容充满趣味性,充分调动用户自主转发积极性。

此轮mini-site互动传播不仅是对业界传播手段的创新,其传播内容也广受好评,在传播周期内形成大范围自主转发性的扩散效应,为新CIVIC(思域)上市营造了关注度,在传播广度、传播有效性、传播性价比上均获得理想效果。

【关于新意互动】

成立于2003年1月,是美国纽约交易所上市公司易车集团的全资子公司,拥有员工近500人。凭借10余年丰富的网络营销全案代理经验,已成功为50余家企业提供过极具创意的数字整合营销服务。

始终专注汽车行业,使新意互动成为国内最大的汽车行业数字营销解决方案提供商,并拥有互联网广告、互联网公关、受众营销、搜索引擎营销、社会化媒体营销、移动营销、网站建设与维护、客户关系营销、视频营销、电商、舆情监测系统、虚拟影像及体验等十二大业务模块。

此外,新意互动还赢得了众多客户的信任及广告营销行业多项专业奖项与荣誉。2015年凭借汽车数字营销领域10余年的专注,荣获“”自2012年起,新意互动连续3年荣膺“中国网络广告公司综合服务排名”第二名,是大数据时代不可或缺的优质“智慧汽车营销价值伙伴”。

软件要分发给使用不同语言和处于不同地区的人员,需要从多个方面处理从而使这些人能以自己文化背景下熟知的方式来使用。这包括了最基本的文本的翻译,也有一些通用习俗和约定的问题(如不同国家和地区的日期时间的表示等)。而本地化(L10N)和国际化(I18N)就是专门来解决这些问题的。

要很好的解决这一问题,往往需要多方面的人员参与,既有软件设计者,有程序开发人员,也需要翻译人员甚至翻译测试人员,而要把这些人组织起来完成工作,需要的不是只面向一两方的 API 和代码,良好的本地化团队往往需要面面俱到。

传统的解决方案

最知名的解决这些问题的一套系统,是 GNU Gettext。这是一套上世纪九十年提出的用以解决自由软件的国际化和本地化问题的工具套件。在 gettext 里,制定了翻译文本的组织方式(po/pot),提供了从程序源码提取字符串并生成翻译模板的工具(xgettext)。在这些之外,gettext 和其社区也发展出了面向翻译人员的翻译内容管理系统(Weblate),以及有用于完成翻译工作的专门软件(Poedit)。Gettext 也提供 DIff/Merge 工具来解决翻译内容的渐进式更新的需求。

游戏具有其特殊性

游戏作为最特殊的软件之一,对于本地化和国际化也有着属于它的苛刻要求:

  • 游戏往往会引入其他类型的需要多语言处理的资源而非只是文本,比如图片,语音,乃至口型文件。

  • 因为上一条的缘故,导致游戏本地化团队往往会引入更多不同工种的人员,从而增加了人员管理和协调的负担。

传统方案在游戏开发上的搁浅

GNU Gettext 天生不适合游戏开发中的多语言问题,它只处理文本资源,原版的 gettext 甚至只能从源码中收集多语言数据,这显然只适合普通软件的需求,却很难满足游戏开发的需要。

对于游戏而言,只有处于 UI 界面里的数据,会比较切近 Gettext 的需求场景,然而在很多成熟引擎下,这些数据也往往位于特定的 UI 声明文件内(在 Unity 里这些数据处于 scene/prefab文件中)而不是源代码中。至于占游戏内比重更大的其他需要多语言的数据,更是会分散在各种特定格式的数据之中。在 Unity 下,关卡数据可能存放在 prefab 中,角色/物品这类的设定性的文档数据可能处于ScriptableObject,甚至这些数据都保存在别的序列化文件内(诸如最常见的csv/xls或者xml/json,再或者自定义的二进制数据文件)。

一点牢骚

诚然,游戏的多语言问题在如今看起来似乎并不算多么麻烦的事情,即使是考虑多语言输入的问题等,在游戏编程精粹系列中,很早就有论证这些问题的文章[1]。而如今面临的问题似乎同前辈们没什么两样。相比游戏开发中的其他领域(尤其是图形学),这个话题好像没什么可谈的。即使我在文章开头的前几段论述了这个问题多么棘手,但貌似现成的解决方案存在着一大堆。而在之前,我在一个游戏开发的群里提到这个话题时,被人指出是在浪费时间,对方建议我应该多研究研究图像学之类的如何让游戏画面看起来漂亮的技术或者去钻研钻研游戏叙事来让游戏内容变得好玩。:-)

但事实真的如此了吗?

从 key-value 表到 I2 Localization

实现一个简单的多语言系统是十分容易。一个最小可用的多语言系统大体需要如下的部分:

  • 字典表,记录了所有需要多语言处理的字符串,key 往往是对应内容的英文,而 value 则是对应语言的翻译内容。这些内容在文件系统里通常以 json/csv/xml这样的形式存在。

  • 一个形似 Localization.Get(key, lang)的函数,用来在 Runtime 返回指定 key 和语言所对应的翻译内容

  • 一套加载机制,用来在对应语言环境下加载对应的多语言文件

  • 一套通知机制,使得系统能得知语言被切换过。这个系统往往是通过订阅对应的事件来完成通知。

实现这些东西的代码花费不了几个小时就能完成。然而仔细思考就会发现要拿这套系统来用的舒爽,就十分的困难了。

一些待解决的问题:

  • 字体

  • 缺乏对其他多媒体资源的支持

  • 少数语言对文字排版的需求

  • 翻译人员对接

就字体问题而言,对于欧美不少语言,一个字体文件往往很容易就能解决大部分语言的字体问题,但是一旦遇到中日韩,就会变的十分头疼。所幸很多系统和引擎都提供字体的 fallback 机制,只要合理利用这套机制,使得字体问题也能轻松得以解决。再或者干脆再弄个字体文件的字典表,替换文本的同时也替换对应的字体。

其他媒体资源的支持问题,在别的本地化系统里出场率远远低于游戏。这是因为游戏里很容易产生那些需要多语言处理的多媒体资源。一个艺术字标题或者一个图片按钮,亦或是人物对话的配音。不过我们照猫画虎,按照如何处理文本,也同样来处理多媒体资源就行。这里比较棘手的问题是,相比文本这种往往一个语言的所有多语言资源都塞到一个文件内就能解决,多媒体资源在文件系统方面就会变得十分复杂。而一旦这些问题和引擎的资源打包系统耦合在一起,要设计出一套好用又节省内存的方案并不简单。

少数语言文字排版需求通常是指阿拉伯文字这种特有的从右往左排版的情况。相关资料十分丰富,我也不再赘述。不过要注意的是如果涉及到多语言混排,基本很难做对。如果需要相关信息, W3C i18n 小组下的内容对此会十分有帮助[2]。

和翻译人员对接部分,目前来看,业界主要以通过翻译外包的形式将本地化任务托管给其他公司。这些公司往往要求提供 key-value 形式的多语言数据文件(如 xml/csv/xls)给他们。如果你在第一步的时候就已经决定用这样的方式来组织你的多语言文本,正好可以一劳永逸。但第一步选择了别的方案可能就需要提供导入导出功能。

Unity 下有现成的处理好这些问题的框架吗?当然,小节标题后边的部分说的就是它 —— I2 Localization,Unity 资源商店里顶顶有名的国际化插件。

关于它的介绍我不打算多花笔墨,读者可以直接阅读它的文档来一窥究竟。I2 Localization 基本上很好的解决了上边提到的问题。而且他还有不少十分有用的特性。

如果你觉得你的问题已经解决了,那么你可以停止阅读赶紧去购买插件/自己实现类似系统了。但是,假如你仍然抱有困惑,或者好奇多语言系统还有哪些问题和改进的地方,那么我将在下边两个小节内尽力给你一个满意的答案。

Rosetta - 关于本地化问题的反思和实现

虽然上一节提到的 I2 Localization 十分优秀,但是依然有不少问题有待解决:

  1. key-value 形式的多语言系统天然违反游戏开发的流程和直觉

  2. 繁杂而未经设计的翻译文本组织文件进一步导致了功能上的缺失和解决这一问题的困难

  3. 对于渐进式开发和需更新维护的游戏缺乏合适的 Merge 机制

  4. 和翻译人员对接的部分过于的粗暴反而埋下多语言问题的祸根

在 key-value 模式下,你需要为每一个多语言文本分配一个 key,这个 key 往往是一个英文单词或者短语。这对于通常的软件来说十分够用。本来大部分需要多语言处理的文本都是按钮上的文本或者窗体的标题。但是对于游戏来说,这类的数据占比十分低,而更多的多语言文本是游戏内各种物品技能装备等的说明和关卡里的人物对白。这些文字全都篇幅不短。如果你的游戏内有书籍系统,那么更是意味着对应的是一篇短文。这时候为这些数量众多的大段文字去分配一个个不会冲突的 key 是十分头痛而又麻烦的。可能最后这些 key 变成了一个个奇怪的缩写标记(比如一个 l10e2s2这样的神秘字符串代表着关卡十中第二个事件上的第二段对话)。而开发人员在浏览游戏工程文件时,看着充满神秘字符串的界面,还要去回头查找对应的是什么文本。

你可能会说,既然如此我干脆用需要翻译的文本本身来作为 key 好了。噔噔噔!恭喜你,想出了几十年前那些自由软件黑客们就已经构思并实现了的点子—— GNU Gettext。GNU Gettext 的一大特点就是用文本本身做为 key。整个软件选取一个开发语言,开发时所有的文本均按该语言撰写。然后这些文本数据通过特定的标记(往往是通过 Gettext 的获取多语言文本的函数),在软件编写完成后,通过特定的程序扫描整个软件的代码,从中将这些被标记的静态文本挨个收集起来。

除此之外,GNU Gettext 所定义的用于组织多语言文本的特定文件格式 po/potpo文件用来组织翻译文本,而pot文件则是翻译文本模板文件),也解决了上边的问题二。相比大部分情况下使用某种现成的序列化文本格式来组织多语言文本,po/pot文件考虑了更多多语言工作中需要解决的问题,比如pot文件里支持针对单个文本片段的多种形式的注释:

1). #后紧接着空格符的注释内容,是翻译者添加的注释;
2). #后紧接着.的注释内容,是 xgettext 从源代码中提取出的注释内容(通过 xgettext --add-comments 选项);
3). #后紧接着:的注释是待翻译语句在源代码中的位置信息;
4). #后紧接着,的注释是 msgfmt 程序专用的 flag;
5). #后紧接着|的注释是这条待翻译语句之前的相关翻译信息;

而大部分使用通用序列化文本格式的本地化系统,基本不会去考虑这些情况。更何况这些部分还需要各种软件和工具的支持,而繁杂的翻译文本组织方式更是让想支持这些也变得困难,除此之外,对于问题三,大部分使用通用的序列化文本格式的系统也几乎不曾考虑,而 po/pot 文件很早就开始考虑这些问题并提供支持。GNU Gettext 作为一个存在几十年的系统,期间积攒了数量众多的处理这些问题的工具和软件。

问题四要指出的是,目前的外包形式的解决办法,游戏开发商难以较为积极的参与到多语言工作中,其次对于游戏来说往往存在着大量需要多语言处理的多媒体资源,这些资源通常还涉及到美术和配音人员。最后的结果就是要么把这些也一同丢给本地化外包公司,要么就组织两套系统然后花费额外精力来维护两个系统间的周转。其次完全交给外包公司也让游戏本地化工作问题的反馈难以及时跟进(实际上大部分游戏根本不会提供多语言测试版或者雇佣多语言测试人员)。这一结果使得游戏开发和多语言工作过分割裂,最后很容易产生各种翻译问题并很难解决(比如被游戏视频 UP 主神奇陆夫人常常念叨的 Artifex 公司作品的翻译迫击炮问题)。

我个人认为解决这一问题的办法是游戏开发公司应该把多语言工作的主动性掌握在自己手里,通过自己部署翻译管理系统,将多语言工作涉及到的人员全部聚集在一起。同时游戏应该提供多语言测试工具并提供多语言测试版本,然后让多语言测试人员(可以是公司招聘的人员,也可以是通过发布测试版来让对应语言的玩家充当)将多语言问题通过这个系统提交到翻译内容管理系统上。在这一体制下,翻译人员不再是外包给翻译公司,由公司内部分配然后运作在其内部系统上,而是翻译公司外派人员在游戏开发公司的系统上来工作。这样一来无论是监管还是进度追踪抑或是翻译问题的追踪和处理都会变得简单而透明。同时也可以将配音和美术人员也统一在这一框架下。而且如果是大公司的话,这里边的翻译工作人员也可以是公司自己内部的员工。当然,这些构思只是出于一个技术人员在软件开发角度的考量。可能涉及到商业和管理方面的问题并不一定会达成(比如翻译公司拒绝外派人员而坚持使用自己的内部系统)。另外不少独立游戏公司的本地化工作都是通过 Mod 系统然后让对应语言的玩家社区来完成。如果有这样的工具来提供给玩家社区也是很不错的。

从上边讨论可知, GNU Gettext 的解决方法优于 key-value 方案,并且 gettext 还有配套的开源的翻译内容管理系统(比如 Weblate),这意味着问题四也可以方便的解决。

然而原本的 GNU Gettext 并不十分符合游戏开发。比如游戏的多语言数据基本上不会存在于源代码中。其次游戏存在众多的需要多语言处理的多媒体资源,而那些配合 gettext 的 TMS 往往只支持文本内容的处理,前略里已经完整的讲过这个问题了。如此一来,直接把 GNU Gettext 搬过来只会水土不服。我们需要一个适用于 Unity 和游戏开发的使用和 GNU Gettext 类似理念的全新的本地化框架。

简单来说,我们需要:

  1. 设计良好的组织多语言数据的文件格式

  2. 通过简单标记就可以自动化收集多语言资源的工具

  3. 一个运行时的加载这些多语言数据文件,并在恰当的时机将资源替换成对应语言的内容的系统

  4. 对翻译人员提供符合他们工作习惯的工具来完成翻译工作

这一想法最后诞生的结果就是 Rosetta。

Rosetta 采取了和 GNU Gettext 相同的组织翻译文本的方式。这意味着我们可以在文本资源上充分利用 GNU Gettext 现成的工具链。除此之外还处理了多媒体资源的多语言问题。

而在问题二上 Rosetta 充分利用了 C# 的 attribute 和 reference 这两个语言特性,通过 i18nAttribute 来标记需要多语言处理的资源,然后通过反射来搜集这些数据并生成对应的多语言模板文件。

对于问题四 来说,Rosetta 暂时只能依托于 GNU Gettext 现有的工具来解决。目前我正计划在 Rosetta 1.0.0 版本的时候,提供一个和 Rosetta 搭配的适用于游戏开发的翻译内容管理系统:RosettaServer。

只有这些了吗

在游戏本地化问题上,是否还有其他前瞻性的东西,我想很多人和我一样好奇。而思考这些问题则花去了我十分多的时间(实际上这些问题在一年多以前就以各种片段的形式存在于我脑海而直到最近 Rosetta 的第一个可运行版本完成开发,我才开始着笔写下这篇文章)。有幸于我对小众游戏的关注和经常看到好玩的但没有中文的游戏/软件会动汉化他的念头的缘故。我得以见到很多游戏提供的翻译系统,也接触到了一些处于这个领域十分前沿的问题。

AVG.js 和 huozi.js

AVG.js 是我的一位朋友 Icemic 在 HTML5 平台上实现的 galgame 开发套件。这套工具里最让我印象深刻的是专为游戏内中日韩文字排版而实现的排版引擎 huozi.js。

实际上游戏开发对文本显示的要求仅仅处于能看这一阶段。而去思考并实现对应语言的规范排版需求的系统的情况基本不存在。虽然 W3C 的 i18n 小组一直在做这方面的工作(huozi.js 的开发也有参考他们的中文排版需求),但是游戏行业对这些毫无兴趣。这一方面是因为这个问题本身十分复杂且和多个系统耦合(排版系统和 I18N),另一方面游戏内往往并不会出现大篇幅的密集文本。然而随着游戏的发展,我相信以后不少游戏都会遇到类似的需求(如上古卷轴5 里的书籍系统)。

Wayward : 从语义到语法

大部分情况下,我们汉化一段文本的时候,只是在理解它的语义,然后用另一种语言来表达它。但在一些特殊情况下,翻译工作会涉及到把一门语言的语法翻译到另一门语言上的问题。

最简单的情况是单复数的处理。在中文中单复数很少会导致一个名词发生变化,然而在英语等语言里,单复数往往会导致名词发生变动,而在一些语言里甚至一个两个三个和复数个都对应着不同的形式(在 I2 Localization 里有处理这个情况,并且支持最多为七的情况)。

然而名词的单复数只是这个问题下最简单的一种情况。在 Wayward 中,翻译需要处理更为复杂的语法问题,除了名词单复数外,还有代词和介词等。整个游戏翻译模板里有一个很复杂的表格来表述这种转换:

之所以会存在这种情况是因为,Wayward 是一个 RougeLike 类游戏,而游戏内有不少文本来自程序生成。在这时候就自然而然的涉及到语法的问题。翻译工作也不仅仅是翻译语义,而要考虑对应语言的语法。

而可以遇见的未来是,由于过程生成技术在游戏里越来越广泛的使用,游戏文本的过程生成也必然会越来越盛行。以后涉及到语法的本地化工作的情况也会越来越常见。

配音和口型生成

几乎所有的 3A 游戏都提供配音,而这时候又涉及到 3D 游戏使用对应语言的配音时人物模型口型的问题。很早以前游戏可能会考虑采取捕捉或者人工调整来生成口型数据,而如今更多的是使用算法通过文本来生成对应的口型数据。这样一来又引入了一种全新的需要多语言处理的数据。

结语

以上提到的诸多问题,很多都处于多个领域交叉的情况,甚至你很难界定某些具体问题属于那个领域。但是你要完成一个游戏的多语言工作,往往必然会遇到他们。

另一方面,从最早的普通软件到如今的 3A 游戏,随着游戏技术不停的发展,也会引入越来越多的问题。最早我们可能只需要翻译文本,之后引入了图像文件,再后来游戏配音又引入新的问题(配音和口型)。而可以预见的未来是,随着过程生成技术流行,很多传统的对多语言资源的处理也会面临着翻译内容变为翻译规则。而只要游戏技术不停的发展,游戏本地化工作也会出现新的待解决的问题,这是本地化和国际化做为一个同游戏内多个方面耦合的系统的必然结局。

参考

  1. 游戏编程精粹3 - 1.12 1.13

  2. 《阿拉伯文字文本布局需求》- w3c 国际化兴趣组 阿拉伯文布局特别任务组

* 本文源自作者的知乎专栏投稿。

于React生态系统的一系列令人敬畏的事情。

React

  • React一般资源
  • React社区
  • React在线游乐场
  • React教程
  • React通用教程
  • React钩子
  • React和TypeScript
  • React性能
  • React内部
  • React面试问题
  • React工具
  • React开发工具
  • React框架
  • React造型
  • React路由
  • React组件库
  • React真棒组件
  • 对命令行做出React
  • React测试
  • React库
  • React整合
  • 形式
  • 自动完成
  • 图像
  • 模型库
  • 数据管理
  • 地图
  • 图表
  • React原生
  • React本机常规资源
  • React原生社区
  • React原生教程
  • React原生开发工具
  • React原生样本应用程序
  • React Native Boilerplates
  • React Native Awesome Components
  • ReactAR / VR
  • ReasonReact
  • Flux
  • Flux一般资源
  • Flux实现
  • Flux教程
  • Redux
  • Redux通用资源
  • Redux工具
  • Redux教程
  • MobX
  • MobX通用资源
  • MobX工具
  • MobX教程
  • GraphQL
  • GraphQL规范
  • GraphQL工具
  • GraphQL教程
  • GraphQL实现
  • 服务器集成
  • 数据库集成
  • Relay
  • 中继一般资源
  • 中继教程
  • 中继工具
  • Apollo
  • Apollo综合资源
  • 影片
  • 重要会谈
  • React.js Conf 2015播放列表
  • ReactEurope Conf 2015第1天播放列表
  • ReactEurope Conf 2015第2天播放列表
  • ReactRally Conf 2015播放列表
  • React.js Conf 2016播放列表
  • ReactRally Conf 2016播放列表
  • React.js Amsterdam 2018播放列表
  • 视频教程
  • 演示
  • 示例应用
  • 真正的应用
  • 贡献

React

用于构建用户界面的JavaScript库

React教程

React通用教程

  • React官方教程
  • 在Visual Studio代码中使用React
  • Scrimba - 以交互方式免费学习React
  • FreeCodeCampReact挑战
  • ReactCheatsheet
  • React模式
  • 使用React设置流程

React钩子

  • React钩子
  • 用React Hooks和Context替换Redux
  • React Hooks备忘单:解锁常见问题的解决方案
  • 如何使用React Hooks获取数据?
  • 易于理解React Hook食谱
  • 令人敬畏的React Hooks

React和TypeScript

  • TypeScript,React和Webpack
  • TypeScript中的JSX

React性能

  • React优化性能
  • 介绍React Profiler
  • 优化React:虚拟DOM解释
  • React中优化主要性能问题的权威指南
  • Twitter Lite和高性能Retive渐进式Web应用程序
  • 使用React DevTools Profiler诊断React App性能问题
  • 提高React性能的五大实践
  • React很慢,React很快:在实践中优化应用程序
  • 使用react-window渲染大型列表

React内部

  • Reconciliation
  • React Fiber Architecture
  • Build your own React
  • Inside Fiber: In-depth overview of the new reconciliation algorithm in React

React面试问题

  • 13个基本的React面试问题
  • React面试问题和答案列表

React工具

React开发工具

  • create-react-app - 通过运行一个命令来设置现代Web应用程序
  • react-starter-kit - 同构Web应用程序样板
  • react-devtools - 检查Chrome和Firefox开发人员工具中的React组件层次结构
  • react-hot-loader - 实时调整React组件
  • react-loadable - 用于加载具有promise的组件的更高阶组件
  • loadable-components - 简化了React代码拆分
  • reactotron - 用于检查React和React Native项目的桌面应用程序
  • storybook - UI组件开发和测试
  • react-styleguidist - 隔离的React组件开发环境,带有生活方式指南
  • react-cosmos - 用于创建可重用React组件的开发工具
  • eslint-plugin-react - 为ESLint实现特定的linting规则
  • eslint-plugin-jsx-a11y - 针对JSX元素的a11y规则的静态AST检查器
  • react-axr - React应用程序的可访问性审计

React框架

  • next.js - React框架
  • gatsby.js - 基于React的免费开源框架

React风格

  • styled-components - 组件年龄的可视原语
  • emotion - 用于使用JavaScript编写CSS样式的库
  • radium - 用于React组件样式的工具链
  • jss - CSS的创作工具

React路由

  • react-router - React的声明性路由
  • navi - React的声明性异步路由
  • curi - 用于单页面应用程序的JavaScript路由器

React组件库

  • material-ui - React组件,可以更快,更轻松地进行Web开发
  • ant-design - 具有自然和确定性价值的设计系统
  • blueprint - 基于React的Web工具包
  • office-ui-fabric-react - 用于构建Microsoft Web体验的React组件
  • react-bootstrap - 使用React构建的Bootstrap组件
  • reactstrap - 简单的React Bootstrap 4组件
  • semantic-ui-react - 官方的Semantic-UI-React集成
  • react-fontawesome - 用于React的Font Awesome 5组件库
  • Reakit - React的可访问,可组合和可自定义的组件

React很棒的组件

  • Awesome的React Components列表
  • react-select - 选择React组件
  • react-dnd - 拖放React
  • react-grid-layout - 具有响应断点的可拖动和可调整大小的网格布局
  • react-table - React的轻量级,快速且可扩展的数据网格
  • react-data-grid - 使用React构建的类似Excel的网格组件
  • react-draggable - React draggable组件
  • react-resizable-and-movable - React的可调整大小和可拖动的组件
  • react-resizable - 一个简单的React组件,可以使用句柄调整大小
  • react-resizable-box - React的可调整大小的组件
  • react-sortable-pane - React的可排序和可调整大小的窗格组件
  • react-dates - 一个易于国际化,适合移动设备的网络日期选择器库
  • react-big-calendar - 日历组件
  • react-datepicker - ReactJS Datepicker
  • react-list - 一个多功能的无限卷轴React组件
  • react-intl - 国际化React应用程序
  • react-i18next - React的国际化做得对
  • react-aria-modal - 一个完全可访问的React模态
  • react-hotkeys - React的声明性热键和焦点区域管理
  • react-keydown - React组件的轻量级keydown包装器
  • react-joyride - 为您的应用创建导游
  • react-virtualized - 用于有效渲染大型列表和表格数据的React组件
  • react-window - 用于有效渲染大型列表和表格数据的React组件
  • react-text-mask - React的输入掩码
  • react-loading-skeleton - 创建自动适应您的应用程序的骨架屏幕
  • react-spinkit - 使用CSS为React设置动画的加载指示符集合
  • rheostat - 使用React构建的可访问滑块组件
  • qrcode.react - 用于React的QR组件

做出React 命令行

  • ink - 对交互式命令行应用程序进行React
  • react-blessed - 用于祝福终端接口库的React渲染器

React测试

  • jest - 令人愉快的JavaScript测试框架
  • enzyme - 针对React的JavaScript测试实用程序
  • react-testing-library - 简单而完整的React DOM测试实用程序
  • react-hooks-testing-library - React挂钩测试实用程序,鼓励良好的测试实践

React库

  • react-border-wrapper - 用于在React中沿div边界放置元素的包装器。
  • react-magic - 利用React的强大功能自动AJAXify纯HTML
  • react-toolbox - 一组实现Google Material Design规范的React组件
  • tcomb-react - 允许您检查React组件的所有道具的库
  • react-responsive - 媒体查询响应响应式设计
  • react-is-responsive - 一种在React中创建响应组件的实用程序
  • react-cursor - 用于Facebook React的功能状态管理抽象
  • Omniscient.js - 抽象React组件,用于快速自上而下渲染不可变数据
  • Touchstonejs - React.js支持的UI框架,用于开发漂亮的混合移动应用程序。
  • Elemental - React.js网站和应用程序的UI工具包
  • StateTrooper - 使用CSP集中管理React应用程序的状态
  • Preact:使用相同的ES6 API快速3kb React替代方案。
  • riotjs - 一个类似React的3.5KB用户界面库
  • Maple.js - 将Web组件的概念引入React
  • react-i13n - 一种高性能,可扩展且可插拔的方法,用于检测React应用程序
  • react-icons - svgReact流行图标包的图标
  • Keo - Plain用于创建React组件的功能更强大的Deku方法,具有管道,memoize等功能性好处......
  • Bit - 用于跨应用程序管理和使用React和其他Web组件的虚拟存储库
  • AtlasKit - Atlassian的React UI库
  • ReactiveSearch - Elasticsearch的UI组件库
  • Slate - 用于构建富文本编辑器的完全可自定义的框架。
  • react-animated-transitions - React中的简单动画过渡
  • react-json-schema - 通过将JSON定义映射到您公开的React组件,构造来自JSON的React元素。
  • compose-state - 在React中编写多个setState或getDerivedStateFromProps更新程序
  • react-with-analytics - 轻松实现Google Analytics for React应用程序
  • react-cache-me-outside - React应用程序的OTA数据更新。如何弓数据!
  • PrimeReact - React最完整的UI框架!
  • react-lodash - Lodash作为React组件
  • react-helmet - React的文档主管
  • Stator - 简单,简单的JavaScript状态管理,内置支持React
  • ClearX - 快速,轻松的React状态管理,零学习曲线。 ClearX为您的React应用程序分离关注点提供了极大的灵活性
  • react-snap - 针对SPA的零配置框架无关的静态预渲染
  • Draft.js - 用于构建文本编辑器的React框架
  • refract - 利用React式编程的强大功能为组件增压
  • react-desktop - 使用React构建的OS X和Windows UI组件
  • Reapop - React和Redux通知系统
  • react-extras - 使用React的有用组件和实用程序
  • react-instantsearch - Algolia快速搜索React和React Native应用程序
  • uppy - Web浏览器的下一个开源文件上传器
  • react-motion - 解决动画问题的弹簧
  • react-esi - React Edge Side包含

React整合

  • React Rails
  • ReactJS.NET
  • React ASP.NET Boilerplate
  • React Bootstrap组件游乐场
  • om - ClojureScript接口
  • quiescent - React上的轻量级ClojureScript抽象
  • Reagent - React.js的简约ClojureScript接口
  • react-haskell - Haskell的React绑定
  • Express React views
  • Express Coffee-React视图 - 在服务器上呈现咖啡React
  • React页面中间件
  • ngReact - Angular中的React组件
  • ReactLaravel
  • coffee-react-transform - 为Coffeescript提供React JSX支持
  • sprockets-coffee-react - CJSX的链轮预处理器
  • react-kup - 一个简单的,非侵入性的替代jsx的coffeescript
  • turbo-react - 结合Turbolinks和React来应用DOM差异
  • react-bacon - 使用React和Bacon.js的一个小模块
  • msx - React的JSX Transformer,调整为向Mithril输出调用
  • React.withBackbone - React 16 ready骨干绑定
  • Backbone React Component
  • react-backbone - 用于React的Backbone-aware mixins
  • NestedReact - 与Backbone Views和NestedTypes模型的透明集成
  • backbone-reaction - React,Backbone然后一些
  • react.backbone - React插件使Backbone迁移更容易
  • reactbone - Backbone的React扩展
  • backbone-react-ui - 用于骨干和骨干分离器的React组件
  • react-events - React组件的声明性托管事件绑定
  • react-mixin-manager - React mixin注册管理器
  • gsap-react-plugin - 用于补间React.js组件状态的GSAP插件
  • @plaxdan的react-topcoat - 使用React库构建的Topcoat CSS组件
  • @arnemart的React面漆 - 面漆的React成分集合
  • reactdown - 使用markdown语法编写React组件
  • react-jade - 编译Jade以ReactJavaScript
  • jade-react - 将Jade模板编译为React.DOM表达式
  • gulp-jade-react - 将Jade模板编译成React脱糖JSX和Gulp
  • sbt-reactjs - 使用npmReactSBT插件
  • scalajs-react - Scala.js和Facebook的React之间的内疚
  • react-xtags - 使用React实现xtags
  • jreact - 在服务器端Java上React(使用Rhino或Nashorn)
  • React.hiccup - 用sweet.js编写的JSX的完全替代品
  • react-play - 使用JDK8的Nashorn渲染Play框架中的React组件
  • rx-react - 在RxJS中与React一起使用的实用程序
  • react-with-di - 一个被反射的React.js原型
  • reactfire - ReactJS mixin,可轻松实现Firebase集成
  • firedux - ReactJS的Firebase + Redux
  • react-clickdrag-mixin - ClickDrag mixin for React组件
  • Rewrite the Admin UI of KeystoneJS in React
  • react-masonry-mixin - 用于砌体的独立混合物(@desandro)
  • react-packery-mixin - 独立混合用于Packery(Metafizzy)
  • react-dropzone - 带有React.js的简单HTML5拖放区域。
  • aframe-react - A-Frame VR + React
  • react-three - 使用three.js创建和控制3D场景的React绑定
  • react-three-renderer - 使用React渲染到three.js画布中
  • react-threejs - React和Three.js之间最简单的绑定
  • react-masonry-css - 由CSS驱动的快速砌体布局,无依赖性
  • react-captcha - 针对Google的react.js reCAPTCHA
  • reaptcha - 用于Google reCAPTCHA的干净,现代且简单的React包装器
  • react-recaptcha-that-works - React的reCAPTCHA桥

Form

  • React Forms
  • react-formal - 为React提供更好的表单验证和价值管理,提供最少的布线
  • react-forms - React的表单库
  • valuelink - 具有扩展React链接的全功能双向数据绑定
  • wingspan-forms - Facebook React的动态表单库
  • newforms - React的同构形式处理
  • formjs - Reactjs的表单生成器
  • react-form-b​​uilder - React.js的表单生成器
  • plexus-form - 使用JSON-Schema进行React的动态表单组件
  • tcomb-form - 用于开发表单编写较少代码的UI库
  • formsy-react - React JS的表单输入构建器和验证器
  • Learn Raw React: Ridiculously Simple Forms
  • Winterfell - 在React中生成复杂,经过验证和扩展的基于JSON的表单
  • Redux-Autoform - 从元数据中动态创建Redux-Forms
  • uniforms - 一堆React组件和帮助器,可以轻松生成和验证表单
  • formik - React中的表单,没有眼泪
  • NeoForm - 用于表单状态管理和验证的模块化HOC
  • react-jsonschema-form - 用于从JSON Schema构建Web表单的React组件
  • List View Select - 具有本机组件的React Native的Toggleable选择框
  • Final Form
  • formland - 一个简单,超灵活,可扩展的基于配置的表单生成器
  • React - React形式 - React中的角状React形式
  • unform - ReactJS表单库,用于创建不受控制的表单结构,包含嵌套字段,验证等等!

自动完成

  • @rackt的React自动完成 - 符合WAI-ARIA的React自动完成功能
  • react @ autosuggest由@moroshko提供 - 符合WAI-ARIA标准的React autosuggest组件
  • @ eliseumds的React自动完成 - 只需品尝一些ReactJS + RxJS
  • @prometheusresearch的react-autocomplete - 基于React的自动完成小部件
  • instaleype by @gragland - 简单React自动完成组件
  • downshift - 构建简单,灵活,符合WAI-ARIA标准的增强型输入React组件的原语
  • React Bootstrap Typeahead - 基于React的typeahead,依赖于Bootstrap进行样式化,最初受到Twitter的typeahead.js的启发。

Graphics

  • react-art - 反映ART绘图库的桥梁
  • react-canvas - React组件的高性能渲染
  • react-famous - 使用Famo.us以60 FPS的复杂3D动画UI
  • react-kinetic - HTML5 Canvas通过KineticJS使用React
  • react-svg-morph - 将你的svg组件变为另一个
  • react-hooks-svgdrawing - 使用React钩子绘制SVG

模型库

  • mori - ClojureScript的持久数据结构和支持API
  • NestedTypes - 具有“纯渲染”支持的快速可变模型
  • swarm - JavaScript复制模型(MVC的M)库
  • caplet - JavaScript模型库

数据管理

  • Immutable.js - Javascript的不可变数据集合
  • cortex - 用于使用React集中管理数据的JavaScript库
  • avers - 一个现代客户端模型抽象库
  • imvvm - React的不可变模型 - 视图 - 视图模型
  • morearty.js - 在纯JavaScript中更好地管理React
  • valuable - React的不可变数据存储
  • react-resolver - 用于React组件的递归延迟加载数据的同构库
  • freezer-js - React的轻量级和React式不可变数据结构
  • MobX - 简单,可扩展的状态管理
  • Qaf - 作为商店的组件。基于上下文的React的简单状态管理
  • baobab - 带有游标的JavaScript持久性和可选的不可变数据树
  • baobab-react - 为Baobab进行React整合
  • datascript - ClojureScript中的不可变数据库和Datalog查询引擎
  • immstruct - 不可变数据结构,具有基于组件的库(如React)中从上到下属性的历史记录
  • seamless-immutable - JavaScript的不可变数据结构,它与普通的JS Arrays和Objects向后兼容
  • tydel - 使用React绑定的类型模型和集合
  • extendedable-immutable - 扩展任何Immutable.js数据结构
  • statty - React和Preact应用程序的一个微小且不显眼的状态管理库
  • Hydux - React的Elm-Like州经理,“包括电池”
  • ReSub - 用于编写更好的React组件和数据存储的库
  • ProppyJS - 用于功能道具组合的小型库
  • WatermelonDB - 下一代数据库,用于强大的React和React Native应用程序,可扩展到10,000个记录并保持快速
  • Effector - 快速而强大的无功状态管理器。允许您编写简单,快速且类型安全的代码并轻松管理React状态。
  • reactn - React,但内置全局状态管理
  • immer - 通过改变当前状态来创建下一个不可变状态

地图

  • react-googlemaps - 反映Google地图的界面
  • react-maps - React的映射组件
  • react-google-maps - React.js Google Maps集成组件
  • react-gmaps - React.js的Google Maps组件
  • react-map-gl - MapboxGL-js加上覆盖API的React包装器
  • google-map-react - Isomorphic google map React组件
  • react-mapbox-gl - 一个mapbox-gl-js包装器,使APIReact友好
  • google-maps-react - 使用React,延迟加载依赖项,当前位置查找器和Fullstack React团队的测试驱动方法的声明式Google Map React组件。
  • react-leaflet - 用于Leaflet映射的React组件
  • react-geo - 使用react,antd和ol的一组与地理相关的组件
  • pigeon-maps - 没有外部依赖关系的ReactJS映射

图表

  • DevExtreme React Chart - 基于高性能插件的Bootstrap和Material Design的React图表
  • react-chartjs - 使用chart.js的常见React图表组件
  • react-stockcharts - 具有ReactJS和d3的高度可定制的股票图表
  • Number Picture - 使用React和D3构建动画可视化的低级构建块。
  • Victory - 用于构建交互式数据可视化的可组合React组件的集合
  • Recharts - 一个基于D3的图表库,带有一个很棒的声明式API
  • React-ApexCharts - ApexCharts的React组件(交互式SVG图表库)
  • reaviz - 基于D3.js的React数据可视化库
  • react-vis - 一个React可视化库,其设计考虑了以下原则:React友好,高级和可定制,富有表现力和行业强大。
  • nivo - 它提供了丰富的数据可视化组件,构建在D3和React库之上。
  • vx - 可重用的低级可视化组件的集合。它结合了D3的强大功能,可以利用React的优势生成可视化,以更新DOM。
  • echarts-for-react - 一个非常简单的ECharts React包装器。
  • Chartify - 使用CSS构建图表的React插件。
  • Semiotic - 结合了React和D3的数据可视化框架。

React原生

使用React构建本机应用程序的框架
  • React本机常规资源
  • React原生官方网站
  • React Native GitHub
  • React原生通讯
  • React本机游乐场
  • React Native Awesome List
  • React Native StackOverflow
  • React原生无线电

React原生教程

  • React Native Tutorial
  • 介绍React Native:使用JavaScript构建应用程序
  • React Native简介:使用JavaScript构建iOS应用程序
  • React Native符合异步函数
  • React Native中的手势检测 - 修复意外的平移
  • Digital Smart Mirror lab with React Native
  • React Native的美丽:使用JavaScript构建您的第一个iOS应用程序(第1部分)
  • React Native的美丽:使用JavaScript构建您的第一个iOS应用程序(第2部分)
  • React Native Flexbox上的迷你课程
  • Flexbox完整指南
  • Test driving react native applications
  • 在TypeScript中使用React Native

React原生开发工具

  • react-native-code-push - 用于CodePush的React Native模块

React原生样本应用程序

  • HackerNews
  • Ziliun
  • FinanceReactNative
  • SplashWalls
  • NBAreact

React Native Boilerplates

  • 创建React Native App - 在没有构建配置的任何操作系统上创建React Native应用程序,包含或不包含Expo
  • Snowflake - 使用Redux,Parse.com,Jest(88%覆盖率)React原生iOS和Android
  • Ignite - React Native,样板,插件,生成器等最热门的CLI!
  • React Native Starter Kit - 一个强大的入门项目,用于引导您的移动应用程序的开发

React Native Awesome Components

  • Expo - 用于制作跨平台移动应用程序的世博会平台
  • react-navigation - React Native应用程序的路由和导航
  • react-native-social-share - 使用React Native的iOS和Android原生Twitter和Facebook共享弹出窗口
  • react-native-fbsdk - 围绕iOS Facebook SDK的包装器
  • react-native-side-menu - 用于创建侧边菜单的简单可自定义组件
  • react-native-mapbox-gl - Mapbox GL对原生模块做出React
  • react-native-icons - React Native中的快速简单图标
  • react-native-vector-icons - 用于React Native的3000个可自定义图标,支持NavBar / TabBar
  • react-native-google-signin - Google Signin for React Native
  • React天然选取器模态视

ReactAR / VR

React用于增强和虚拟现实的用法
  • React 360 - 使用React创建令人兴奋的360和VR体验
  • Viro React - 使用React Native快速构建AR / VR应用程序的平台

ReasonReact

ReactJS的原因绑定
  • ReasonReact官方网站

Flux

用于构建用户界面的应用程序架构

Flux一般资源

  • Flux官方网站
  • Flux GitHub

Flux实现

  • Flux Comparision
  • RefluxJS
  • Fluxxor
  • Marty
  • McFly
  • Alt
  • Fluxible
  • NuclearJS
  • Flummox
  • Coflux
  • MobX
  • Sinux

Flux教程

  • 使用React和Flux构建应用程序
  • Flux:构建客户端应用程序的简单架构模型
  • 使用来自Yahoo的Dispatchr和Fetchr的Isomorphic Flux示例
  • 使用React.js和Flux进行异步请求
  • 在CoffeeScript中实现Flux
  • React:Flux Architecture
  • 了解Flux
  • 在Flux中哟
  • React.js架构 - Flux VS Reflux
  • 避免单页应用程序中的事件链
  • ReactJS和Flux
  • 解构ReactJS的流量
  • Flux一步一步
  • 实践中的流量
  • 什么是Flux应用程序架构?
  • React + Flux由Rails API支持:第1部分
  • Reails + Flux由Rails API支持:第2部分
  • Reails + Flux由Rails API支持:第3部分
  • Flux解决方案通过实例比较
  • Flux Cargo-Culting
  • 通量案例
  • Flux框架的演变
  • 通过示例与Flux作出React - 解析了一个简单的Todo List
  • 从入门到放弃! - 初学者教程
  • 使用React和Nuclear JS的简单计数器应用程序
  • LearnCode.academy Flux教程系列

Redux

JavaScript应用程序的可预测状态容器

Redux通用资源

  • Redux GitHub
  • Redux官方网站
  • 很棒的Redux列表

Redux工具

  • react-redux - Redux的官方React绑定
  • redux-devtools - Redux的DevTools,具有热重新加载,动作重放和可自定义的UI
  • react-router-redux - 保持react-router和redux同步的绑定
  • redux-form - 使用react-redux保持形状状态的高阶组件
  • redux-thunk - 用于redux的Thunk中间件
  • redux-logger - 用于redux的Logger中间件
  • reselect - Redux的选择器库
  • normalizr - 根据模式规范化嵌套JSON
  • redux-saga - Redux应用程序的另一种副作用模型
  • redux-data-fx - Redux的声明性副作用
  • redux-observable - Redux的RxJS中间件
  • redux-analytics - Redux的分析中间件
  • redux-undo - 用于向redux状态容器添加撤消/重做功能的高阶减少器
  • redux-search - 用于客户端搜索的Redux绑定
  • redux-mock-store - 用于测试redux异步动作创建器和中间件的模拟存储
  • redux-immutable - 创建一个与Immutable.js状态一起使用的Redux combineReducers的等效函数
  • redux-react-i18n - 用于还原/React的i18n溶液
  • R16N - 还原/ReactI18n溶液
  • redux-actiontyper - Helper为Redux创建更简洁的动作类型
  • redux-state-validator - 一个简单的redux中间件,用于使用JSON Schema验证redux状态值和对象类型
  • redux-persist - 坚持并补充redux商店

Redux教程

  • 在ES6中使用React和Redux构建应用程序
  • Redux入门
  • 使用惯用Redux构建React应用程序
  • Redux教程
  • React,Redux和Immutable入门:测试驱动的教程:第1部分
  • React,Redux和Immutable入门:测试驱动的教程:第2部分
  • 全栈Redux教程
  • 使用Redux和React-Router进行服务器端渲染
  • Redux深度介绍
  • 单元测试Redux应用程序
  • 使用JWT身份验证保护您的React和Redux应用程序
  • 使用React,Redux和redux-saga构建图像库
  • 使用redux调用API的简化方法
  • 基于React Redux的献血者演示应用程序
  • LearnCode.academy Redux教程系列
  • 实用的Redux
  • 初学者的完整React Redux教程

MobX

JavaScript应用程序的简单,可扩展状态管理

MobX通用资源

  • MobX GitHub
  • MobX官方网站

MobX工具

  • mobx-react - React组件包装器,用于将React与MobX结合使用

MobX教程

  • 10分钟介绍MobX和React
  • 使用MobX管理React应用程序中的复杂状态
  • 将您的应用程序从Redux重构为MobX
  • Redux或MobX:尝试解散混乱

GraphQL

查询语言

GraphQL规范

  • GraphQL官方网站
  • GraphQL规范
  • GraphQL规范库

GraphQL工具

  • GraphCMS - GraphQL无头CMS
  • GraphQL CMS
  • Mongoose模式到GraphQL
  • GraphQL桥接到REST API
  • GraphQL Playground - GraphQL IDE,用于更好的开发工作流程

GraphQL教程

  • GraphQL简介
  • 关于GraphQL的第一个想法
  • 以类似的方式在GraphQL中建模查询
  • Thin and Graphy
  • GraphQL概述 - GraphQL和Node.js入门
  • 使用GraphQL编写基本API
  • 使用Node.js和SQL构建GraphQL服务器
  • GraphQL Tour:变量
  • 如何Graphql - GraphQL的Fullstack教程

GraphQL实现

  • graphql-js - GraphQL for JavaScript的参考实现
  • react-transmit - 基于JavaScript Promises的Relay-inspired库
  • graphql-ruby - Facebook的GraphQL的Ruby实现
  • graphql-java - GraphQL Java实现
  • sangria - Scala GraphQL客户端和服务器库
  • graphql-php - GraphQL参考实现的PHP端口
  • graphene - Python中的GraphQL变得简单
  • graphqllib - Python的GraphQL实现
  • graphql-dotnet - 用于.NET的GraphQL
  • graphql-go - Go / Golang的GraphQL

服务器集成

  • express-graphql - 使用Express创建GraphQL HTTP服务器
  • graphql-yoga - 运行GraphQL服务器的最简单方法

数据库集成

  • Hasura - Postgres上的即时实时GraphQL
  • Prisma - 一个高性能的开源GraphQL ORM-like层,可以在GraphQL服务器中完成繁重的任务。
  • graphql-bookshelf - 一些帮助定义BookshelfJS模型周围的GraphQL架构
  • GraphpostgresQL - PostgreSQL的GraphQL
  • graffiti - Node.js GraphQL ORM
  • sql-to-graphql - 根据您的SQL数据库结构生成GraphQL API
  • graphql-sequelize - 通过Sequelize实现MySQL和Postgres的GraphQL和Relay

Relay

数据驱动的React应用程序

Relay一般资源

  • 接力官方网站
  • 接力GitHub

Relay教程

  • 官方接力入门
  • 视觉学习者的接力
  • Getting Started with Relay
  • Relay and Routing

Relay工具

  • graphql-relay-js - 一个帮助构建支持react-relay的graphql-js服务器的库
  • react-router-relay - React Router的中继集成
  • relay-local-schema - 在没有GraphQL服务器的情况下使用Relay
  • relay-codemod - 基于jsodeshift的Codemod脚本,用于更新中继API

Apollo

基于GraphQL的数据堆栈

阿波罗综合资源

  • 阿波罗官方网站
  • Apollo GitHub
  • 阿波罗博客
  • Apollo Slack

Apollo工具

  • react-apollo-redux - 一个小包装器,用于响应阿波罗突变自动发送动作

影片

  • reactjsvideos.com

重要会谈

  • Pete Hunt:React:重新思考最佳实践 - JSConf EU 2013
  • Pete Hunt:React:重新思考最佳实践(更新) - JSConf.Asia 2013
  • Tom Occhino和Jordan Walke:Facebook上的JS应用程序 - JSConfUS 2013
  • React:JS中的CSS
  • Pete Hunt:可预测,不正确 - Mountain West JavaScript 2014
  • 黑客方式:重新思考Facebook上的Web应用程序开发
  • Christopher Chedeau:为什么React Scale? - JSConf2014
  • Christopher Chedeau:React的架构 - OSCON 2014
  • Pete Hunt:ReactRESTful UI渲染 - 奇怪的循环2014
  • Pete Hunt:Instagram.com如何运作 - OSCON 2014
  • Bill Fisher和Jing Chen:React和Flux - NewCircle Training 2014
  • Sebastian Markbage:最小的API表面积 - JSConf EU 2014
  • Avik Chaudhuri:规模的JavaScript测试和静态类型系统 - 规模2014
  • React Native&Relay:为移动设备带来现代网络技术 - f8 2015)
  • Citrusbyte推出GraphQL:与Nick Schrock合作的横向平台
  • Laney Kuenzel:接力中的突变和订阅 - JSConf 2015
  • React今天和明天和90%清洁React与钩子 - React Conf 2018
  • React会议
  • React视频
  • 令人敬畏的React会谈
  • React.js Conf 2015播放列表
  • ReactEurope Conf 2015第1天播放列表
  • ReactEurope Conf 2015第2天播放列表
  • ReactRally Conf 2015播放列表
  • React.js Conf 2016播放列表
  • React Amsterdam 2016播放列表
  • ReactEurope Conf 2016第1天播放列表
  • ReactEurope Conf 2016第2天播放列表
  • ReactRally Conf 2016播放列表
  • React.js Amsterdam 2018播放列表

视频教程

  • 第一次和Dan Abramov一起尝试React Hooks

演示

  • React和React原住民博物馆
  • react.rocks - 具有可用代码的Pinterest风格的在线演示目录
  • react-hn - 一个React&react-router-powered of Hacker News
  • react-pokemon - 用于显示神奇宝贝的React组件
  • React + Backbone TodoMVC
  • React + NestedTypes TodoMVC
  • react-rxjs-todomvc - 使用React和RxJS实现TodoMVC
  • react-mvc - 用React和纯MVC编写的示例聊天应用程序
  • react-observe-todomvc - 在React和Object.observe之上构建的TodoMVC实现
  • react-lights-out - React框架功能和灵活性的简单演示
  • todomvc-swarm - 使用Swarm进行实时协作的React TodoMVC实现
  • reactodo - 使用React构建的多个localStorage TODO列表
  • lifequote - 人寿保险快速报价申请的React端口
  • reactor-demo - 使用React的同构Javascript应用程序
  • imgible - 基于React的Imgur-like同构演示应用程序
  • wow-realm-status-react - React - 魔兽世界状态:React版
  • react-json-editor - 一个通用的JSON编辑器
  • react-todos - Backbone的示例TODO应用程序与React JS的视图
  • github-issues-viewer - github在react + backbone中发出查看器构建
  • wolfenstein3D-react - Wolfenstein用React编写的渲染层
  • Flux ImmutableJS TodoList
  • Hapi + React + Flux用户管理系统
  • Redux TodoMVC
  • React / Redux CRUD在本地存储中具有持久状态
  • React Slack克隆 - 使用React和Chatkit构建的综合Slack克隆
  • React颜色漂移 - 与React的生成艺术
  • overreacted.io - Dan Abramov的个人博客

示例应用

  • isomorphic500 - 使用React和Fluxible构建的同构JS应用程序
  • fil - 浏览器中解释器的游乐场(Redux)
  • sound-redux - 使用React / Redux构建的Soundcloud客户端
  • react-pomodoro - 开发人员的番茄钟计时器
  • Do - 使用React和Redux构建的Notes管理应用程序
  • soundcloud-react-redux - 使用React / Redux构建的SoundCloud客户端
  • soundcloud-react-mobx - 使用React / MobX构建的SoundCloud客户端
  • 用React和Redux重新实现Winamp 2.9
  • ComingOrNot - 使用react,react-router,redux,graphQL和无服务器构建的Event Planner
  • React Reduction - 使用React + Bootstrap4构建的Admin Dashboard
  • React Code Splitting Sample - React + React Router + Flux
  • 响应式React'电影数据库'(TMDb)应用程序
  • CoreUI - 使用React和Bootstrap 4构建的免费管理面板
  • react-shopping-cart - 使用React和Redux构建的简单电子商务购物车应用程序
  • hackernews-react-graphql - 使用React和GraphQL用通用JavaScript重写的黑客新闻克隆

真正的应用

  • Firefox调试器
  • 远程复古 - 分布式团队的敏捷回顾
  • Spectrum - 简单,强大的在线社区
  • Mattermost - 开源Slack替代品