本人用潮潮的(!?XD)react-native写的一支
很简单的小app - Taiwan Animal Adoption (TAA)。
已在Google Play与Windows Store上架:
Google Play:
https://play.google.com/store/apps/details?id=com.taa
Windows Store:
https://www.microsoft.com/en-us/store/p/taiwan-animal-adoption/9ph0cq23zks5
在此分享app原始码给有需要的人:
https://github.com/MrMYHuang/taa
这支app或许不大,但五脏俱全,用上几个满fashion的技术XD:
react, react-redux, react-native (inc. NativeModule),
react-native-windows, CodePush。
应该满适合初学者拿来作学习。
再来就是个人对于几个技术的一些小感想。
我觉得目前要拿react-native来做东西的人,不要抱太大期望说
"写一次,各平台都可以跑"。这不是不能,但能满足这种条件的apps,
目前应该"做不大"。因为各平台的差异,造成react-native的不少APIs也是
platform-specific。可能一个component有一部分要考量平台差异,
那部分的code写起来就会有点丑囧
不过这也不太算react-native独有的问题,其它如Xamarin也是差不多。
个人用native语言写过app,所以较能感受这些跨平台架构的app是有些受限的,
个人开发的话大概较适合写小apps吧。
即便有些跨平台问题只是时间问题,时间到就能解决...
但现阶段还是要仔细评估react-native现在能给你什么、你能做什么。
不然没给你的,你可能就要自己刻出来。若要找别人刻出来的也要注意,
可能react-native一改版就不相容了。
还有要知道react-native的runtime是JS,不是NodeJS,
所以很抱歉就算NodeJS libraries学得很棒,但在react-native不一定能用囧
我觉得写这种跨平台app的最大成就感是写出一个平台后,
另一个平台如果只要改个几行就做出来是很有快感的。
react-redux的使用时机个人本来也不太懂,
但忽然想起之前写的app也是用相同概念就通了。
redux把binding data统一放在一个store。
好处是较不会有同一笔资料被copy到多个views,
然后要处理多个copies的同步问题,虽然redux好处不止如此而已...
redux的store (data), action + reducer (logic)
相当于MVVM的model(data + logic),
而react则相当于binder, view model与view。
有些概念初学时不好懂,一旦写code发现有此需求后就容易了解。
CodePush的话,好处就是能即时推送JS code给使用者,减少app改版上架的审查时间。
不过Android app第一次上架之后的上架审查超快,感觉速度跟CodePush没两样了XD