打造属于自己的博客app——基于react native和博客园接口

关注react native这个技术很久了,去年就做了一个简单的Demo,最近有时间,重新了解了一下react native的现状,发现已经有很大的进步,现在完善了一下原有的项目,并重新开源共享一下。

背景

对react native这个技术关注很久了,去年也花了很长时间学习,但中途因为时间问题没有进行更深入的学习。当时,react native还存在很多坑,使用起来不太方便。一年过去,现在重新开始关注react native,发现react native已经将原有的很多问题解决,相比当年版本,有太多的进步。现在将原有项目重构并重新发布到github。

项目简介

基于博客园的接口,开发的一个博客的app工具,包括个人博客、博客首页、博客详情,后续会逐渐完善评论、推荐、以及新闻等相关模块。

006tKfTcgy1fkl2de20oxj31kw0xrnkr.jpg

使用的主要技术和插件:

插件说明
react reduxreact state管理方案
react-navigationreact native新的页面导航方案
react-native-elements一个react native UI库
lodashJS函数库
react-native-autoheight-webviewwebview解决方案
react-native-vector-iconsreact native icon组件

项目结构

代码全部在source目录里,其他代码有react native自动生成,当然,index.js相关入口文件有调整,source中目录简单介绍一下:

目录说明
actionredux中的action
common通用的js常用函数
component自己的UI组件
config项目的配置信息,需要改成自己项目的,调整这里。
constant定义的一些常量
middlewarereact middleware log,记录state日志
reducerredux中的reducer
service网络请求,调用接口相关
style样式
view页面page

使用

最基本的react native使用方式:

git clone https://github.com/itmifen/mfreader.git  
npm install  
react-native link  
react-native run-ios

正常运行需要将config目录中的index.js文件中的accessInfo进行配置。clientId和clientSecret可以联系博客园团队获取。

//cnblogs授权信息
export const accessInfo={
    clientId:"*********",
    clientSecret:"**************"
};

首页展示自己的博客只需要修改blogname就可以了。

//app配置信息
export const appinfo={
    blogname:"joylee",
    logourl:"https://pic.cnblogs.com/face/42030/20171003230725.png",
    cnblogsApi:"https://api.cnblogs.com",
    pageSize:10
};

项目技术说明

页面导航解决方案

之前版本的react native 的页面导航没有一个很好的解决方案,最大的问题就是页面切换的卡顿,很多第三方的导航组件使用起来性能更差,还不如自己开发。现在官方推荐使用 react-navigation 组件进行开发,使用之后的确比之前性能好很多,同时还支持tab、侧边栏导航效果,是以后react native开发必须考虑的方案。

redux

redux现在是react state管理最通用的解决方案,使用非常广泛,我也不曾想到redux的学习花了我最多的时间。redux是一个state管理的解决方案,是一个单独的项目,react redux是基于react 的解决方案,而异步的react redux会更加复杂一点。对于redux的学习和使用,经历了好久才真正理解redux的整个数据流和事件流。

html展示的解决方案

展示webview一直是一个头疼的问题,虽然通过 https://js.coach 可以找到很多webview的解决方案,大部分看起来很好的解决方案是将html转成原生的jsx节点。实际使用和最终的理想还是有差距的,最后我还是选择了webview渲染html的方案。我使用的是react-native-autoheight-webview 这个组件,原始的webview组件必须设置高度,react-native-autoheight-webview可以不用设置高度,自动根据内容定义高度。

性能问题

页面切换性能

强烈建议使用react-navigation,直接使用navigation组件,总是存在卡顿的情况,android环境特别明显,使用react-navigation整个人都好了。基本不用考虑其他黑科技。

console.log日志对性能非常大的影响

如果一直觉得开发调试的时候系统卡顿明显,建议把console.log去掉试试,console.log对性能影响严重,debug模式下也会感觉比较慢,开发完成后,最好是在release环境下测试下。

列表性能问题

很多人反馈列表性能的问题,我一直用listview,暂时没有感觉到性能的问题,所有还没有换成新的组件FlatList,后期会考虑替换,相信官方的推荐和解决方案,都是比较靠谱的解决方案。

性能问题大家一定要仔细阅读 http://reactnative.cn/docs/0.49/performance.html#content 官方的性能说明,每一个都非常重要。

后期计划

因时间有限,所有在UI上不会做太多的调整,这也不是我擅长的,关于功能会进行逐步完善:

  • 增加新闻模块
  • 增加评论浏览和评论功能
  • 增加博客园首页和精华
  • 完善个人中心以及相关设置

曾经考虑过做成多个站点聚合数据的形式,但是考虑到工作量的问题,可能短时间内无法实现。

(完)


欢迎大家关注我的公众号交流、学习、第一时间获取最新的文章。
微信号:itmifen

006tNc79gy1fjqwqm6v25j30760760t7.jpg

转载于:https://www.cnblogs.com/joylee/p/reactnativecnblogs.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值