工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的。

总的来说,我这个工程十分便捷,对于初学者来说,可能包含到以下的一些知识点:

一、React-Router的使用

Router是为了方便管理组件的路径,它使用比较简单,一般定义如下就行,需要注意的是,react-router的版本有1.0-3.0,各个版本对应的API大致相似,但也有不同,我使用的是2.X的,API文档如下:

https://github.com/ReactTraining/react-router/blob/v2.8.1/docs/API.md

二、Redux和React-Redux的使用

我最初学的时候,看了网上很多Redux教程,简直是乱七八糟。为什么?不是那些人太傻比了(但也有一定的原因),而是Redux的版本发展史真的比较长。加上后来出来的React-Redux,所以各种各样的教程都有。

我这里使用的是Redux 3.5和React-Redux 4.4。这个就不放API文档了,我觉得我的demo里面写的非常清晰了。

下面以最简单的“人话”来说明下Redux的核心工作原理。

使用Redux的原因很简单,为了统一管理state。比如我的demo里的app夜间模式,可能这个参数多个component中都需要用到,所以类似这种我们必须弄成全局的。

而众所周知,React是一个通过state来render界面的框架,这就遇到一个问题,比如我要设置夜间模式,我修改普通的全局参数,并不能在修改后触发重新render,所以我们需要引入一个全局state。而Redux就是这样一个可以管理全局state的框架。

它的组成分为:

(1)store:存储全局state的对象

(2)action: 计算新state的函数(如点击开启夜间模式,darkMode参数变为true),并交给reducer

(3)reducer:根据action拿来的新参数,生成新的全局state

你肯定会说,真他妈简单。简单那就对了。网上乱七八糟的东西太多,希望我这几句话就让你明白其中的道理。

那具体如何使用Redux?

看demo就知道了,这里需要注意几点:

(1)在某个component内使用connet函数获取全局state和action中的部分,各取所需

(2)使用redux-thunk,可以进行action的同步/异步操作,因为我demo中默认使用thunk,反正异步是经常会出现的,比如我们更新用户信息,可能请求服务器需要几秒后新的用户信息才会返回,所以这个action的dispatch需要几秒后异步去触发,而默认是不支持的。

(3)存储并在app启动时初始化,我的demo中的设置夜间模式,关闭网页重新打开依旧会维持,就是我在action触发的时候做了缓存,初始化store的时候,又先从缓存取再根据这些内容,初始化store的结果。

三、antDesign的使用

demo中演示了antDesign和antDesign-mobile的两种加载(需要修改.babel)。antDesign是一款自定义component库,类似的还有amazeui,materialUI等等。antDesign-mobile就不说了,懒得评价了,那高清模式的兼容性,就像读书的时候交课堂作业一样。蚂蚁金服作为大厂,我觉得这样唐突的去发布这么一个东西实在是不合适。

antDesign相对来说成熟一点,在使用上可能需要配置一些babel等东西,这些东西,配熟练了,也就懂了。

四、webpack-dev-server和webpack的配置

webpack配置,总的来说有几块:

(1)webpack-dev-server是我推荐的一个热更新的调试组件,可以根据配置好的webpack来直接hot reload,不需要额外配其他参数。

(2)css-loadder:cssloader主要为了支持一些自定义的css写法:比如postcss,less等,demo中使用postcss去书写css,相对来说这种树形结构的css是我比较喜欢的。

(3)babel:babel是为了支持不同版本的JS语言,转换成浏览器能运行的JS。因为前端JS的版本太过零零碎碎,有时候为了支持一个小的功能,就给babel加一个小插件,以至于babel有各种乱七八糟的插件。但这种碎片化,也是JS这们开源语言能够热门、发展起来的原因。

demo地址:https://github.com/rayshen/reactjs-universal-project

ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例的更多相关文章

  1. 用react + redux + router写一个todo

    概述 最近学习redux,打算用redux + router写了一个todo.记录下来,供以后开发时参考,相信对其他人也有用. 注意: 我只实现了Footer组件的router,其它组件的实现方法是类 ...

  2. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  3. 使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用

    先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话,先安装 npm ...

  4. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

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

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

  6. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  7. React+Redux开发实战项目【美团App】,没你想的那么难

    README.md 前言 开始学习React的时候,在网上找了一些文章,读了官网的一些文档,后来觉得React上手还是蛮简单的, 然后就在网上找了一个React实战的练手项目,个人学完之后觉得这个项目 ...

  8. webpack+react+redux+es6开发模式---续

    一.前言 之前介绍了webpack+react+redux+es6开发模式 ,这个项目对于一个独立的功能节点来说是没有问题的.假如伴随着源源不断的需求,前段项目会涌现出更多的功能节点,需要独立部署运行 ...

  9. React+Redux学习笔记:React+Redux简易开发步骤

    前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...

随机推荐

  1. win7如何安装mircosoft SDKs

    WIN7不能安装SDK 7.1是因为系统程序里含Microsoft .NET Framework 4 Extended和Microsoft .NET Framework 4 Client Profil ...

  2. Canvas文本绘制

    文字绘制: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  3. Bootstrap入门(二十五)JS插件2:过渡效果

    Bootstrap入门(二十五)JS插件2:过渡效果 对于简单的过渡效果,只需将 transition.js 和其它 JS 文件一起引入即可.如果你使用的是编译(或压缩)版的bootstrap.js  ...

  4. 深入了解GCD

    首先提出一些问题: dispatch_async 函数如何实现,分发到主队列和全局队列有什么区别,一定会新建线程执行任务么? dispatch_sync 函数如何实现,为什么说 GCD 死锁是队列导致 ...

  5. MyBatis 源码分析——动态代理

    MyBatis框架是如何去执行SQL语句?相信不只是你们,笔者也想要知道是如何进行的.相信有上一章的引导大家都知道SqlSession接口的作用.当然默认情况下还是使用DefaultSqlSessio ...

  6. [html5] 学习笔记-服务器推送事件

    1.HTML5服务器推送事件介绍 服务器推送事件(Server-sent Events)是Html5规范的一个组成部分,可以用来从服务端实时推送数据到浏览器端. 传统的服务器推送技术----WebSo ...

  7. MongoDB基础之十 shared分片

    水平分片实例分布图: mongodb sharding 服务器架构   1. 添加mongdb两个shared实例 # mkdir -p /home/m17 //home/m18 /home/m20 ...

  8. 使用express.js框架一步步实现基本应用以及构建可扩展的web应用

    最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了express.js的web框架. 框架的作用就是提高开发效率,快速产出结果.即使不使用框架,我们也会在开发过程中逐渐形成构成框架. ...

  9. C++学习的心路历程之心理障碍

    断断续续的C++学习已经过了1年多了,可是,我还是没有迈出可以自如输出写点什么的那一步.甚至我因为这个老是怀疑自己的智商,我是真心想学懂,因为这个关系到我的就业,直接关系到我的饭碗.我是十分的着急,可 ...

  10. SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)

    前言 接下来我们将SQL Server基础系列还剩下最后几节内容结束,后续再来讲解SQL Server性能调优,我们开始进入主题. SQL Server事务对本地变量影响 事务对变量影响具体是指什么意 ...