引言

由于现在做的react-native项目没有使用到redux等框架,写了一段时间想深入学习react,有个想法想做个demo练手下,那时候其实还没想好要做哪一个类型的,也看了些动漫的,小说阅读,聚合资源的开源项目。但是由于正好在学习开源的Android小说阅读器--任阅,加上api比较全,开始边学边做,项目地址在这里,如果有好的意见欢迎提issue或pr。

效果图

目录结构

├─actions #redux的action,业务逻辑

├─components #页面容器

│ └─common #公共目录

│ ├─component-module #封装的组件

│ ├─images #项目图片

│ │ └─icon

│ └─style #组件样式

├─modules #公用模块

│ ├─api #管理api请求类

│ └─constants #公共字段类

├─reducers #redux中的reducers,处理action发送的数据流

├─router #路由管理模块

├─store #redux中的store,联结reducers

└─template #存放html模版

项目的初始结构和说明已罗列如上。

下面对目录结构作以下说明

  • 项目最初始是参考react-pxq初始化的。

  • 中间件引人日志中间件--redux-logger,异步API调用--redux-thunk等;

  • component-module和components存放的都是react组件,区别是:页面组件就放在components中,和模块组件(比如左侧菜单组件、书籍列表组件等)就放到 component-module中;

  • 页面状态等公共部分最好是独立起来,统一管理;

  • 跨域配置使用pathRewrite字段,需要注意webpack-dev-server的版本

准备工作

  • 整体上分两个部分:

    1.整理API

    2.学习redux(搭建脚手架)

API数据

  • 数据来源主要是两个地方:一个是开源的Android项目与RN版本的数据,另一个是追书神器h5移动端
  • 数据跨域:网上查了不少方法,考虑到便捷,使用反向代理的方式处理

学习Redux

前面8章主要是熟悉接下来会用到的基础概念,当然每一章讲玩理论,后面都会动手实践敲代码,由浅入深。

9,10两章开始使用上面学到的内容,进行搭建一个简单的项目;基本上每一天看个1-2章,玩的也很开心,花费了一个星期多。

这部分内容是后面在搭建环境的时候看的,对于reducers,action,store的内容比较深入,加深理解。大概花了3天。

技术栈

  • 虽然列了众多核心库,但是自己也谈不上熟练运用,所以罗列了一些遇到的问题和后期改进的东西。

Webpack(1.x)

  • 本项目主要用了第三方的脚手架,学习了反向代理部分,当然自己也搭建过webpack,后续会升级webpack。

  • 这里提下反向代理部分,关于使用webpack-dev-server进行配置反向代理的时候,如果使用pathRewrite到属性需要注意webpack-dev-server版本,这个属性是在1.15.0中,不然是不起作用的。网上查到相同问题没有这个解释这里讲下,以免浪费时间。

Redux

  • 简单的讲他是一个管理单向数据流的框架,根据业务复杂度可以把控其中颗粒度。一开始学习的时候感觉反而把项目复杂化,看原理也是半懂不懂,后面不断实践理解前面看的内容,总归理论要与实践结合起来。

    模型如下:简单的数据流向可以看作View -> Action -> (Middleware) -> Reducer

React-router(2.x)

react-router(2.x)与react-router(4.x)的还是不同的,当然主要是写法上,所以没更新到4.0

另外, 发布打包时使用nginx等应用服务器托管的时候需要配置下,所用路由走index.html文件,不然路由会被拦截。

Antd(2.13)

  • antd是(蚂蚁金服体验技术部)经过大量的项目实践和总结,沉淀出的一个中台设计语言 Ant Design,使用者包括蚂蚁金服、阿里巴巴、口碑、美团、滴滴等一系列知名公司,其中包括了移动端,Web端,Pro(最近刚出)

  • 遇到错误可以翻看Antd的issues,基本能解决。

  • 提Issues的话要符合一定规范,一开始感觉麻烦,后来看了提问的智慧,恍然大悟这部分的必要性。

扩展内容

功能扩展

  • 讨论区数据统计分析,主要想知道一段时间的热点内容。

测试及优化

  • 现在项目代码是没有进行单元测试,后续学习集成JEST测试
  • 优化部分页面的组件以及一些bugs

React+Redux实现追书神器网页版的更多相关文章

  1. 追书神器API

    由于自己喜欢看小说,有的时候不方便手机看的时候希望在电脑上面看,但很多网站有广告啊,于是封装了套手机版的追书神器API 目前只做了搜索 详情 书评 换源 正文 调用方式: //搜索小说 var sea ...

  2. 基于vue-cli3和追书神器制作的移动端小说阅读网站,附接口和源码

    项目简介 基于node express+mysql+vue-cli3和追书神器接口制作的移动端小说阅读网站,**仅供参考学习!不用于任何商业用途!** 闲暇时间用vue练练手,就想写个小说网站来看看, ...

  3. vue仿追书神器,vue小说项目源码

    vue-reader 一点阅读器!API源自追书神器,免费使用!目前已初步开发完成! Github项目地址:https://github.com/AntonySufer/vue-readle 欢迎is ...

  4. vue 追书神器

    app.vue页面 初始化数据,通过调用vuex mutation里定义的方法 调用保存到localstorage中的书架信息.搜索历史记录.字体大小和皮肤 并把这些数据保存的vuex state中 ...

  5. Vue小说阅读器(仿追书神器)

    一个vue阅读器项目,目前已升级到2.0,阅读器支持横向分页并滑动翻页(没有动画,需要动画的可以自己设置,增加transitionDuration即可) 技术栈 vue全家桶+mint-ui gith ...

  6. 点石成金:访客至上的网页设计秘笈(原书第2版) 中文PDF版

    可用性设计是Web设计中最重要也是难度最大的一项任务.本书作者根据多年从业的经验,剖析用户的心理,在用户使用的模式.为扫描进行设计.导航设计.主页布局.可用性测试等方面提出了许多独特的观点,并给出了大 ...

  7. 基于React.js网页版弹窗|react pc端自定义对话框组件RLayer

    基于React.js实现PC桌面端自定义弹窗组件RLayer. 前几天有分享一个Vue网页版弹框组件,今天分享一个最新开发的React PC桌面端自定义对话框组件. RLayer 一款基于react. ...

  8. react+redux教程(四)undo、devtools、router

    上节课,我们介绍了一些es6的新语法:react+redux教程(三)reduce().filter().map().some().every()....展开属性 今天我们通过解读redux-undo ...

  9. 【原】react+redux实战

    摘要:因为最近搞懂了redux的异步操作,所以觉得可以用react+redux来做一个小小的项目了,以此来加深一下印象.切记,是小小的项目,所以项目肯定是比较简单的啦,哈哈. 项目效果图如图所示:(因 ...

随机推荐

  1. HTML之头部标签

    <header> head 元素元素包含了所有的头部标签元素 可以添加在头部区域的元素标签为: title,style,meta,link,script,noscript,base < ...

  2. 【转】 bio 与块设备驱动

    原文地址: bio 与块设备驱动      系统中能够随机访问固定大小数据片(chunk)的设备被称作块设备,这些数据片就称作块.块设备文件都是以安装文件系统的方式使用,此也是块设备通常的访问方式.块 ...

  3. (转)[疯狂Java]NIO:Channel的map映射

    原文出自:http://blog.csdn.net/lirx_tech/article/details/51396268 1. 通道映射技术: 1) 其实就是一种快速读写技术,它将通道所连接的数据节点 ...

  4. opencv之从视频帧中截取图片

    最近在训练一个人脸识别的模型,而项目训练需要大量真实人脸图片样本. 刚好项目用到opencv识别人脸,可以把每一帧图片保存下来,用此方法可以方便的获取大量的脸部样本,大约20分钟可以获取到10000张 ...

  5. Android 自定义View实现QQ运动积分抽奖转盘

    因为偶尔关注QQ运动, 看到QQ运动的积分抽奖界面比较有意思,所以就尝试用自定义View实现了下,原本想通过开发者选项查看下界面的一些信息,后来发现积分抽奖界面是在WebView中展示的,应该是在H5 ...

  6. Vue 国际化 vue-i18n 用法详解

    vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm insta ...

  7. Acitiviti笔记(一)

    一.核心组件 ProcessEngine:流程引擎的抽象,对于开发者来说,它是我们使用Activiti的facade,通过它可以获得我们需要的一切服务.类似于一个容器工厂,来保存创建的ProcessE ...

  8. LeetCode 561. Array Partition I (数组分隔之一)

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...

  9. LeetCode 437. Path Sum III (路径之和之三)

    You are given a binary tree in which each node contains an integer value. Find the number of paths t ...

  10. 一个简单的makefile文件编写

    下午闲来无聊,就打开很久没动过的linux系统想熟悉熟悉在linux上面编译代码,结果一个makefile文件搞到晚上才搞定,哈哈! 先把代码简单贴上来,就写了一个冒泡排序: sort.h: #ifn ...