facebook native为什么不让React-native在Windows上也能开发

原文地址:/tmallfe/tmallfe.github.io/issues/20 关于对于react-native在实际中的应用, facebook官方的说法是react-native是为多平台提供共同的开发方式,而不是说一份代码,多处使用。 然后一份代码能够多处使用还是很有意义的,我所了解到的已经在尝试做这件事情的:modularise-css-the-react-way [1]react-style [2]native-css [3][1]:/@jviereck/modularise-css-the-react-way-1e817b317b04[2]:/js-next/react-style[3]:/raphamorim/native-css 现阶段大家都是在摸索中,且react-native 还不够成熟,为此我也想通过一个实际的例子提前探究一下共享代码的可行性。下面是我以SampleApp做的一个简单demo, 先奉献上截图:web 版本react-native版本初步想法组件react-native基本上是View套上Text这样来布局,为了做web和native的兼容,我们得提供继承版本的View ,针对不同的平台返回不同做兼容,我们将提供:Share.View -& View (reac-native = View , web = div)Share.P + Share.Span -& Text (Text在react-native中分为块级别和inline级别所以得用两个元素来区分)样式我们知道react-native的样式是css很小的一个子集,大概支持50种属性,为了做到web和native使用同样地样式,那么我的想法是:1. 使用css文件来编写样式,通过编译的方式生产不同平台需要的样式2. 对于web,使用auto-prefixel处理,生产web兼容的css代码3. 对于react-native,生成对应的styles.js4. css的写法用OOCSS的方式这样做的另外一个原因是,因为css是全集,react-native是子集,全集到子集可以通过删减来处理,但是如果想通过子集到全集就会很麻烦(react-style就是通过react-native来生成css)。 且这样做还有很多好处,例如我们可以支持react-native里边不支持的css写法,例如
这种写法很容易得到兼容。其实这里,无论react-native还是react-web都支持
这样的写法. 上面例子中的web截图其实是没有引用css的,但inline样式对于web来说并不是优选。 后面也做了通过react-native的css到web的css的尝试, 那种方案在样式上可以完全基于react-native来写,直接兼容web。实现思路首先大概整理一下我们需要解决的问题:1. 如何区分web和native2. js如何对应不同的平台来编译,因为react-native使用的是自己的依赖管理packager3. css如何编译为js4. 代码结构应该是怎样的问题一 : 如何区分web和nativereact-native 里边会有window变量吗?我试了一下,是有的,那window变量里边不可能有location,document之类的吧, 借着这种想法,可用如下方法来区分native和webvar isNative = !window.location问题二:如何对应不同平台打包对于react-native,是通过packager来打包的,具体的实现和逻辑可以随时查看packager的readme文档。 那我们怎么将适用于native的代码打包成web的代码,首先想到的是browserify, webpack。 都是遵循commonJs规范,个人更喜欢前者, 用它来应该足以满足需求。问题三: css如何编译为js前面提到了native-css , 可以用它来帮助我们完成打包。问题四:代码结构应该是怎样的web和native的代码都写在同一个地方,如何做区分呢? 这个问题当然最好就是不做区分,或者就像女生的衣服,期望是越少越好,但永远不可能木有(猥琐了:-】)。我设想中的一个最简模型的目录结构,web和ios有不同的入口,web和ios有单独的目录, 组件共享, 如下:好像很复杂的样子, 其实相对于原本的SampleApp,只是多了index.web.js , web目录, shared三者。 然后style通过style.css来描述。具体实现我们已经整理了具体的实现思路,下面是我就会直接吐出我的实现代码, 重点的地方都会在源码里边有注释先看应用代码:ios入口:index.ios.js
* Sample React Native App
* /facebook/react-native
'use strict';
var React = require('react-native');
var Compo = require('./compo');
React.AppRegistry.registerComponent('ShareCodeProject', () =&
Compo);web入口:index.web.js
var Compo = require('./compo');
React.render(&Compo /&, document.getElementById('App'));样例组件:compo.js
// 依赖的公共库,通过它获取兼容的组件
var Share = require('./shared');
// styles是style.css build过后生成的style.js
var styles = require('./styles');
var React = Share.R
var Compo = React.createClass({
render: function() {
&View style={styles.container}&
&P style={styles.welcome}&
Welcome to React Native!
&P style={styles.instructions}&
To get started, edit index.ios.js
&P style={styles.instructions}&
Press Cmd+R to reload,{'\n'}
Cmd+Control+Z for dev menu
module.exports = C组件样式: style.css
* 大家可能发现了css的写法还是小驼峰,是的不是横杠,暂时我们还是以这种方式处理
* native-css 目测不支持横杠,(自己重写native-css相对来说是比较容易的,完全可以做到css兼容到react-native的css子集)
.container {
justifyContent: center;
alignItems: center;
backgroundColor: #F5FCFF;
.welcome {
fontSize: 20;
textAlign: center;
margin: 10;
.instructions {
textAlign: center;
color: #333333;
marginBottom: 5;
}index.html
&!DOCTYPE html&
&title&Hello React!&/title&
&script src=&./react.js&&&/script&
&!-- No need for JSXTransformer! --&
&div id=&App&&&/div&
&script src=&./index.web.js&&&/script&
&/html&Share部分的处理shared.js
var Share = {};
var React = require('react-native');
var isNative = !window.location;
* 判断是web的时候,重新赋值React
if (window.React) {
React = window.R
Share.React = R
* 做底层的兼容, 当然这里只是做了一个最简demo,具体实现的时候可能会对props做各种兼容处理
if (!isNative) {
Share.View = React.createClass({
render: function() {
return &div {...this.props}/&
Share.P = React.createClass({
render: function() {
return &p {...this.props}/&
Share.Span = React.createClass({
render: function() {
return &span {...this.props}/&
// alert('isNative')
Share.View = React.V
Share.P = React.Text;
Share.Span = React.Text;
Share.Text = React.Text;
module.exports = Sbuild打包程序
var fs = require('fs');
var nativeCSS = require('native-css'),
var cssObject = nativeCSS.convert('./styles.css');
toStyleJs(cssObject, './styles.js');
buildWebReact();
* native-css获取到得是一个对象,需要将cssObject转化为js代码
function toStyleJs(cssObject, name) {
console.log('build styles.js \n');
var tab = '
var str = '';
str += '/* build header */\n';
str += 'var styles = {\n';
for(var key in cssObject) {
var rules = cssObject[key];
str += tab + key + ': {\n';
for(var attr in rules) {
var rule = rules[attr];
str += tab + tab + attr + ': ' + format(rule) + ',\n'
str += tab + '},\n'
str += '};\n'
str += 'module.exports =\n'
fs.writeFile(name, str)
function format(rule) {
if (!isNaN(rule - 0)) {
return '&' + rule + '&';
* 构造web使用的react
function buildWebReact() {
console.log('build web bundle');
var browserify = require('browserify');
var b = browserify();
b.add('./index.web.js');
// 添加es6支持
b.transform('reactify', {'es6': true});
// ignore掉react-native
b.ignore('react-native')
var wstream = fs.createWriteStream('./web/index.web.js');
b.bundle().pipe(wstream);
}也尝试一下由react-native 到react-web的兼容方案问题flexbox的写法在react-native上面我们会发现, 不用在父元素上声明display: 在web上必须要做这样的声明, 所以我们需要让设置了flex:*的元素的父元素display: 。flexbox在android上是由很多bug的,所以必须要解决兼容性问题webkit-box解决方案1. nested 的style写法
styles = StyleSheet.create({
flexDirection: 'row',
});这样的写法有些像less,我们可以知道元素的层级关系, 这样我可以遍历这个对象,查找子元素有设置flex的,父元素加上display:flexbox。2. 通过自定义元素 var GridSystem = require('GridSystem'); var {
} = GridS &Row ...&
&/Row&通过标签的方式, 相当于给react-native或者react添加了一个网格系统,同时我们可以直接在Row上设置display:flex.3. 遍历查找完全同react-native原生的写法,直接在web中兼容,遍历所有有flex样式的节点,直接做兼容。
componentDidMount: function() {
var $node = this.getDOMNode();
var $parent = $node.parentNode;
var $docfrag = document.createDocumentFragment();
$docfrag.appendChild($node);
var treeWalker = document.createTreeWalker($node, NodeFilter.SHOW_ELEMENT, {
acceptNode: function(node) {
return NodeFilter.FILTER_ACCEPT;
}, false);
while(treeWalker.nextNode()) {
var node = treeWalker.currentN
if (node.style.flex) {
flexChild(node);
flexParent(node.parentNode);
$parent.appendChild($docfrag);
function flexChild(node) {
if (node.__flexchild__) {
node.__flexchild__ = true;
var flexGrow = node.style.flexG
addStyle(node, `
-webkit-box-flex: ${flexGrow};
-webkit-flex: ${flexGrow};
-ms-flex: ${flexGrow};
flex: ${flexGrow};
node.classList.add('mui-flex-cell');
function flexParent(node) {
if (node.__flexparentd__) {
node.__flexparentd__ = true;
node.classList.add('mui-flex');
.mui-flex {
display: -webkit-box!important;
display: -webkit-flex!important;
display: -ms-flexbox!important;
display: flex!important;
-webkit-flex-wrap:
-ms-flex-wrap:
flex-wrap:
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction:
-ms-flex-direction:
flex-direction:
.mui-flex-cell {
-webkit-flex-basis: 0;
-ms-flex-preferred-size: 0;
flex-basis: 0;
max-width: 100%;
display: block;
position: relative;
}总结这个demo很简单,实际应用中应该会有很多地方的坑, 比如:模块中依赖只有native才有的组件Native模块的事件处理和web大不相同现实环境中的模块更多,更复杂,如何做模块的管理对于write once, run anywhere 这个观点. 相信不同的人会有不同的看法,但无论如何,如果兼容成本不大,这样的兼容技术方案对业务开发是有极大意义的。ps0: 这里仅仅做可行性方案的分析,不代表我认同或不认同这种方案。ps1: 大家如果有更好的方案,求教,求讨论。 
 文章为作者独立观点,不代表微头条立场
的最新文章
原文地址:http://www.nosqlnotes.net/archives/333 持续可用本文主要针对原文地址:/p/ 什么是优秀的互原文地址:q.com/cn/news/2015/04/micro-servic原文地址:http://www.innomysql.net/article/15612.html 前言上周参原文地址://mobile-size/最近一直在研原文地址:/p/ 上一篇文章我们原文地址:/miniflycn/qvd/issues/1 作为React原文地址:/serialization_vs_deserial原文地址:/guagua/并发语言俨然是应原文地址:/hustskyking/p/Thinking-in-原文地址:/tmallfe/tmallfe.github.io/issu项目地址:/richtr/NoSleep.js 看源码:UIView-FDCollapsibleConstraints最优雅的方式解决自动布局中子View的动态显示原文地址:q.com/cn/news/2015/04/async-distri原文地址:/p/ 做故障管理这么原文地址:q.com/cn/articles/how-ctrip-improv项目地址:/ghosert/note/90884 我是 作业部项目地址:/yahoo/squidb Yahoo 开源的SQLite 数原文地址:https://developer.mozilla.org/en-US/docs/Web/API/原文地址:/p/ 首先,很抱歉用原文地址:q.com/cn/news/2015/04/LinkedIn-homDistributed Configuration Management Platform分布式配置管理平台原文地址:.cn/s/blog_e5vgv6.h这是真的,注释还在!关爱孕妇_孕妇须知_亲子宝典_育儿知识_母婴用品 | 中国孕妇网 http://www.项目地址:/Bilibili/DanmakuFlameMaster Da原文地址:/tangyanbo/p/4462734.html 参这里贴出了第一篇通过零拷贝实现有效数据传输 /developerwor原文地址:/articles/kafkaio.htm原文地址:http://blog.csdn.net/rchm8519/article/details/453项目地址:/JayFang1993/DropDownMenu 效果:gi原文地址:/a/0622NB原文地址:/allwefantasy/my-life/blob/mast一共有四篇文章,这里贴出第一篇大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理http://o原文地址:http://arccode.net//%E5%89%8D%E5%90%8E%原文地址:/hustskyking/p/fe-project.h原文地址:/xinz/p/4470424.html图片较大原文地址:/p/ 17.4 萝卜原文地址:/cache-algorithm 引言我们都听过 c原文地址:/tmallfe/tmallfe.github.io/issu原文地址:/2015/03/is-intellij-gh_9ad技术跟进,好文推荐,源码分析热门文章最新文章gh_9ad技术跟进,好文推荐,源码分析FB开源React Native,用JS开发原生iOS应用
招聘信息:
Facebook今日正式开源了React Native库,目前已经可在github上下载,目前只有iOS版,不过Android版本很快也将开源。开发者可使用JavaScript和Facebook的React库开发原生的iOS和Android应用程序。同时Facebook还开源了-一个针对React Native、web以及原生移动开发的IDE。Nuclide基于Atom构建,并且有活跃的社区作为支持。React Native使用Javascript将app编译为原生的应用程序视图,提供了用户熟悉的iOS和Android设备上的外观和体验。React Native并不像你此前使用过的web封装包,其代码表现几乎和原生的应用程序一样。Facebook已经使用React Native开发了其旗下主要的应用程序,比如Facebook Groups,这款应用就是使用React Native渲染了大部分视图。该公司表示React和React Native可让开发者只学习一种语言就能轻易为任何平台高效地编写代码。并且Facebook将会在React Native继续投资和投入。Facebook宣布开源该项目,对很多开发者来说都是相当激动的一件事。此前Facebook就开源了自家多个项目,比如此前的网络测试工具Augmented Traffic Control (ATC),动画引擎POP以及微调工具Tweaks等。React Native特点包括:原生的iOS组件开发者可使用标准平台组件,比如iOS平台上的UITabBar和UINavigationController,可以让开发者的应用程序拥有和原生平台一致的外观和体验,并保持较高的品质。这些组件可以轻松并入开发者的应用程序中。var&React&=&require('react-native');
var&{&TabBarIOS,&NavigatorIOS&}&=&R
var&App&=&React.createClass({
&&render:&function()&{
&&&&return&(
&&&&&&&&&&
});异步执行JavaScript应用代码和原生平台之间所有的操作都是异步执行,原生模块也可以使用额外线程,这意味着把开发者可以解码主线程图像,并将其在后台保存至磁盘,而文本和布局的估量计算也不会阻塞UI等。因此React Native app的流畅度和响应性都非常好。通信也是完全可序列化的,当运行完整的应用程序时,这允许开发者使用Chrome Developer Tools来调试JavaScript,或者在模拟器中,或者在真机上。触摸处理iOS有一个非常强大的系统--Responder Chain,可以用来响应复杂视图层级中的事件,但并没有类似功能的web工具。React Native可实现类似的响应系统并提供高水平的组件,比如TouchableHighlight,无需额外配置即可与滚动视图和其他元素适度整合。var&React&=&require('react-native');
var&{&ScrollView,&TouchableHighlight,&Text&}&=&R
var&TouchDemo&=&React.createClass({
&&render:&function()&{
&&&&return&(
&&&&&&&&&console.log('pressed')}>
&&&&&&&&&&Proper&Touch&Handling
});弹性框和样式(Flexbox and Styling)布局视图应该是简单的,所以我们将web平台上的弹性框模块引入了React Native。弹性框可用来搭建最常用的UI布局,比如代用边缘和填充的堆叠和嵌入。React Native还支持常见的web系统,比如fontWeight和StyleSheet。var&React&=&require('react-native');
var&{&Image,&StyleSheet,&Text,&View&}&=&R
var&ReactNative&=&React.createClass({
&&render:&function()&{
&&&&return&(
&&&&&&&&&&
&&&&&&&&&&&&React&Native
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&Build&high&quality&mobile&apps&using&React
&&&&&&&&&&
var&styles&=&StyleSheet.create({
&&row:&{&flexDirection:&'row',&margin:&40&},
&&image:&{&width:&40,&height:&40,&marginRight:&10&},
&&text:&{&flex:&1,&justifyContent:&'center'},
&&title:&{&fontSize:&11,&fontWeight:&'bold'&},
&&subtitle:&{&fontSize:&10&},
});可扩展性使用React Native无需编写一行原生代码即可创建出一款优秀的应用程序,并且React Native可通过自定义原生视图和模块来进行扩展--也就是说你可以重用此前的任何内容,可导入和使用你最喜欢的原生库。关于React Native的更多详细内容,请参阅以下资源:GitHub主页:文档支持页面:Nuclide介绍:Facebook开源项目展示:
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
点击量9276点击量8032点击量7203点击量7091点击量7038点击量6922点击量6480点击量5903点击量5877
关注微信 每日推荐
扫一扫 浏览移动版
&2015 Chukong Technologies,Inc.
京公网安备89调试 React Native 应用程序
想要调试你的 react 应用程序的 javascript 代码,方法如下:
在 iOS 模拟器中运行你的应用程序。
按下 command + D,且网页应该打开
/debugger–ui。(只有 Chrome 能打开)。
为了得到更好的调试经验,启动 。
按下 Command + Option + I 打开 Chrome 开发工具,或通过 View -&Developer -& Developer Tools 打开它。
现在你应该可以正常调试。
为了实现在真实设备上调试:打开文件 RCTWebSocketExecutor.m,改变 localhost 为你的计算机的 IP 地址。使装置打开带有开始调试选项的开发菜单。
为 Google Chrome 安装 扩展。当开发工具是公开的,如果你选择 React,这将允许你浏览视图层。
Live Reload
为了激活 Live Reload,执行以下操作:
在 iOS 模拟器中运行你的应用程序。
按 Control + Command + Z。
现在你可以看到 Enable/Disable Live Reload,Reload 和 Enable/Disable Debugging 选项。收藏,2.9k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
对于开发hybird app首选哪个好?是ionic还是react native?
如何评价ionic和react native?
说说你比较喜欢哪个?以及喜欢它的原因是什么?可以从学习成本,流行趋势或者原生支持等方面来讨论
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月8日 回答
我看好React系,React系以正确地姿势,专注地做了正确的事情,未来前途光明,这里不多吹
我是Angular黑,Google是一家Java公司,Angular出生的姿势就是非常有问题的(让Java开发也能快速开发前端),Angular很好的达成了他的目的,让前端开发看上去像后端一样,但问题是前端开发终究是前端开发,不学前端开发永远做不好前端开发。后端开发不学前端开发,翻翻angular确实能做一些原来前端才能做的事,但真的维护起来,调起性能起来,结果就是直接傻眼。 而真正的前端开发则要花大力气了解angular的为了后端开发舒服而搞的大量复杂机制,才能“正确地用angular开发”。 angular新版直接打脸基本印证我的说法,他们意识到自己的姿势有问题,所以开始痛苦地转型,至于效果如何,我还没研究过新版的angular,但个人持悲观态度。
至于Ionic vs React-Native,我觉得抛开我对angular的成见不提也完全不用比,相差不多开发成本下,一个做出来是Hybrid,另一个做出来是Native。 抛开开发成本不看的时候,Native比Hybrid好应该是毋庸置疑的吧。
另外和我刚刚的分析类似,你要把这些框架放到他爹的情况里去考虑,Facebook是移动端大力做HTML5做Hybrid,结果性能实在不行然后app端宣布转投Native的,后来React是他们做网站的时候开源出来的,React火了以后他们做了React-Native。Facebook肯定研究过Ionic,他们是最早最大规模的H5和hybrid app的实践者,那么至少Facebook是认为Ionic以及h5 hybrid本身无法满足他们的需求,才会有后面的React-Native的。如果React-Native的开发成本和Ionic类似(其实我觉得react应该还低),真的没有任何用Ionic的理由
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月7日 回答
会考虑hybird app的只要原因是,hybird app可以跨平台。react native现在只能开发iOS应用,Ionic是基于Cordova + AngularJS,跨平台不是问题(目前对WP支持不好)。
用过Ionic开发过几个应用,Ionic用的还是Web的逻辑,总的来说学习成本很低。
用React(Web)开发过应用,看了看React Native,作为一个Web开发者,模板和数据分离是比较能接受的,但是React将模板和数据相结合了。。
总结: 个人比较喜欢Ionic,React Native没有想象中的那么好
无耻地丢几个Github:
Ionic应用:
React Web:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月27日 回答
我写的和,对于两者不做评价。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月7日 回答
用过ionic开发,感觉用了1天的时间,现学现做,就做成了,时间成本低,学习曲线也低。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月23日 回答
虽然angular多了很多java思维,但我觉得这些思维可以开阔前端思维,是好事,而且用起来也很易懂。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月27日 回答
之前问一个大神同样问题的时候,他告诉我说这两者的关系就像是bootstrap和jquery的关系一样。
我理解的是,reactjs是给了前端开发人员一个使用js开发原生应用的机会,提供了一套各个平台通用的语法结构api等等,使前端开发人员可以使用现有的知识进行移动平台APP的开发,是使用相同的知识进行 不同平台的开发,也就是你要为ios和android同时写两套代码,只不过是用的相同的语法结构啥的,可以共用同一批开发人员开发维护(并没有使用研究过reactjs,所以可能不准确哈~);
而ionic是一套基于angularjs的前端框架,提供了一套通用的组件,同时可以通过cordova插件来调用手机原生特性,可以真正的Develop once, deploy everywhere。
而且reactjs要到10月份才能支持android,现在学习了做知识储备还行,如果现在就想要实际应用建议还是选择ionic比较好(纯属个人意见哈~~~)。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
7月31日 回答
ionic我就不吐槽了,到如今压根没有一个亮瞎人眼的app,在安卓上卡到爆,那动画效果,看了,简直就是感动的要哭。
React-native个人觉得思路是对的,但是目前有很多限制,首先就是性能问题,内存复用和稳定性问题。Listview的性能问题不解决,rn就难以上大舞台,因为一般来说,无限的列表对于一个app来说是很容易遇到的问题。在rn中,对listView的处理很奇葩,是用一个scrollview来包装,所以你懂得,所有的列表都会被渲染,当你的列表有五百条时,哈哈,你的手机扛得住么?这个与ios原生的tableView有区别,ios的tableView是屏幕显示5行,内存里就7行,所以无论列表如何变动,内存就那么点。rn社区刚开始也尝试过做一个tableView的component,但是失败了,所以,此事无疾而终。而我曾经尝试过从js角度来优化listView,也就是没有在屏幕显示区域内的row都设置为空,但是保持高度,数据没有,尤其是把image清了,然后根据滑动来动态渲染,可惜,pc上跑还ok,一旦在iphone6上跑,滑太快了就跟不上节奏了。iphone6都这样,其他就不用说了。
稳定性上,问题很大,因为如果真的使用rn去做一个production级别的产品,需要依赖很多第三方的库,但是第三方的库,稳定性不行,因为rn才刚刚起步,并没有很多很好地开发者去贡献库,所以,会出现各种问题。
但是总体表现来说,rn比ionic要好很多,虽然目前也有很多坑,但是,这才刚刚起步,所以,看看facebook如何填坑吧。
关于上面所说的性能问题,可以查看noder(),你跑一跑就知道listView是有多吃内存。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
8月3日 回答
好吧,其实我以前用过phonegap做过 混合app应用,现在还是比较看好 react native 毕竟是以react.js为基础!
该答案已被忽略,原因:答非所问,不符合答题要求
同步到新浪微博
分享到微博?
与我们一起探索更多的未知
专业的开发者技术社区,为用户提供多样化的线上知识交流,丰富的线下活动及给力的工作机会
加入只需一步
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
不友善内容
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:
扫扫下载 App
SegmentFault
一起探索更多未知}

我要回帖

更多关于 facebook native 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信