基于ReactNative实现的博客园手机客户端

 

去年九月,facebook发布了react-native,将web端的javaScript和react技术扩展到了IOS和Android的原生应用开发。用一句大白话来说,就是利用相同的核心代码,就可以搞出androidapp,iosapp,以及后台应用程序。同时,得益于它的热更新能力,软件更新不再需要用户下载新的安装包,就像传统的web网页一样,服务器有修改,终端可即时接触到最新内容。多端技术统一,热更新,原生的体验,真正拥有了这些,才发现当前普遍的移动端开发有多么蛋疼。就像桌面时代的cs结构程序开发很大程度上已经被bs结构所取代一样,移动端的这一进程,会进行的更快。

出于学习及实践的目的,这次用react-native构建了一个博客园的手机客户端,因为没有ios的开发环境(穷),所以当前仅仅支持安卓平台(>=android 4.1.6),但适配ios的话,预估至多也就20%的工作量。

实现功能

  • 首页 & 排行 & 新闻等列表查看
  • 博文详情 & 新闻详情查看
  • 热门博主查看及博主检索
  • 博主详情及博主博文列表
  • 博文评论 & 新闻评论查看
  • 博主及新闻离线收藏及查看
  • 设置 & 关于
  • CodePush代码热更新

由于博客园官方开放接口所限,而我又不倾向于通过非正规手段实现目的,以下列举一些很重要但并未实现的功能:

  • 用户登录
  • 发表评论
  • 博文发表
  • 博文分类别查看
  • 评论消息通知等。

页面截图

下载入口

可扫码直接下载体验:

或访问以下链接下载:
http://fir.im/togayther

存在的问题

  • 详情页面HTML解析组件仍然存在一些性能和细节问题,对于一些长博客的渲染会耗费比较长的时间。
  • 博主详情、博文详情等接口会出现偶尔不会返回数据的问题。
  • 接口返回的数据格式为xml,对于前端的解析不够友好。我个人搭建了一个php的中间层。所以客户端请求的接口地址为:123.56.135.166。
  • 当前app引用的图标为自己创作,因为找了很久也没有找到博客园相关的app图标资源。不知道这样会不会有什么问题。
  • 站内链接应用内跳转查看(官方博文详情接口调用需要传入博文id,但很多博文都自定义了链接,这个还需要再斟酌一下)。
  • 一些性能问题。
  • IOS适配的问题,看接下来我的时间安排吧。
  • 其它一些交互及功能完善。

源码地址

https://github.com/togayther/react-native-cnblogs
有任何问题,可在博文下方留言,或提交issue。

一点后话

在可预知的未来,构建移动端产品的工具及生产力,一定会伴随着科学技术的发展,变得越来越简单和统一。你很难想像时代的进步造福了全人类,但IT从业人员却仍然苦逼的为了兼容各大平台而感觉身体被掏空。就像现在很多原生开发人员开始抱怨工作没有前几年那么好找,其实一定程度上,缘于很多公司的技术选型发生了变化,更加倾向于以一种轻便统一的方式构建业务应用,react-native 当前在业内的热度也印证了这一点。作为技术人员,应该时刻关注行业动态,扩展视野,更新自己的技术栈,才能保证自己的竞争力。在这里祝各位园友工作顺利,也祝博客园紧跟移动互联网浪潮,越来越好!

 
分类: 软件开发

ReactNative的更多相关文章

  1. ReactNative入门 —— 动画篇(上)

    在不使用任何RN动画相关API的时候,我们会想到一种非常粗暴的方式来实现我们希望的动画效果——通过修改state来不断得改变视图上的样式. 我们来个简单的示例: var AwesomeProject ...

  2. ReactNative入门(安卓)——API(下)

    LayoutAnimation - layout动画 当布局发生改变时的动画模块,它有两个方法: 1. 最常用的方法是 LayoutAnimation.configureNext(conf<Ob ...

  3. ReactNative入门(安卓)——API(上)

    Alert - 弹窗 通过 Alert.alert() 方法调用唤起原生弹窗,点击会触发 onPress 回调(参考下方代码)并清除弹窗. import React, { AppRegistry, C ...

  4. React-Native 组件开发方法

    前言 React Native的开发思路是通过组合各种组件来组织整个App,在大部分情况下通过组合View.Image等几个基础的组件,可以非常方便的实现各种复杂的跨平台组件,不过在需要原生功能支持. ...

  5. React-Native 渲染实现分析

    前言 React Native与传统的HybirdApp最大区别就是抛开WebView,使用JSC+原生组件的方式进行渲染,那么整个App启动/渲染流程又是怎样的呢? React Native启动流程 ...

  6. React-Native 动画优化

    前言 动画对于客户端来说是非常重要的一部分,直接影响到应用的用户体验.前端对于动画优化通常使用CSS3样式来实现动画,以利用GPU加速特性.而React-Native由于渲染模式的不同,无法使用CSS ...

  7. React-Native学习系列(一)

    近段时间一直在忙,所以博客也没有更新,这两天我翻了一下写的这几篇博客,感觉写的都很片面,所以,我想重新写一个系列教程,从最基础的开始,来让大家更容易学会React-Native. 这个系列大部分只介绍 ...

  8. react-native ListView使用详解

    刚好今天七夕,呆萌的程序猿没有妹纸,刚好发小明天结婚,我还在异地,晚上还要苦逼的赶火车.趁着下午比较闲,更新一下Blog,也算是在百无聊赖之时给众多单身程序猿们的小福利吧,虽然已经好久没更了...囧 ...

  9. react-native的tabbar和navigator混合使用

    前段时间搭建项目使用了navigator和react-native-tab-navigator,现在我教大家搭建一个通用的简单框架. 先把几张图贴在这里,这就是我们今天要搭建的东西,别看页面简单,但是 ...

  10. react-native 简单的导航

    默默潜水了两年了,一直都在看大神们写的博客,现在我也分享一下跟RN导航有关的东西. 前两年我主要是做iOS开发的,现在刚找了份工作,应公司要求,现在开始学习reactnative的东西,由于我以前没怎 ...

随机推荐

  1. [原]用C#模拟实现扑克牌发牌、排序程序。

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

  2. 蘑菇街2015校招技术类笔试题A卷,回忆版(杭州站)

    笔试时间:10月9号 下午 1.一串数据的最大递增序列,输出个数 例如 4,2, 6,3, 1,5, 最大递增序列为, 2,3, 5,输出3, 2.求两个整型数据集合的交集,尽可能少用时间. 假设两个 ...

  3. 八、桥接模式--结构模式(Structural Pattern)

    桥梁模式:将抽象化(Abstraction)与实现化 (Implementation)脱耦,使得二者可以独立地变化. 桥梁模式类图: 抽象化(Abstraction)角色:抽象化给出的定义,并保存 一 ...

  4. Socket 编程示例(二)

    利用晚上这点闲暇时间,写了一个Socket通信的小实例,该实例包含服务器端和客户端.其基本工作流程是:当服务器启动服务以后,客户端进行连接,如果连接成功,则用户可以在发送消息框中输入待发送的消息,然后 ...

  5. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  6. 【Razor语法规则小手册....】

    在经过长达半年的Windows开发后,Razor的一些语法有些生疏了.搜集些,再熟悉下.呵呵,甚是怀念以前做web 项目的时候,基于动软代码生成器自定义T4模板,后来vs2010后开始支持T4模板. ...

  7. UESTC_我要长高 CDOJ 594

    韩父有N个儿子,分别是韩一,韩二…韩N.由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万.舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火 ...

  8. LeeCode-Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  9. 把程序嵌入网页之ATL编写ActiveX[标准窗口+接受参数]

    从VS2010开始ATL ActiveX支持IObjectSafety接口,所以用VS2010来编写,新建一个ATL项目 向导的第一页没什么东西,直接下一步,选项可以根据具体需求调整 点“完成”,切换 ...

  10. 让magento的validate验证hidden field

    Object.extend(Validation, { isVisible : function(elm) { return true; }, insertAdvice : function(elm, ...