ReactNativeOne

React-Native 的「ONE·一个」
授权协议 GPL
开发语言 JavaScript
所属分类 手机/移动开发、 React 开源项目
软件类型 开源软件
地区 国产
投 递 者 龙繁
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

「ONE·一个」是由韩寒监制,原《独唱团》主创成员共同制作的一款文艺生活APP

支持设备: Android 4.1+ and iOS 8.0+

声明

该APP所用到的API均由 「ONE · 一个」提供,本人采取非正常手段获取。获取跟共享的行为或许有侵犯权益的嫌疑。请您了解相关情况,并保证不侵犯「ONE · 一个」的利益,并遵守开源协议

项目描述

  1. 基于React-Native框架开发,能同时运行在Android、iOS环境下,实现80%的代码复用,GitHub地址:https://github.com/lipeiwei-szu/ReactNativeOne

  2. 到目前为止,该项目均由本人独立完成,希望能有更多的小伙伴来一起完善这个项目。实现了「ONE·一个」绝大部分的功能点,涵盖了图文、阅读、音乐、电影四大版块,以下是功能列表

    • 使用ViewPager跟ListView展示图文列表、查看往期历史图文信息、点击查看大图

    • 三种系列(短篇、连载、问答)的文章阅读以及文章音频播放,查看往期文章列表

    • 音乐故事展示、音乐播放、查看历史音乐列表

    • 最近电影信息列表、查看电影详情页面、电影预告片播放、查看剧照列表

    • 查看文章、音乐、电影的评论列表,自定义扩展ListView,实现上拉加载更多数据

    • 微信好友分享、微信朋友圈分享

    • 缓存api接口数据,充分节省流量,增强用户体验

接口文档

请到ONE-API查看

APP截图

picture_detail picture_list reading_container  article_list1     music_list movie_list     

整体思路

  1. 分析「ONE·一个」App的业务逻辑结构,将整体业务按重要程度进行划分,安排整体开发流程

  2. 在Mac环境下使用Charles软件抓包,抓取「ONE·一个」的网络接口数据,并整理接口文档,文档地址是https://github.com/lipeiwei-szu/ONE-API

  3. 使用官方的Navigator管理全局路由,可自由配置Scene的出场动画,处理Android端的后退键事件

  4. 使用FlexBox和jsx语法进行布局,并封装了一系列通用的组件,比如GridView、带上下拉功能的ListView、ImageViewer等,便于全局复用

  5. 在Android原生端实现音频播放功能,并导出Native Api给React Native使用

  6. 导入Video Native Api,自定义界面并实现电影预告片的加载播放

  7. 导入GitHub第三方库react-native-wechat实现图文、阅读、音乐、电影的微信分享

  8. 处理了App加载网络数据时的各种状态,比如加载中、加载成功、加载失败、点击屏幕重新进行加载等

  9. 使用InteractionManager,保证每个页面都在转场动画结束时才进行耗时操作,使得切换页面时不卡顿,尽量减少View的层级,优化渲染性能

  10. 在深刻理解的前提下引入redux相关功能,包括redux/react-redux/redux-thunk/redux-logger,设计与音频相关的全局state结构,使用redux管理与音频state相关的组件

 相关资料
  • One 一个旗鱼版 One for SailfishOs

  • one-to-one关联类似于many-to-one关联,不同之处在于该列将被设置为唯一。 例如,地址对象可以与单个员工对象相关联。 定义RDBMS表 (Define RDBMS Tables) 考虑一种情况,我们需要将员工记录存储在EMPLOYEE表中,该表具有以下结构 - create table EMPLOYEE ( id INT NOT NULL auto_increment,

  • One

    One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。 例如: 自然状态码为:000,001,010,011,100,101 独热编码为:000001,000010,000100,001000,010000,100000 可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m

  • 我举了一个例子: 如何设置lang1.name?当我这样做时,它不起作用: 我是新来的,我不太明白

  • One OS 简介 One OS是一个专注于可靠性和简易可用的小型实时系统。它通过采取形式化方法来确保系统的可靠性。所有的实时操作系统必备的功能它都具备,但是并不在此基础上提供更多可选组件以确保内核的精炼性。这样,得到的内核就是一个最小化的内核,可以很方便地对它进行形式化验证。同时,它还可以作为客户操作系统运行在虚拟机监视器上。 本系统比一个全功能系统的相比要小得多,而且理解起来应该也相对容易得多

  • One - 一个极简的基于swoole常驻内存框架。 hello world 安装 composer create-project lizhichao/one-app appcd appphp App/swoole.php 测试 curl http://127.0.0.1:8081/ 主要功能 RESTful路由 中间件 websocket/tcp/http……任意协议路由 ORM模型 统一的se

  • One-JAR 可以解决如何把一个依赖于多个其它 jar 文件的应用程序发布成一个单一的可执行 Jar 文件。它使用一个可定制的类装载器 (classloader) 来打开在主 Jar 中的 Jar 文件包。

  •     用于简化分布式开发:统一的错误代码、可区分版本的接口配置(保留老版本接口)、文件服务可配置化切换、前后端分离、token(时效性、一次性、顺序性)、配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态。     提供有多个组合即用的模块:用户中心、权限管理、配置管理、流程管理。。。     提供的快速开发的支持:代码生成、lombok集成、前台端分