本来写了挺多字的了,结果电脑一休眠,就没保存,以后要挣钱买个MBP。
从7月底到现在,断断续续学了一段时间的react,做个阶段性的笔记方便回顾,以后回来炒冷饭。
7月底是领导给的一个任务,要把公司现有的系统都做前后端分离,从react和vue中选一个合适的框架,重构现有的前端代码,需要从头搭建一个开发的脚手架项目,之前完全没有接触过前端的东西,而这些年前端的百花齐放,加大了这次任务的难度,但是没什么办法,干就是了。
公司现有的项目都是一体化的,后端独立一个web项目,放JSP和JS,以及一些静态的HTML和CSS文件,历史久远,在改成HTML5的过程中,发现太多问题,跨域,JS引入,要完全改成H5,工作量大且维护性不好,所以反正要重写,不如找个新的JS框架来重写现有的系统。
主要困难有:
能供选择的主要有3个框架,angular、react和vue,angular由于公司资源的问题,不在考虑范围内,最终选择了react作为重构的框架选择,主要考虑以下几点:
弊端也是有的,最突出的就是react的学习成本不是一般的高,我也是断断续续学了两个月才能写一些简单的页面了,智商低,没办法,还有一个比较突出的问题,就是react的更新太大,很容易跟不上,以前的一些语法有可能直接被抛弃,这点也是不太好的。
编程的世界里没有银弹,只有慢慢演进,所以就这么写起来。
这里看的是阮一峰老师的一个基础教程,不需要看完,看第一节即可
https://github.com/ruanyf/jstraining
备注:任何人说的都不一定是全对的,阮一峰老师的一些文章有的也是错的,所以仅供参考就可以,关键还是要自己思考,读书不思考,跟没读一样,阅读博客也是
node
npm
cnpm
yarn
官网教程
https://reactjs.org/
create-react-app脚手架
一些问题:
什么是组件化?为什么要组件化
怎么使用一个组件?
state和setState,props
函数作用域问题,3种写法,构造方法中bind(this),引用处bind(this),或者es箭头函数写法
组件之间传递参数和方法?
7个生命周期函数
高阶组件是怎么写的?很重要,是学习之后的框架的基础
react-route-dom,怎么做路由的定义和跳转
学完上面这些问题,基本上就可以尝试自己开发一个简单的项目了,可供参考的有:
https://blog.csdn.net/awaw00/article/category/6692955
同样参考官网教程
https://github.com/reduxjs/redux
一些问题:
什么是redux,解决了什么问题?什么是状态容器,可不可以不使用redux,有没有其他替代方案
action和reducer的定义方法,dispatch
react-redux怎么使用,Provider顶级组件,connect()高阶函数
怎么组合reducer,combindReducers
mapStateToProps和mapDispatchToProps
redux中间件,比如日志redux-logger和redux-thunk(有时间了解),和redux-saga
同理继续参考官网
https://ant.design/index-cn
一些问题:
从布局入手,必须会栅格系统
尝试在create-react-app搭建的脚手架项目中实现一些基本的UI组件,比如卡片,按钮,弹窗,表单,登录页,注册页,表格等
尝试去思考如何定制主题颜色等高级配置
如何在此基础上封装一个更高级的组件配置,比如分页,表格,不需要每个页面都去维护一个同样类型的表格
参考官网
分1.0和2.0版本,变动较大
https://dvajs.com/
dva的封装就更高层了,引入了生成器,把异步调用变成了同步调用(形式上)
一些问题:
我可以不用DVA吗?
router怎么定义和使用?
model,service,component,开发顺序?
effect,subscription,reducer都是什么意思,我应该把什么样的功能写入到其中哪个?
怎么封装自己的axios,而不使用fetch
页面怎么dispatch一个action?子页面呢?
一些复杂的SPA怎么开发?
暂时就写这么多,继续写代码了,比较细的demo和笔记都放在
https://github.com/copywang/learnReact